cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: svn commit: r1086052 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/ rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/ rt/transp
Date Mon, 28 Mar 2011 08:44:26 GMT
Hi Christian

On Sun, Mar 27, 2011 at 11:00 PM, <cschneider@apache.org> wrote:

> Author: cschneider
> Date: Sun Mar 27 22:00:23 2011
> New Revision: 1086052
>
> URL: http://svn.apache.org/viewvc?rev=1086052&view=rev
> Log:
> CXF-3419 Created new HttpTransportFactory that replaces http client only,
> http jetty, http osgi and http servlet transport. Some broken jaxrs tests
> remain and the destinationRegistry is not yet correctly pulled in osgi
>
>
I'm getting nervous about your commits with messages saying "Some broken
jaxrs tests" and similar. I'm sorry but I don't think it is acceptable. I
don't want to see JAX-RS tests broken all the time. Please treat as the
critical failures.

Which tests are broken ? Why can't you fix them before merging ? When will
you fix them ?

thanks, Sergey




> Added:
>
>  cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyDestinationFactory.java
>      - copied, changed from r1085147,
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
>      - copied, changed from r1085147,
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPTransportFactory.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpDestinationFactory.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestinationFactory.java
>    cxf/trunk/rt/transports/http/src/main/resources/META-INF/spring/
>
>  cxf/trunk/rt/transports/http/src/main/resources/META-INF/spring/osgiservlet.xml
>      - copied, changed from r1085147,
> cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/spring/cxf-transport-osgi.xml
> Removed:
>
>  cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java
>
>  cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java
>
>  cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/SpringOsgiServlet.java
>
>  cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPTransportFactory.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/ClientOnlyHTTPTransportFactory.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFNonSpringServlet.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFSpringServlet.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java
>
>  cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/AbstractCXFServletTest.java
> Modified:
>
>  cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
>
>  cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
>
>  cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
>
>  cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
>
>  cxf/trunk/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
>
>  cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
>
>  cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactoryTest.java
>
>  cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistry.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistryImpl.java
>
>  cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
>
>  cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/bus-extensions.txt
>
>  cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-servlet.xml
>
>  cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletServer.java
>
> Modified:
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
> (original)
> +++
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
> Sun Mar 27 22:00:23 2011
> @@ -48,7 +48,6 @@ import javax.ws.rs.ext.MessageBodyReader
>  import javax.ws.rs.ext.MessageBodyWriter;
>
>  import org.apache.cxf.Bus;
> -import org.apache.cxf.BusException;
>  import org.apache.cxf.common.i18n.BundleUtils;
>  import org.apache.cxf.common.logging.LogUtils;
>  import org.apache.cxf.endpoint.ConduitSelector;
> @@ -70,9 +69,7 @@ import org.apache.cxf.phase.PhaseChainCa
>  import org.apache.cxf.phase.PhaseInterceptorChain;
>  import org.apache.cxf.phase.PhaseManager;
>  import org.apache.cxf.service.Service;
> -import org.apache.cxf.transport.ConduitInitiatorManager;
>  import org.apache.cxf.transport.MessageObserver;
> -import org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory;
>
>  /**
>  * Common proxy and http-centric client implementation
> @@ -540,20 +537,7 @@ public class AbstractClient implements C
>         try {
>             cfg.prepareConduitSelector(message);
>         } catch (Fault ex) {
> -            LOG.fine("Failure to prepare a message from conduit
> selector");
> -            if (ex.getCause() instanceof BusException) {
> -                String code = ((BusException)ex.getCause()).getCode();
> -                if ("NO_CONDUIT_INITIATOR".equals(code)) {
> -                    ConduitInitiatorManager cim =
> cfg.getBus().getExtension(ConduitInitiatorManager.class);
> -                    ClientOnlyHTTPTransportFactory factory = new
> ClientOnlyHTTPTransportFactory();
> -                    factory.setBus(cfg.getBus());
> -                    cim.registerConduitInitiator(
> -
>  cfg.getConduitSelector().getEndpoint().getEndpointInfo().getTransportId(),
> factory);
> -                    cfg.prepareConduitSelector(message);
> -                } else {
> -                    throw ex;
> -                }
> -            }
> +            LOG.warning("Failure to prepare a message from conduit
> selector");
>         }
>         message.getExchange().put(ConduitSelector.class,
> cfg.getConduitSelector());
>     }
>
> Modified:
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
> (original)
> +++
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
> Sun Mar 27 22:00:23 2011
> @@ -24,7 +24,6 @@ import java.util.Map;
>  import java.util.logging.Logger;
>
>  import org.apache.cxf.Bus;
> -import org.apache.cxf.BusException;
>  import org.apache.cxf.common.logging.LogUtils;
>  import org.apache.cxf.common.util.ModCountCopyOnWriteArrayList;
>  import org.apache.cxf.endpoint.ConduitSelector;
> @@ -36,9 +35,7 @@ import org.apache.cxf.message.ExchangeIm
>  import org.apache.cxf.message.Message;
>  import org.apache.cxf.message.MessageImpl;
>  import org.apache.cxf.transport.Conduit;
> -import org.apache.cxf.transport.ConduitInitiatorManager;
>  import org.apache.cxf.transport.MessageObserver;
> -import org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory;
>  import org.apache.cxf.transport.http.HTTPConduit;
>
>  /**
> @@ -83,19 +80,6 @@ public class ClientConfiguration impleme
>             getConduitSelector().prepare(message);
>         } catch (Fault ex) {
>             LOG.fine("Failure to prepare a message from conduit selector");
> -            if (ex.getCause() instanceof BusException) {
> -                String code = ((BusException)ex.getCause()).getCode();
> -                if ("NO_CONDUIT_INITIATOR".equals(code)) {
> -                    ConduitInitiatorManager cim =
> getBus().getExtension(ConduitInitiatorManager.class);
> -                    ClientOnlyHTTPTransportFactory factory = new
> ClientOnlyHTTPTransportFactory();
> -                    factory.setBus(getBus());
> -                    cim.registerConduitInitiator(
> -
>  getConduitSelector().getEndpoint().getEndpointInfo().getTransportId(),
> factory);
> -                    getConduitSelector().prepare(message);
> -                } else {
> -                    throw ex;
> -                }
> -            }
>         }
>     }
>
>
> Modified:
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
> (original)
> +++
> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
> Sun Mar 27 22:00:23 2011
> @@ -42,9 +42,9 @@ import org.apache.cxf.jaxrs.lifecycle.Si
>  import org.apache.cxf.jaxrs.utils.ResourceUtils;
>  import org.apache.cxf.message.Message;
>  import org.apache.cxf.message.MessageUtils;
> -import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
> +import org.apache.cxf.transport.servlet.CXFServlet;
>
> -public class CXFNonSpringJaxrsServlet extends CXFNonSpringServlet {
> +public class CXFNonSpringJaxrsServlet extends CXFServlet {
>
>     private static final Logger LOG =
> LogUtils.getL7dLogger(CXFNonSpringJaxrsServlet.class);
>
> @@ -62,10 +62,10 @@ public class CXFNonSpringJaxrsServlet ex
>
>     private static final String JAXRS_APPLICATION_PARAM =
> "javax.ws.rs.Application";
>
> +
>     @Override
> -    public void loadBus(ServletConfig servletConfig) throws
> ServletException {
> -        super.loadBus(servletConfig);
> -
> +    public void init(ServletConfig servletConfig) throws ServletException
> {
> +        super.init(servletConfig);
>         String applicationClass =
> servletConfig.getInitParameter(JAXRS_APPLICATION_PARAM);
>         if (applicationClass != null) {
>             createServerFromApplication(applicationClass, servletConfig);
> @@ -73,6 +73,7 @@ public class CXFNonSpringJaxrsServlet ex
>         }
>
>         JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean();
> +        bean.setBus(getBus());
>
>         String address =
> servletConfig.getInitParameter(SERVICE_ADDRESS_PARAM);
>         if (address == null) {
>
> Copied:
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyDestinationFactory.java
> (from r1085147,
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java)
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyDestinationFactory.java?p2=cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyDestinationFactory.java&p1=cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java&r1=1085147&r2=1086052&rev=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPTransportFactory.java
> (original)
> +++
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyDestinationFactory.java
> Sun Mar 27 22:00:23 2011
> @@ -20,94 +20,21 @@ package org.apache.cxf.transport.http_je
>
>  import java.io.IOException;
>
> -import java.security.GeneralSecurityException;
> -
> -import javax.annotation.PostConstruct;
> -import javax.annotation.Resource;
> -import javax.imageio.IIOException;
> -
>  import org.apache.cxf.Bus;
>  import org.apache.cxf.common.injection.NoJSR250Annotations;
>  import org.apache.cxf.service.model.EndpointInfo;
> -import org.apache.cxf.transport.Destination;
> -import org.apache.cxf.transport.DestinationFactory;
>  import org.apache.cxf.transport.http.AbstractHTTPDestination;
> -import org.apache.cxf.transport.http.AbstractHTTPTransportFactory;
> -
> -@NoJSR250Annotations(unlessNull = { "bus" })
> -public class JettyHTTPTransportFactory extends
> AbstractHTTPTransportFactory
> -    implements DestinationFactory {
> +import org.apache.cxf.transport.http.DestinationRegistry;
> +import org.apache.cxf.transport.http.HttpDestinationFactory;
>
> -    public JettyHTTPTransportFactory() {
> -        super();
> -    }
> -    public JettyHTTPTransportFactory(Bus b) {
> -        super(b);
> -    }
> -
> -    @Resource
> -    public void setBus(Bus b) {
> -        super.setBus(b);
> -    }
> -
> -    @PostConstruct
> -    public final void finalizeConfig() {
> -        if (null == bus) {
> -            return;
> -        }
> -        // This call will register the server engine factory
> -        // with the Bus.
> -        getJettyHTTPServerEngineFactory();
> -    }
> -
> -    /**
> -     * This method returns the Jetty HTTP Server Engine Factory.
> -     */
> -    protected JettyHTTPServerEngineFactory
> getJettyHTTPServerEngineFactory() {
> -        // We have got to *always* get this off the bus, because it may
> have
> -        // been overridden by Spring Configuration initially.
> -        // Spring Configuration puts it on the correct bus.
> -        JettyHTTPServerEngineFactory serverEngineFactory =
> -                getBus().getExtension(JettyHTTPServerEngineFactory.class);
> -        // If it's not there, then create it and register it.
> -        // Spring may override it later, but we need it here for default
> -        // with no spring configuration.
> -        if (serverEngineFactory == null) {
> -            serverEngineFactory = new JettyHTTPServerEngineFactory();
> -            serverEngineFactory.setBus(getBus());
> -        }
> -        return serverEngineFactory;
> -    }
> -
> -    public synchronized Destination getDestination(EndpointInfo
> endpointInfo)
> -        throws IOException {
> -
> -        String addr = endpointInfo.getAddress();
> -        AbstractHTTPDestination destination =
> registry.getDestinationForPath(addr);
> -        if (destination == null) {
> -            destination = createDestination(endpointInfo);
> -        }
> -
> -        return destination;
> -    }
> -
> -    private synchronized AbstractHTTPDestination createDestination(
> -        EndpointInfo endpointInfo
> -    ) throws IOException {
> -        JettyHTTPDestination destination =
> -            new JettyHTTPDestination(getBus(),
> -                                     registry,
> -                                     endpointInfo,
> -
> this.getJettyHTTPServerEngineFactory());
> +@NoJSR250Annotations()
> +public class JettyDestinationFactory implements HttpDestinationFactory {
>
> -        registry.addDestination(endpointInfo.getAddress(), destination);
> -        configure(destination);
> -        try {
> -            destination.finalizeConfig();
> -        } catch (GeneralSecurityException ex) {
> -            throw new IIOException("JSSE Security Exception ", ex);
> -        }
> -        return destination;
> +    public AbstractHTTPDestination createDestination(EndpointInfo
> endpointInfo, Bus bus,
> +                                                     DestinationRegistry
> registry) throws IOException {
> +        JettyHTTPServerEngineFactory serverEngineFactory = bus
> +            .getExtension(JettyHTTPServerEngineFactory.class);
> +        return new JettyHTTPDestination(bus, registry, endpointInfo,
> serverEngineFactory);
>     }
>
>  }
>
> Modified:
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
> (original)
> +++
> cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
> Sun Mar 27 22:00:23 2011
> @@ -139,13 +139,14 @@ public class JettyHTTPDestination extend
>      * after the configuration items have been set.
>      *
>      */
> -    public void finalizeConfig()
> -        throws GeneralSecurityException,
> -               IOException {
> -
> +    public void finalizeConfig() {
>         assert !configFinalized;
>
> -        retrieveEngine();
> +        try {
> +            retrieveEngine();
> +        } catch (Exception e) {
> +            throw new RuntimeException(e.getMessage(), e);
> +        }
>         configFinalized = true;
>     }
>
>
> Modified:
> cxf/trunk/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
> (original)
> +++
> cxf/trunk/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
> Sun Mar 27 22:00:23 2011
> @@ -1,3 +1,3 @@
> -org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory::true
> +org.apache.cxf.transport.http_jetty.JettyDestinationFactory::true
>  org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory::true
>
>
> Modified:
> cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
> (original)
> +++
> cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
> Sun Mar 27 22:00:23 2011
> @@ -61,6 +61,7 @@ import org.apache.cxf.transport.Destinat
>  import org.apache.cxf.transport.MessageObserver;
>  import org.apache.cxf.transport.http.AbstractHTTPDestination;
>  import org.apache.cxf.transport.http.DestinationRegistry;
> +import org.apache.cxf.transport.http.HTTPTransportFactory;
>  import org.apache.cxf.transports.http.QueryHandler;
>  import org.apache.cxf.transports.http.QueryHandlerRegistry;
>  import org.apache.cxf.transports.http.StemMatchingQueryHandler;
> @@ -110,7 +111,7 @@ public class JettyHTTPDestinationTest ex
>     private QueryHandler wsdlQueryHandler;
>     private QueryHandlerRegistry  queryHandlerRegistry;
>     private List<QueryHandler> queryHandlerList;
> -    private JettyHTTPTransportFactory transportFactory;
> +    private HTTPTransportFactory transportFactory;
>
>     /**
>      * This class replaces the engine in the Jetty Destination.
> @@ -169,8 +170,8 @@ public class JettyHTTPDestinationTest ex
>
>     @Test
>     public void testRandomPortAllocation() throws Exception {
> -        transportFactory = new JettyHTTPTransportFactory();
> -        transportFactory.setBus(new CXFBusImpl());
> +        transportFactory = new HTTPTransportFactory();
> +        transportFactory.setBus(BusFactory.getDefaultBus());
>         ServiceInfo serviceInfo = new ServiceInfo();
>         serviceInfo.setName(new QName("bla", "Service"));
>         EndpointInfo ei = new EndpointInfo(serviceInfo, "");
> @@ -221,17 +222,16 @@ public class JettyHTTPDestinationTest ex
>                 return httpEngine;
>             }
>         };
> -        transportFactory = new JettyHTTPTransportFactory();
> +        transportFactory = new HTTPTransportFactory();
>         transportFactory.setBus(new CXFBusImpl());
>         transportFactory.getBus().setExtension(
>             factory, JettyHTTPServerEngineFactory.class);
>
> -
>         TestJettyDestination testDestination =
>             new TestJettyDestination(transportFactory.getBus(),
>                                      transportFactory.getRegistry(),
> -                                     ei,
> -
> transportFactory.getJettyHTTPServerEngineFactory());
> +                                     ei,
> +                                     factory);
>         testDestination.finalizeConfig();
>         Message mi = testDestination.retrieveFromContinuation(httpRequest);
>         assertNull("Continuations must be ignored", mi);
> @@ -239,8 +239,8 @@ public class JettyHTTPDestinationTest ex
>
>     @Test
>     public void testGetMultiple() throws Exception {
> -        transportFactory = new JettyHTTPTransportFactory();
> -        transportFactory.setBus(new CXFBusImpl());
> +        transportFactory = new HTTPTransportFactory();
> +        transportFactory.setBus(BusFactory.getDefaultBus(true));
>
>         ServiceInfo serviceInfo = new ServiceInfo();
>         serviceInfo.setName(new QName("bla", "Service"));
> @@ -432,7 +432,7 @@ public class JettyHTTPDestinationTest ex
>         address = getEPR("bar/foo");
>         bus = new CXFBusImpl();
>
> -        transportFactory = new JettyHTTPTransportFactory();
> +        transportFactory = new HTTPTransportFactory();
>         transportFactory.setBus(bus);
>
>         ServiceInfo serviceInfo = new ServiceInfo();
> @@ -527,16 +527,7 @@ public class JettyHTTPDestinationTest ex
>         address = getEPR("bar/foo");
>
>
> -        transportFactory = new JettyHTTPTransportFactory() {
> -            JettyHTTPServerEngineFactory serverEngineFactory;
> -            @Override
> -            public JettyHTTPServerEngineFactory
> getJettyHTTPServerEngineFactory() {
> -                if (serverEngineFactory == null) {
> -                    serverEngineFactory = new
> JettyHTTPServerEngineFactory();
> -                }
> -                return serverEngineFactory;
> -            }
> -        };
> +        transportFactory = new HTTPTransportFactory();
>
>         final ConduitInitiator ci = new ConduitInitiator() {
>             public Conduit getConduit(EndpointInfo targetInfo) throws
> IOException {
>
> Modified:
> cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactoryTest.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactoryTest.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactoryTest.java
> (original)
> +++
> cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactoryTest.java
> Sun Mar 27 22:00:23 2011
> @@ -27,6 +27,8 @@ import org.apache.cxf.BusFactory;
>  import org.apache.cxf.bus.spring.SpringBusFactory;
>  import org.apache.cxf.transport.DestinationFactory;
>  import org.apache.cxf.transport.DestinationFactoryManager;
> +import org.apache.cxf.transport.http.HTTPTransportFactory;
> +
>  import org.junit.After;
>  import org.junit.AfterClass;
>  import org.junit.BeforeClass;
> @@ -78,7 +80,7 @@ public class JettyHTTPServerEngineFactor
>             destFM.getDestinationFactory(
>                     "http://cxf.apache.org/transports/http");
>         assertNotNull("No DestinationFactory", destF);
> -        assertTrue(JettyHTTPTransportFactory.class.isInstance(destF));
> +        assertTrue(HTTPTransportFactory.class.isInstance(destF));
>
>         // And the JettyHTTPServerEngineFactory should be there.
>         JettyHTTPServerEngineFactory factory =
>
> Modified:
> cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml
> (original)
> +++
> cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml
> Sun Mar 27 22:00:23 2011
> @@ -24,13 +24,6 @@
>  http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
>  http://www.springframework.org/schema/osgi
> http://www.springframework.org/schema/osgi/spring-osgi.xsd">
>
> -    <bean id="ServletTransportFactory"
> -          class="org.apache.cxf.transport.servlet.ServletTransportFactory"
> -          lazy-init="true">
> -        <constructor-arg ref="osgiDestinationRegistry"/>
> -        <property name="bus" ref="cxf"/>
> -    </bean>
> -
>     <osgi:reference id="osgiDestinationRegistry"
>
> interface="org.apache.cxf.transport.http.DestinationRegistry" />
>
>
> Modified:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
> Sun Mar 27 22:00:23 2011
> @@ -632,6 +632,9 @@ public abstract class AbstractHTTPDestin
>     protected boolean contextMatchOnExact() {
>         return "exact".equals(contextMatchStrategy);
>     }
> +
> +    public void finalizeConfig() {
> +    }
>
>     public String getBeanName() {
>         String beanName = null;
>
> Modified:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistry.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistry.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistry.java
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistry.java
> Sun Mar 27 22:00:23 2011
> @@ -25,7 +25,7 @@ import org.apache.cxf.transport.Abstract
>
>
>  public interface DestinationRegistry {
> -    void addDestination(String path, AbstractHTTPDestination destination);
> +    void addDestination(AbstractHTTPDestination destination);
>
>     void removeDestination(String path);
>
> @@ -41,5 +41,4 @@ public interface DestinationRegistry {
>
>     Set<String> getDestinationsPaths();
>
> -    String getTrimmedPath(String path);
>  }
>
> Modified:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistryImpl.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistryImpl.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistryImpl.java
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/DestinationRegistryImpl.java
> Sun Mar 27 22:00:23 2011
> @@ -42,11 +42,11 @@ public class DestinationRegistryImpl imp
>     public DestinationRegistryImpl() {
>     }
>
> -    public void addDestination(String path, AbstractHTTPDestination
> destination) {
> -        String p = getTrimmedPath(path);
> -        destinations.putIfAbsent(p, destination);
> +    public void addDestination(AbstractHTTPDestination destination) {
> +        String path =
> getTrimmedPath(destination.getEndpointInfo().getAddress());
> +        destinations.putIfAbsent(path, destination);
>         try {
> -            decodedDestinations.put(URLDecoder.decode(p, "ISO-8859-1"),
> destination);
> +            decodedDestinations.put(URLDecoder.decode(path, "ISO-8859-1"),
> destination);
>         } catch (UnsupportedEncodingException e) {
>             throw new RuntimeException("Unsupported Encoding", e);
>         }
> @@ -127,7 +127,7 @@ public class DestinationRegistryImpl imp
>      * @param path
>      * @return trimmed path
>      */
> -    public String getTrimmedPath(String path) {
> +    public static String getTrimmedPath(String path) {
>         if (path == null) {
>             return "/";
>         }
>
> Copied:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
> (from r1085147,
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPTransportFactory.java)
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java?p2=cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java&p1=cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPTransportFactory.java&r1=1085147&r2=1086052&rev=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPTransportFactory.java
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
> Sun Mar 27 22:00:23 2011
> @@ -19,6 +19,7 @@
>
>  package org.apache.cxf.transport.http;
>
> +import java.io.IOException;
>  import java.util.ArrayList;
>  import java.util.Arrays;
>  import java.util.Collection;
> @@ -27,17 +28,25 @@ import java.util.Iterator;
>  import java.util.List;
>  import java.util.Set;
>
> +import javax.annotation.Resource;
>  import javax.wsdl.extensions.http.HTTPAddress;
>  import javax.wsdl.extensions.soap.SOAPAddress;
>  import javax.xml.namespace.QName;
>
>  import org.apache.cxf.Bus;
> +import org.apache.cxf.common.injection.NoJSR250Annotations;
>  import org.apache.cxf.configuration.Configurer;
>  import org.apache.cxf.service.Service;
>  import org.apache.cxf.service.model.BindingInfo;
>  import org.apache.cxf.service.model.EndpointInfo;
>  import org.apache.cxf.service.model.ServiceInfo;
>  import org.apache.cxf.transport.AbstractTransportFactory;
> +import org.apache.cxf.transport.Conduit;
> +import org.apache.cxf.transport.ConduitInitiator;
> +import org.apache.cxf.transport.Destination;
> +import org.apache.cxf.transport.DestinationFactory;
> +import org.apache.cxf.transport.servlet.ServletDestinationFactory;
> +import org.apache.cxf.ws.addressing.EndpointReferenceType;
>  import org.apache.cxf.wsdl.http.AddressType;
>  import org.apache.cxf.wsdl11.WSDLEndpointFactory;
>
> @@ -45,9 +54,10 @@ import org.apache.cxf.wsdl11.WSDLEndpoin
>  /**
>  *
>  */
> -public abstract class AbstractHTTPTransportFactory
> +@NoJSR250Annotations(unlessNull = "bus")
> +public class HTTPTransportFactory
>     extends AbstractTransportFactory
> -    implements WSDLEndpointFactory {
> +    implements WSDLEndpointFactory, ConduitInitiator, DestinationFactory {
>
>     public static final List<String> DEFAULT_NAMESPACES
>         = Arrays.asList(
> @@ -69,21 +79,26 @@ public abstract class AbstractHTTPTransp
>
>     protected final DestinationRegistry registry;
>
> -    public AbstractHTTPTransportFactory() {
> +    public HTTPTransportFactory() {
>         this(new DestinationRegistryImpl());
>     }
> -    public AbstractHTTPTransportFactory(Bus b) {
> +    public HTTPTransportFactory(Bus b) {
>         this(b, new DestinationRegistryImpl());
>     }
> -    public AbstractHTTPTransportFactory(Bus b, DestinationRegistry
> registry) {
> +    public HTTPTransportFactory(Bus b, DestinationRegistry registry) {
>         super(DEFAULT_NAMESPACES, b);
>         this.registry = registry;
>     }
>
> -    public AbstractHTTPTransportFactory(DestinationRegistry registry) {
> +    public HTTPTransportFactory(DestinationRegistry registry) {
>         super(DEFAULT_NAMESPACES);
>         this.registry = registry;
>     }
> +
> +    @Resource
> +    public void setBus(Bus b) {
> +        super.setBus(b);
> +    }
>
>     public DestinationRegistry getRegistry() {
>         return registry;
> @@ -199,5 +214,52 @@ public abstract class AbstractHTTPTransp
>         }
>
>     }
> +
> +    /**
> +     * This call creates a new HTTPConduit for the endpoint. It is
> equivalent
> +     * to calling getConduit without an EndpointReferenceType.
> +     */
> +    public Conduit getConduit(EndpointInfo endpointInfo) throws
> IOException {
> +        return getConduit(endpointInfo, endpointInfo.getTarget());
> +    }
> +
> +    /**
> +     * This call creates a new HTTP Conduit based on the EndpointInfo and
> +     * EndpointReferenceType.
> +     * TODO: What are the formal constraints on EndpointInfo and
> +     * EndpointReferenceType values?
> +     */
> +    public Conduit getConduit(
> +            EndpointInfo endpointInfo,
> +            EndpointReferenceType target
> +    ) throws IOException {
> +        HTTPConduit conduit = new HTTPConduit(bus, endpointInfo, target);
> +        // Spring configure the conduit.
> +        String address = conduit.getAddress();
> +        if (address != null && address.indexOf('?') != -1) {
> +            address = address.substring(0, address.indexOf('?'));
> +        }
> +        configure(conduit, conduit.getBeanName(), address);
> +        conduit.finalizeConfig();
> +        return conduit;
> +    }
> +
> +    public Destination getDestination(EndpointInfo endpointInfo) throws
> IOException {
> +        AbstractHTTPDestination d =
> registry.getDestinationForPath(endpointInfo.getAddress());
> +        if (d == null) {
> +            HttpDestinationFactory jettyFactory =
> bus.getExtension(HttpDestinationFactory.class);
> +            HttpDestinationFactory servletFactory = new
> ServletDestinationFactory();
> +            String addr = endpointInfo.getAddress();
> +            HttpDestinationFactory factory = servletFactory;
> +            if (jettyFactory != null && (addr == null ||
> addr.startsWith("http"))) {
> +                factory = jettyFactory;
> +            }
> +            d = factory.createDestination(endpointInfo, getBus(),
> registry);
> +            registry.addDestination(d);
> +            configure(d);
> +            d.finalizeConfig();
> +        }
> +        return d;
> +    }
>
>  }
>
> Added:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpDestinationFactory.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpDestinationFactory.java?rev=1086052&view=auto
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpDestinationFactory.java
> (added)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpDestinationFactory.java
> Sun Mar 27 22:00:23 2011
> @@ -0,0 +1,30 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements. See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership. The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied. See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.cxf.transport.http;
> +
> +import java.io.IOException;
> +
> +import org.apache.cxf.Bus;
> +import org.apache.cxf.service.model.EndpointInfo;
> +
> +public interface HttpDestinationFactory {
> +    AbstractHTTPDestination createDestination(EndpointInfo endpointInfo,
> +                                              Bus bus,
> +                                              DestinationRegistry
> registry) throws IOException;
> +}
>
> Modified:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/CXFServlet.java
> Sun Mar 27 22:00:23 2011
> @@ -16,200 +16,98 @@
>  * specific language governing permissions and limitations
>  * under the License.
>  */
> -
>  package org.apache.cxf.transport.servlet;
>
> -import java.io.IOException;
> -import java.io.InputStream;
> -
> -import java.util.Collection;
> -import java.util.logging.Level;
> -import java.util.logging.Logger;
> -
>  import javax.servlet.ServletConfig;
> -import javax.servlet.ServletContext;
>  import javax.servlet.ServletException;
> -
> -
> -import org.apache.cxf.bus.spring.BusApplicationContext;
> -import org.apache.cxf.bus.spring.SpringBusFactory;
> -import org.apache.cxf.common.classloader.ClassLoaderUtils;
> -import org.apache.cxf.common.logging.LogUtils;
> -import org.apache.cxf.helpers.CastUtils;
> +import javax.servlet.http.HttpServlet;
> +import javax.servlet.http.HttpServletRequest;
> +import javax.servlet.http.HttpServletResponse;
> +
> +import org.apache.cxf.Bus;
> +import org.apache.cxf.BusException;
> +import org.apache.cxf.BusFactory;
>  import org.apache.cxf.resource.ResourceManager;
> -import org.apache.cxf.resource.URIResolver;
> -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
> +import org.apache.cxf.transport.DestinationFactory;
> +import org.apache.cxf.transport.DestinationFactoryManager;
> +import org.apache.cxf.transport.http.HTTPTransportFactory;
> +import
> org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet;
>  import org.springframework.context.ApplicationContext;
> -import org.springframework.context.ApplicationEvent;
> -import org.springframework.context.ApplicationListener;
> -import org.springframework.context.ConfigurableApplicationContext;
> -import org.springframework.context.event.ContextRefreshedEvent;
> -import org.springframework.context.support.AbstractApplicationContext;
> -import org.springframework.context.support.GenericApplicationContext;
> -import org.springframework.core.io.InputStreamResource;
> +import org.springframework.context.support.ClassPathXmlApplicationContext;
> +import org.springframework.web.context.support.WebApplicationContextUtils;
>
> +public class CXFServlet extends AbstractHTTPServlet {
>
> -/**
> - * A Servlet which supports loading of JAX-WS endpoints from an
> - * XML file and handling requests for endpoints created via other means
> - * such as Spring beans, or the Java API. All requests are passed on
> - * to the {@link ServletController}.
> - *
> - */
> -public class CXFServlet extends AbstractCXFServlet implements
> ApplicationListener {
> -
> -    private GenericApplicationContext childCtx;
> -    private boolean inRefresh;
> -
> -
> -    public static Logger getLogger() {
> -        return LogUtils.getL7dLogger(CXFServlet.class);
> -    }
> +    private HTTPTransportFactory transportFactory;
> +    private Bus bus;
> +
> +    private ServletController controller;
>
> -    public void loadBus(ServletConfig servletConfig) throws
> ServletException {
> -        String springCls =
> "org.springframework.context.ApplicationContext";
> -        try {
> -            ClassLoaderUtils.loadClass(springCls, getClass());
> -            loadSpringBus(servletConfig);
> -        } catch (ClassNotFoundException e) {
> -            LOG.log(Level.SEVERE, "FAILED_TO_LOAD_SPRING_BUS", new
> Object[]{e});
> -            throw new ServletException("Can't load bus with Spring context
> class", e);
> -        }
> +    public CXFServlet() {
>     }
> -
> -
> -    private void loadSpringBus(ServletConfig servletConfig) throws
> ServletException {
> -
> -        // try to pull an existing ApplicationContext out of the
> -        // ServletContext
> -        ServletContext svCtx = getServletContext();
> -
> -        // Spring 1.x
> -        ApplicationContext ctx = (ApplicationContext)svCtx
> -            .getAttribute("interface
> org.springframework.web.context.WebApplicationContext.ROOT");
> -
> -        // Spring 2.0
> -        if (ctx == null) {
> -            Object ctxObject = svCtx
> -
>  .getAttribute("org.springframework.web.context.WebApplicationContext.ROOT");
> -            if (ctxObject instanceof ApplicationContext) {
> -                ctx = (ApplicationContext) ctxObject;
> -            } else if (ctxObject != null) {
> -                // it should be a runtime exception
> -                Exception ex = (Exception) ctxObject;
> -                throw new ServletException(ex);
> -            }
> -        }
> -
> -        updateContext(servletConfig, ctx);
>
> -        if (ctx instanceof ConfigurableApplicationContext) {
> -
>  ((ConfigurableApplicationContext)ctx).addApplicationListener(this);
> -        }
> -        if (ctx instanceof AbstractApplicationContext) {
> -            Collection<ApplicationListener> lst = getListeners(ctx);
> -            if (lst != null && !lst.contains(this)) {
> -                lst.add(this);
> +    @Override
> +    public void init(ServletConfig sc) throws ServletException {
> +        super.init(sc);
> +        if (this.bus == null) {
> +            ApplicationContext wac = WebApplicationContextUtils.
> +                getWebApplicationContext(sc.getServletContext());
> +            String configLocation =
> sc.getInitParameter("config-location");
> +            if (wac == null && (configLocation != null)) {
> +                wac = new ClassPathXmlApplicationContext(configLocation);
>             }
> -        }
> -    }
> -    private Collection<ApplicationListener>
> getListeners(ApplicationContext ctx) {
> -        try {
> -            Object o =
> ctx.getClass().getMethod("getApplicationListeners").invoke(ctx);
> -            return CastUtils.cast((Collection<?>)o);
> -        } catch (Exception e) {
> -            //ignore
> -        }
> -        return null;
> -    }
> -
> -    private void updateContext(ServletConfig servletConfig,
> ApplicationContext ctx) {
> -        /* If ctx is null, normally no ContextLoaderListener
> -         * was defined in web.xml.  Default bus with all extensions
> -         * will be created in this case.
> -         *
> -         * If ctx not null, was already created by ContextLoaderListener.
> -         * Bus with only those extensions defined in the ctx will be
> created.
> -         */
> -        if (ctx == null) {
> -            LOG.info("LOAD_BUS_WITHOUT_APPLICATION_CONTEXT");
> -            bus = new SpringBusFactory().createBus(new String[0]);
> -            ctx = bus.getExtension(BusApplicationContext.class);
> -        } else {
> -            LOG.info("LOAD_BUS_WITH_APPLICATION_CONTEXT");
> -            inRefresh = true;
> -            try {
> -                bus = new SpringBusFactory(ctx).createBus();
> -            } finally {
> -                inRefresh = false;
> +            if (wac != null) {
> +                this.bus = wac.getBean("cxf", Bus.class);
> +            } else {
> +                this.bus = BusFactory.newInstance().createBus();
>             }
> -        }
> -
> +        }
> +
>         ResourceManager resourceManager =
> bus.getExtension(ResourceManager.class);
>         resourceManager.addResourceResolver(new
> ServletContextResourceResolver(
> -
> servletConfig.getServletContext()));
> -
> -        replaceDestinationFactory();
> -
> -        // Set up the ServletController
> -        controller = createServletController(servletConfig);
> -
> -        // build endpoints from the web.xml or a config file
> -        loadAdditionalConfig(ctx, servletConfig);
> -    }
> -
> -    private void loadAdditionalConfig(ApplicationContext ctx,
> -                                        ServletConfig servletConfig) {
> -        String location =
> servletConfig.getInitParameter("config-location");
> -        if (location == null) {
> -            location = "/WEB-INF/cxf-servlet.xml";
> -        }
> -        InputStream is = null;
> -        try {
> -            is =
> servletConfig.getServletContext().getResourceAsStream(location);
> -
> -            if (is == null || is.available() == -1) {
> -                URIResolver resolver = new URIResolver(location);
> +                                               sc.getServletContext()));
>
> -                if (resolver.isResolved()) {
> -                    is = resolver.getInputStream();
> +        if (transportFactory == null) {
> +            DestinationFactoryManager dfm =
> bus.getExtension(DestinationFactoryManager.class);
> +            try {
> +                DestinationFactory df = dfm
> +                    .getDestinationFactory("
> http://cxf.apache.org/transports/http/configuration");
> +                if (df instanceof HTTPTransportFactory) {
> +                    transportFactory = (HTTPTransportFactory)df;
>                 }
> +            } catch (BusException e) {
> +                // why are we throwing a busexception if the DF isn't
> found?
>             }
> -        } catch (IOException e) {
> -            //throw new ServletException(e);
> -        }
> -
> -        if (is != null) {
> -            LOG.log(Level.INFO, "BUILD_ENDPOINTS_FROM_CONFIG_LOCATION",
> new Object[]{location});
> -            childCtx = new GenericApplicationContext(ctx);
> -
> -            XmlBeanDefinitionReader reader = new
> XmlBeanDefinitionReader(childCtx);
> -
>  reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_XSD);
> -            reader.loadBeanDefinitions(new InputStreamResource(is,
> location));
> -
> -            childCtx.refresh();
> -        }
> -    }
> -
> -    public void destroy() {
> -        if (childCtx != null) {
> -            childCtx.destroy();
>         }
> -        super.destroy();
> +        this.controller = createServletController(sc);
>     }
>
> -    public void onApplicationEvent(ApplicationEvent event) {
> -        if (!inRefresh && event instanceof ContextRefreshedEvent &&
> getServletConfig() != null) {
> -            //need to re-do the bus/controller stuff
> -            try {
> -                inRefresh = true;
> -                updateContext(this.getServletConfig(),
> -
>  ((ContextRefreshedEvent)event).getApplicationContext());
> -            } finally {
> -                inRefresh = false;
> -            }
> +    private ServletController createServletController(ServletConfig
> servletConfig) {
> +        HttpServlet serviceListGeneratorServlet =
> +            new
> ServiceListGeneratorServlet(transportFactory.getRegistry(), bus);
> +        ServletController newController =
> +            new ServletController(transportFactory.getRegistry(),
> +                                  servletConfig,
> +                                  serviceListGeneratorServlet);
> +        return newController;
> +    }
> +
> +    public Bus getBus() {
> +        return bus;
> +    }
> +
> +    public void setBus(Bus bus) {
> +        this.bus = bus;
> +    }
> +
> +    @Override
> +    protected void invoke(HttpServletRequest request, HttpServletResponse
> response) throws ServletException {
> +        try {
> +            BusFactory.setThreadDefaultBus(bus);
> +            controller.invoke(request, response);
> +        } finally {
> +            BusFactory.setThreadDefaultBus(null);
>         }
>     }
>
> -
>  }
>
> Added:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestinationFactory.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestinationFactory.java?rev=1086052&view=auto
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestinationFactory.java
> (added)
> +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestinationFactory.java
> Sun Mar 27 22:00:23 2011
> @@ -0,0 +1,35 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements. See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership. The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied. See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.cxf.transport.servlet;
> +
> +import java.io.IOException;
> +
> +import org.apache.cxf.Bus;
> +import org.apache.cxf.service.model.EndpointInfo;
> +import org.apache.cxf.transport.http.AbstractHTTPDestination;
> +import org.apache.cxf.transport.http.DestinationRegistry;
> +import org.apache.cxf.transport.http.HttpDestinationFactory;
> +
> +public class ServletDestinationFactory implements HttpDestinationFactory {
> +    public AbstractHTTPDestination createDestination(EndpointInfo
> endpointInfo,
> +                                                     Bus bus,
> +                                                     DestinationRegistry
> registry) throws IOException {
> +        return new ServletDestination(bus, registry, endpointInfo,
> endpointInfo.getAddress());
> +    }
> +}
>
> Modified:
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/bus-extensions.txt
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/bus-extensions.txt?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/bus-extensions.txt
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/bus-extensions.txt
> Sun Mar 27 22:00:23 2011
> @@ -1,4 +1,4 @@
> -org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory::true
> +org.apache.cxf.transport.http.HTTPTransportFactory::true
>  org.apache.cxf.transport.http.HTTPWSDLExtensionLoader::true
>  org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder::true
>  org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder::true
>
> Modified:
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-servlet.xml
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-servlet.xml?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-servlet.xml
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/cxf/cxf-servlet.xml
> Sun Mar 27 22:00:23 2011
> @@ -23,8 +23,5 @@
>        xsi:schemaLocation="
>  http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd">
>
> -    <bean class="org.apache.cxf.transport.servlet.ServletTransportFactory"
> -         id="org.apache.cxf.transport.servlet.ServletTransportFactory">
> -        <property name="bus" ref="cxf"/>
> -    </bean>
> +
>  </beans>
>
> Copied:
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/spring/osgiservlet.xml
> (from r1085147,
> cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/spring/cxf-transport-osgi.xml)
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/resources/META-INF/spring/osgiservlet.xml?p2=cxf/trunk/rt/transports/http/src/main/resources/META-INF/spring/osgiservlet.xml&p1=cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/spring/cxf-transport-osgi.xml&r1=1085147&r2=1086052&rev=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/spring/cxf-transport-osgi.xml
> (original)
> +++
> cxf/trunk/rt/transports/http/src/main/resources/META-INF/spring/osgiservlet.xml
> Sun Mar 27 22:00:23 2011
> @@ -45,7 +45,7 @@ http://www.springframework.org/schema/co
>
>     <bean id="destinationRegistry"
> class="org.apache.cxf.transport.http.DestinationRegistryImpl" />
>
> -    <bean id="osgiServlet"
> class="org.apache.cxf.transport.http_osgi.SpringOsgiServlet">
> +    <bean id="osgiServlet"
> class="org.apache.cxf.transport.servlet.CXFServlet">
>         <constructor-arg ref="destinationRegistry"/>
>     </bean>
>
> @@ -68,4 +68,4 @@ http://www.springframework.org/schema/co
>     </osgi:service>
>
>  </beans>
> -
> +
>
> Modified:
> cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletServer.java
> URL:
> http://svn.apache.org/viewvc/cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletServer.java?rev=1086052&r1=1086051&r2=1086052&view=diff
>
> ==============================================================================
> ---
> cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletServer.java
> (original)
> +++
> cxf/trunk/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletServer.java
> Sun Mar 27 22:00:23 2011
> @@ -24,7 +24,7 @@ import org.apache.cxf.Bus;
>  import org.apache.cxf.BusFactory;
>  import org.apache.cxf.jaxws.EndpointImpl;
>  import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
> -import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
> +import org.apache.cxf.transport.servlet.CXFServlet;
>  import org.apache.hello_world_soap_http.GreeterImpl;
>  import org.eclipse.jetty.server.Server;
>  import org.eclipse.jetty.server.handler.ContextHandlerCollection;
> @@ -48,16 +48,15 @@ public class NoSpringServletServer exten
>
>             ServletContextHandler root = new
> ServletContextHandler(contexts, "/",
>
>  ServletContextHandler.SESSIONS);
> -
> -            CXFNonSpringServlet cxf = new CXFNonSpringServlet();
> +            Bus bus = BusFactory.getDefaultBus(true);
> +            CXFServlet cxf = new CXFServlet();
> +            cxf.setBus(bus);
>             ServletHolder servlet = new ServletHolder(cxf);
>             servlet.setName("soap");
>             servlet.setForcedPath("soap");
>             root.addServlet(servlet, "/soap/*");
>
>             httpServer.start();
> -
> -            Bus bus = cxf.getBus();
>             setBus(bus);
>             BusFactory.setDefaultBus(bus);
>             GreeterImpl impl = new GreeterImpl();
> @@ -65,7 +64,7 @@ public class NoSpringServletServer exten
>             HelloImpl helloImpl = new HelloImpl();
>             Endpoint.publish("/Hello", helloImpl);
>
> -            ((EndpointImpl)Endpoint.create(helloImpl)).publish();
> +            ((EndpointImpl)Endpoint.create(helloImpl)).publish("/");
>
>         } catch (Exception e) {
>             throw new RuntimeException(e);
>
>
>


-- 
Sergey Beryozkin

Application Integration Division of Talend <http://www.talend.com>
http://sberyozkin.blogspot.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message