/*
 * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Distribution License v. 1.0, which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

package com.sun.xml.ws.assembler.jaxws;

import com.sun.xml.ws.api.BindingID;
import com.sun.xml.ws.api.pipe.TubelineAssembler;
import com.sun.xml.ws.api.pipe.TubelineAssemblerFactory;
import com.sun.xml.ws.resources.TubelineassemblyMessages;
import java.util.logging.Logger;

/**
 *
 * @deprecated Use {@code com.sun.xml.ws.assembler.metro.jaxws.TransportTubeFactory} provided by metro-wsit instead.
 */
@Deprecated
public final class TransportTubeFactory extends TubelineAssemblerFactory {

    private static final Logger LOG = Logger.getLogger(TransportTubeFactory.class.getName());

    private final TubelineAssemblerFactory taf;

    public TransportTubeFactory() {
        super();
            LOG.warning(TubelineassemblyMessages.MASM_0050_DEPRECATED_TUBE(TransportTubeFactory.class.getName(), "com.sun.xml.ws.assembler.metro.jaxws.TransportTubeFactory"));
        try {
            taf = (TubelineAssemblerFactory) Class.forName("com.sun.xml.ws.assembler.metro.jaxws.TransportTubeFactory").getConstructor().newInstance();
        } catch (ReflectiveOperationException | SecurityException ex) {
            LOG.fine(TubelineassemblyMessages.MASM_0014_UNABLE_TO_LOAD_CLASS("com.sun.xml.ws.assembler.metro.jaxws.TransportTubeFactory"));
            // cannot work without this
            throw new RuntimeException(ex);
        }
    }


    @Override
    public TubelineAssembler doCreate(BindingID bindingId) {
        return taf.doCreate(bindingId);
    }

}

@@ -392,25 +392,25 @@
 .ws.api.
-BindingID
+pipe.Tube
 ;%0Aimport
@@ -422,32 +422,43 @@
 sun.xml.ws.a
-pi.pipe.
+ssembler.dev.Client
 TubelineAsse
@@ -460,18 +460,24 @@
 eAssembl
-er
+yContext
 ;%0Aimport
@@ -497,33 +497,92 @@
 ws.a
-pi.pipe.TubelineAssembler
+ssembler.dev.ServerTubelineAssemblyContext;%0Aimport com.sun.xml.ws.assembler.dev.Tube
 Fact
@@ -644,16 +644,59 @@
 ssages;%0A
+import jakarta.xml.ws.WebServiceException;%0A
 import j
@@ -905,33 +905,23 @@
 ory 
-extend
+implement
 s Tube
-lineAssembler
 Fact
@@ -1040,37 +1040,24 @@
 e final Tube
-lineAssembler
 Factory taf;
@@ -1324,29 +1324,16 @@
  = (Tube
-lineAssembler
 Factory)
@@ -1787,51 +1787,241 @@
 Tube
-lineAssembler doCreate(BindingID bindingId)
+ createTube(ClientTubelineAssemblyContext context) throws WebServiceException %7B%0A        return taf.createTube(context);%0A    %7D%0A%0A    @Override%0A    public Tube createTube(ServerTubelineAssemblyContext context) throws WebServiceException
  %7B%0A 
@@ -2042,26 +2042,26 @@
 taf.
-doC
+c
 reate
-(bindingId
+Tube(context
 );%0A 

Fix the fallback factory to implement correct interface