You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by William Tam <em...@gmail.com> on 2007/04/17 17:56:51 UTC
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Hi Dan,
Is it possible to specific my own MessageObserver rather than using the
default "ChainInitiationObserver"? Prior to this change, I could name my
MessageObserver in the constructor of ServerImpl(). I could no longer do
that. The MessageObserver is now hardcorded in
AbstractBindingFactory.addListener(). It is not possible for me to override
it because I don't have control over the BindingFactories.
Thanks,
William
On 4/16/07, dandiep@apache.org <da...@apache.org> wrote:
>
> Author: dandiep
> Date: Mon Apr 16 16:01:51 2007
> New Revision: 529436
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=529436
> Log:
> o Add support for resolving an Endpoint after the chain has be initiated.
> This comes through a new MutlipleEndpointObserver. If multiple a user
> attempts to register multiple endpoints on the same address, this observer
> will be created. Various binding interceptors and routing interceptors
> will be added to it.
>
> The BindingFactoryManager is now in control of creating the
> MessageObserver.
> this allows it to add in various binding interceptors (like
> ReadHeadersInterceptor)
> and then create interceptors specifically oriented around selecting the
> correct endpoint. The SOAP binding contains a simple
> EndpointSelectionInterceptor
> which resolves the most appropriate binding based on the SOAP version
> used.
> o Changed the ResourceInjector to search through parent classes as well
> so injenction on AbstractBindingFactory works correctly
> o Updated the versioning systest to use this improved method
>
>
> Added:
>
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
> (with props)
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
> (with props)
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
> (with props)
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
> (with props)
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
> (with props)
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
> (with props)
> Modified:
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/Binding.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/BindingFactory.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/Server.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractAttributedInterceptorProvider.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/Interceptor.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/InterceptorChain.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
>
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java
>
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/AnnotationProcessor.java
>
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/Messages.properties
>
> incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java
>
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java
>
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/mtom/MtomTest.java
>
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/wrapped/WrappedServiceTest.java
>
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBinding.java
>
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBindingFactory.java
>
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
>
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
>
> incubator/cxf/trunk/rt/bindings/soap/src/main/resources/META-INF/cxf/cxf-
> extension-soap.xml
>
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java
>
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingTest.java
>
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBinding.java
>
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java
>
> incubator/cxf/trunk/rt/bindings/xml/src/main/resources/META-INF/cxf/cxf-
> extension-xml.xml
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractTransportFactory.java
>
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
>
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/AbstractJaxWsTest.java
>
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/holder/HolderTest.java
>
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
>
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/RountripTest.java
>
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ServerFactoryTest.java
>
> incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
>
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/Server.java
>
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/versioning/MediatorInInterceptor.java
>
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/versioning/Server.java
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/Binding.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/Binding.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/Binding.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/Binding.java
> Mon Apr 16 16:01:51 2007
> @@ -21,6 +21,7 @@
>
> import org.apache.cxf.interceptor.InterceptorProvider;
> import org.apache.cxf.message.Message;
> +import org.apache.cxf.service.model.BindingInfo;
>
> /**
> * A Binding provides interceptors and message creation logic for a
> @@ -31,4 +32,6 @@
> Message createMessage();
>
> Message createMessage(Message m);
> +
> + BindingInfo getBindingInfo();
> }
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/BindingFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/BindingFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/BindingFactory.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/binding/BindingFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -19,8 +19,10 @@
>
> package org.apache.cxf.binding;
>
> +import org.apache.cxf.endpoint.Endpoint;
> import org.apache.cxf.service.Service;
> import org.apache.cxf.service.model.BindingInfo;
> +import org.apache.cxf.transport.Destination;
>
> /**
> * A factory interface for creating Bindings from BindingInfo metadata.
> @@ -42,4 +44,6 @@
> * @return
> */
> BindingInfo createBindingInfo(Service service, String namespace,
> Object configObject);
> +
> + void addListener(Destination d, Endpoint e);
> }
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/Server.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/Server.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/Server.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/Server.java
> Mon Apr 16 16:01:51 2007
> @@ -20,7 +20,6 @@
> package org.apache.cxf.endpoint;
>
> import org.apache.cxf.transport.Destination;
> -import org.apache.cxf.transport.MessageObserver;
>
> public interface Server {
>
> @@ -31,7 +30,4 @@
> Destination getDestination();
>
> Endpoint getEndpoint();
> -
> - MessageObserver getMessageObserver();
> -
> }
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractAttributedInterceptorProvider.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractAttributedInterceptorProvider.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractAttributedInterceptorProvider.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/AbstractAttributedInterceptorProvider.java
> Mon Apr 16 16:01:51 2007
> @@ -62,6 +62,16 @@
> public void setOutFaultInterceptors(List<Interceptor> interceptors) {
> outFault = interceptors;
> }
> +
> + @Override
> + public boolean equals(Object o) {
> + return o == this;
> + }
> +
> + @Override
> + public int hashCode() {
> + return super.hashCode();
> + }
>
>
> }
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/Interceptor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/Interceptor.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/Interceptor.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/Interceptor.java
> Mon Apr 16 16:01:51 2007
> @@ -40,11 +40,5 @@
> * @param message
> */
> void handleFault(T message);
> -
> - /**
> - * Clean up interceptor.
> - * @param message
> - * @throws Fault
> - */
> - void postHandleMessage(T message) throws Fault;
> +
> }
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/InterceptorChain.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/InterceptorChain.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/InterceptorChain.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/interceptor/InterceptorChain.java
> Mon Apr 16 16:01:51 2007
> @@ -19,6 +19,7 @@
>
> package org.apache.cxf.interceptor;
>
> +import java.util.Collection;
> import java.util.ListIterator;
>
> import org.apache.cxf.message.Message;
> @@ -36,6 +37,8 @@
> String STARTING_AFTER_INTERCEPTOR_ID =
> "starting_after_interceptor_id";
>
> void add(Interceptor i);
> +
> + void add(Collection<Interceptor> i);
>
> void remove(Interceptor i);
>
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
> Mon Apr 16 16:01:51 2007
> @@ -24,7 +24,6 @@
>
> import javax.xml.stream.XMLStreamReader;
>
> -import org.apache.cxf.interceptor.Fault;
> import org.apache.cxf.message.Message;
>
> public abstract class AbstractPhaseInterceptor<T extends Message>
> implements PhaseInterceptor<T> {
> @@ -86,11 +85,7 @@
>
> public void handleFault(T message) {
> }
> -
> - public void postHandleMessage(T message) throws Fault {
> -
> - }
> -
> +
> public boolean isGET(T message) {
> String method = (String)message.get(Message.HTTP_REQUEST_METHOD);
> return "GET".equals(method) && message.getContent(
> XMLStreamReader.class) == null;
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java
> Mon Apr 16 16:01:51 2007
> @@ -80,11 +80,11 @@
> iterator = new PhaseInterceptorIterator();
> }
>
> - public void add(List<Interceptor> newhandlers) {
> + public void add(Collection<Interceptor> newhandlers) {
> add(newhandlers, false);
> }
>
> - public void add(List<Interceptor> newhandlers, boolean force) {
> + public void add(Collection<Interceptor> newhandlers, boolean force) {
> if (newhandlers == null) {
> return;
> }
>
> Modified:
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java
> (original)
> +++
> incubator/cxf/trunk/api/src/main/java/org/apache/cxf/transport/Destination.java
> Mon Apr 16 16:01:51 2007
> @@ -21,7 +21,6 @@
>
> import java.io.IOException;
>
> -
> import org.apache.cxf.message.Message;
> import org.apache.cxf.ws.addressing.EndpointReferenceType;
>
> @@ -58,4 +57,6 @@
> * Shutdown the Destination, i.e. stop accepting incoming messages.
> */
> void shutdown();
> +
> + MessageObserver getMessageObserver();
> }
>
> Modified:
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/AnnotationProcessor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/AnnotationProcessor.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/AnnotationProcessor.java
> (original)
> +++
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/AnnotationProcessor.java
> Mon Apr 16 16:01:51 2007
> @@ -92,7 +92,7 @@
>
> private void processMethods(AnnotationVisitor visitor) {
>
> - visitAnnotatedElement(target.getClass().getDeclaredMethods(),
> visitor, visitMethodMethod);
> + visitAnnotatedElement(target.getClass().getMethods(), visitor,
> visitMethodMethod);
> }
>
> private void processFields(AnnotationVisitor visitor) {
> @@ -120,7 +120,7 @@
> // ignore, we're invoking methods of a public
> interface
> } catch (InvocationTargetException e) {
> Throwable cause = e.getCause() == null ? e :
> e.getCause();
> - LogUtils.log(LOG, Level.SEVERE,
> "VISITOR_RAISED_EXCEPTION", cause, visitor);
> + LogUtils.log(LOG, Level.SEVERE,
> "VISITOR_RAISED_EXCEPTION", cause, visitor, element);
> }
> }
> }
>
> Modified:
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/Messages.properties
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/Messages.properties?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/Messages.properties
> (original)
> +++
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/annotation/Messages.properties
> Mon Apr 16 16:01:51 2007
> @@ -19,4 +19,4 @@
> #
> #
> INVALID_CTOR_ARGS=Either a non-null object or non-null class must be
> specified.
> -VISITOR_RAISED_EXCEPTION=an AnnotationVisitor ({0})raised an exception.
> +VISITOR_RAISED_EXCEPTION=an AnnotationVisitor ({0}) raised an exception
> on element {1}.
>
> Modified:
> incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/http/src/main/java/org/apache/cxf/binding/http/HttpBindingFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -20,10 +20,8 @@
>
> import java.lang.reflect.Method;
> import java.util.ArrayList;
> -import java.util.Collection;
> import java.util.List;
>
> -import javax.annotation.Resource;
> import javax.xml.namespace.QName;
>
> import org.apache.cxf.binding.AbstractBindingFactory;
> @@ -50,25 +48,15 @@
> public class HttpBindingFactory extends AbstractBindingFactory {
>
> public static final String HTTP_BINDING_ID = "
> http://apache.org/cxf/binding/http";
> - private Collection<String> activationNamespaces;
> private List<ResourceStrategy> strategies = new
> ArrayList<ResourceStrategy>();
>
> public HttpBindingFactory() {
> strategies.add(new JRAStrategy());
> strategies.add(new ConventionStrategy());
> }
> -
> - @Resource(name = "activationNamespaces")
> - public void setActivationNamespaces(Collection<String> ans) {
> - activationNamespaces = ans;
> - }
> -
> - public Collection<String> getActivationNamespaces() {
> - return activationNamespaces;
> - }
>
> public Binding createBinding(BindingInfo bi) {
> - XMLBinding binding = new XMLBinding();
> + XMLBinding binding = new XMLBinding(bi);
>
> binding.getInInterceptors().add(new AttachmentInInterceptor());
> binding.getInInterceptors().add(new
> DatabindingInSetupInterceptor());
>
> Modified:
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/BareServiceTest.java
> Mon Apr 16 16:01:51 2007
> @@ -40,6 +40,7 @@
> public void testCreation() throws Exception {
> BindingFactoryManager bfm = getBus().getExtension(
> BindingFactoryManager.class);
> HttpBindingFactory factory = new HttpBindingFactory();
> + factory.setBus(getBus());
> bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID,
> factory);
>
> JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();
> @@ -123,6 +124,7 @@
> public void testSetContentType() throws Exception {
> BindingFactoryManager bfm = getBus().getExtension(
> BindingFactoryManager.class);
> HttpBindingFactory factory = new HttpBindingFactory();
> + factory.setBus(getBus());
> bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID,
> factory);
>
> JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();
>
> Modified:
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/mtom/MtomTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/mtom/MtomTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/mtom/MtomTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/mtom/MtomTest.java
> Mon Apr 16 16:01:51 2007
> @@ -39,6 +39,7 @@
> public void testService() throws Exception {
> BindingFactoryManager bfm = getBus().getExtension(
> BindingFactoryManager.class);
> HttpBindingFactory factory = new HttpBindingFactory();
> + factory.setBus(getBus());
> bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID,
> factory);
>
> PeopleServiceImpl impl = new PeopleServiceImpl();
>
> Modified:
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/wrapped/WrappedServiceTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/wrapped/WrappedServiceTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/wrapped/WrappedServiceTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/wrapped/WrappedServiceTest.java
> Mon Apr 16 16:01:51 2007
> @@ -50,6 +50,7 @@
> }
>
> public void testService(HttpBindingFactory httpFactory) throws
> Exception {
> + httpFactory.setBus(bus);
> BindingFactoryManager bfm = getBus().getExtension(
> BindingFactoryManager.class);
> bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID,
> httpFactory);
>
>
> Modified:
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBinding.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBinding.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBinding.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBinding.java
> Mon Apr 16 16:01:51 2007
> @@ -22,11 +22,23 @@
> import org.apache.cxf.interceptor.AbstractBasicInterceptorProvider;
> import org.apache.cxf.message.Message;
> import org.apache.cxf.message.MessageImpl;
> +import org.apache.cxf.service.model.BindingInfo;
>
> public class ObjectBinding extends AbstractBasicInterceptorProvider
> implements Binding {
>
> public static final String OPERATION = "objectBinding.operationName";
> public static final String BINDING = "objectBinding.bindingName";
> +
> + private BindingInfo bindingInfo;
> +
> + public ObjectBinding(BindingInfo bindingInfo) {
> + super();
> + this.bindingInfo = bindingInfo;
> + }
> +
> + public BindingInfo getBindingInfo() {
> + return bindingInfo;
> + }
>
> public Message createMessage() {
> return new MessageImpl();
>
> Modified:
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBindingFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBindingFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBindingFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/object/src/main/java/org/apache/cxf/binding/object/ObjectBindingFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -18,10 +18,7 @@
> */
> package org.apache.cxf.binding.object;
>
> -import java.util.Collection;
> -
> import javax.annotation.PostConstruct;
> -import javax.annotation.Resource;
> import javax.xml.namespace.QName;
>
> import org.apache.cxf.Bus;
> @@ -37,29 +34,14 @@
> public static final String BINDING_ID = "
> http://cxf.apache.org/binding/object";
> public static final String RUN_NON_LOGICAL = "
> objectBinding.stopAfterLogical";
>
> - private Collection<String> activationNamespaces;
> - private Bus bus;
> private boolean autoRegisterLocalEndpoint;
> private boolean initialized = true;
> private LocalServerListener listener;
>
> - public Collection<String> getActivationNamespaces() {
> - return activationNamespaces;
> - }
> -
> - @Resource(name = "activationNamespaces")
> - public void setActivationNamespaces(Collection<String> ans) {
> - activationNamespaces = ans;
> - }
> -
> - @Resource(name = "bus")
> - public void setBus(Bus bus) {
> - this.bus = bus;
> - }
> -
> @PostConstruct
> public void initialize() {
> if (autoRegisterLocalEndpoint) {
> + Bus bus = getBus();
> ServerLifeCycleManager manager = bus.getExtension(
> ServerLifeCycleManager.class);
> if (manager != null) {
> listener = new LocalServerListener(bus, this);
> @@ -70,7 +52,7 @@
> }
>
> public Binding createBinding(BindingInfo bi) {
> - ObjectBinding binding = new ObjectBinding();
> + ObjectBinding binding = new ObjectBinding(bi);
> binding.getOutInterceptors().add(new
> ObjectDispatchOutInterceptor());
> binding.getInInterceptors().add(new
> ObjectDispatchInInterceptor());
>
>
> Modified:
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
> Mon Apr 16 16:01:51 2007
> @@ -23,19 +23,26 @@
> import org.apache.cxf.interceptor.AbstractBasicInterceptorProvider;
> import org.apache.cxf.message.Message;
> import org.apache.cxf.message.MessageImpl;
> +import org.apache.cxf.service.model.BindingInfo;
>
> public class SoapBinding extends AbstractBasicInterceptorProvider
> implements Binding {
>
> private SoapVersion version;
> + private BindingInfo bindingInfo;
>
> - public SoapBinding() {
> - this(Soap11.getInstance());
> + public SoapBinding(BindingInfo info) {
> + this(info, Soap11.getInstance());
> }
>
> - public SoapBinding(SoapVersion v) {
> + public SoapBinding(BindingInfo info, SoapVersion v) {
> version = v;
> + bindingInfo = info;
> }
>
> + public BindingInfo getBindingInfo() {
> + return bindingInfo;
> + }
> +
> public void setSoapVersion(SoapVersion v) {
> this.version = v;
> }
>
> Modified:
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBindingFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -20,11 +20,9 @@
> package org.apache.cxf.binding.soap;
>
> import java.util.ArrayList;
> -import java.util.Collection;
> import java.util.Iterator;
> import java.util.List;
>
> -import javax.annotation.Resource;
> import javax.wsdl.extensions.ExtensibilityElement;
> import javax.wsdl.extensions.mime.MIMEContent;
> import javax.wsdl.extensions.mime.MIMEMultipartRelated;
> @@ -33,6 +31,7 @@
>
> import org.apache.cxf.binding.AbstractBindingFactory;
> import org.apache.cxf.binding.Binding;
> +import
> org.apache.cxf.binding.soap.interceptor.EndpointSelectionInterceptor;
> import org.apache.cxf.binding.soap.interceptor.MustUnderstandInterceptor;
> import org.apache.cxf.binding.soap.interceptor.RPCInInterceptor;
> import org.apache.cxf.binding.soap.interceptor.RPCOutInterceptor;
> @@ -50,6 +49,7 @@
> import org.apache.cxf.binding.soap.model.SoapHeaderInfo;
> import org.apache.cxf.binding.soap.model.SoapOperationInfo;
> import org.apache.cxf.common.util.StringUtils;
> +import org.apache.cxf.endpoint.Endpoint;
> import org.apache.cxf.interceptor.AttachmentInInterceptor;
> import org.apache.cxf.interceptor.AttachmentOutInterceptor;
> import org.apache.cxf.interceptor.BareOutInterceptor;
> @@ -70,6 +70,10 @@
> import org.apache.cxf.tools.common.extensions.soap.SoapHeader;
> import org.apache.cxf.tools.common.extensions.soap.SoapOperation;
> import org.apache.cxf.tools.util.SOAPBindingUtil;
> +import org.apache.cxf.transport.ChainInitiationObserver;
> +import org.apache.cxf.transport.Destination;
> +import org.apache.cxf.transport.MessageObserver;
> +import org.apache.cxf.transport.MultipleEndpointObserver;
>
>
> public class SoapBindingFactory extends AbstractBindingFactory {
> @@ -78,17 +82,6 @@
>
> private boolean mtomEnabled = true;
>
> - private Collection<String> activationNamespaces;
> -
> - public Collection<String> getActivationNamespaces() {
> - return activationNamespaces;
> - }
> -
> - @Resource(name = "activationNamespaces")
> - public void setActivationNamespaces(Collection<String> ans) {
> - activationNamespaces = ans;
> - }
> -
> public BindingInfo createBindingInfo(ServiceInfo si, String bindingid,
> Object conf) {
> SoapBindingConfiguration config;
> if (conf instanceof SoapBindingConfiguration) {
> @@ -184,7 +177,7 @@
> if (binding instanceof SoapBindingInfo) {
> SoapBindingInfo sbi = (SoapBindingInfo) binding;
> version = sbi.getSoapVersion();
> - sb = new SoapBinding(version);
> + sb = new SoapBinding(binding, version);
> // Service wide style
> if (!StringUtils.isEmpty(sbi.getStyle())) {
> bindingStyle = sbi.getStyle();
> @@ -373,6 +366,47 @@
> bmsg.addExtensor(bodyInfo);
> }
>
> + @Override
> + public synchronized void addListener(Destination d, Endpoint e) {
> + MessageObserver mo = d.getMessageObserver();
> + if (mo == null) {
> + super.addListener(d, e);
> + return;
> + }
> +
> + if (mo instanceof ChainInitiationObserver) {
> + ChainInitiationObserver cio = (ChainInitiationObserver) mo;
> + MultipleEndpointObserver newMO = new
> MultipleEndpointObserver(getBus()) {
> + @Override
> + protected Message createMessage(Message message) {
> + return new SoapMessage(message);
> + }
> + };
> +
> + newMO.getBindingInterceptors().add(new
> AttachmentInInterceptor());
> + newMO.getBindingInterceptors().add(new StaxInInterceptor());
> +
> + // This will not work if we one of the endpoints disables
> message
> + // processing. But, if you've disabled message processing,
> you
> + // probably aren't going to use this feature.
> + newMO.getBindingInterceptors().add(new
> ReadHeadersInterceptor());
> +
> + // Add in a default selection interceptor
> + newMO.getRoutingInterceptors().add(new
> EndpointSelectionInterceptor());
> +
> + newMO.getEndpoints().add(cio.getEndpoint());
> +
> + mo = newMO;
> + }
> +
> + if (mo instanceof MultipleEndpointObserver) {
> + MultipleEndpointObserver meo = (MultipleEndpointObserver) mo;
> + meo.getEndpoints().add(e);
> + }
> +
> + d.setMessageObserver(mo);
> + }
> +
> public void setMtomEnabled(boolean mtomEnabled) {
> this.mtomEnabled = mtomEnabled;
> }
>
> Added:
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java?view=auto&rev=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
> (added)
> +++
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
> Mon Apr 16 16:01:51 2007
> @@ -0,0 +1,64 @@
> +/**
> + * 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.binding.soap.interceptor;
> +
> +import java.util.Set;
> +
> +import org.apache.cxf.binding.soap.SoapMessage;
> +import org.apache.cxf.binding.soap.SoapVersion;
> +import org.apache.cxf.binding.soap.model.SoapBindingInfo;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.interceptor.AbstractEndpointSelectionInterceptor;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.service.model.BindingInfo;
> +import org.apache.cxf.service.model.EndpointInfo;
> +
> +/**
> + * Selects the most appropriate endpoint based on the SOAP version used.
> + *
> + * @param message
> + * @param eps
> + * @return
> + */
> +public class EndpointSelectionInterceptor extends
> AbstractEndpointSelectionInterceptor {
> +
> + public EndpointSelectionInterceptor() {
> + super();
> + setPhase(Phase.READ);
> + getAfter().add(ReadHeadersInterceptor.class.getName());
> + }
> +
> + protected Endpoint selectEndpoint(Message message, Set<Endpoint> eps)
> {
> + SoapVersion sv = ((SoapMessage)message).getVersion();
> +
> + for (Endpoint e : eps) {
> + EndpointInfo ei = e.getEndpointInfo();
> + BindingInfo binding = ei.getBinding();
> +
> + if (binding instanceof SoapBindingInfo
> + &&
> ((SoapBindingInfo)binding).getSoapVersion().equals(sv)) {
> + return e;
> + }
> + }
> +
> + return null;
> + }
> +
> +}
>
> Propchange:
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
>
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
>
> ------------------------------------------------------------------------------
> svn:executable = *
>
> Propchange:
> incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/EndpointSelectionInterceptor.java
>
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Modified:
> incubator/cxf/trunk/rt/bindings/soap/src/main/resources/META-INF/cxf/cxf-
> extension-soap.xml
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/resources/META-INF/cxf/cxf-extension-soap.xml?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/soap/src/main/resources/META-INF/cxf/cxf-
> extension-soap.xml (original)
> +++
> incubator/cxf/trunk/rt/bindings/soap/src/main/resources/META-INF/cxf/cxf-
> extension-soap.xml Mon Apr 16 16:01:51 2007
> @@ -32,6 +32,7 @@
> <value>http://schemas.xmlsoap.org/wsdl/soap12/</value>
> </set>
> </property>
> + <property name="bus" ref="cxf"/>
> </bean>
>
> <bean class="org.apache.cxf.binding.soap.SoapTransportFactory"
> lazy-init="true">
>
> Modified:
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java
> Mon Apr 16 16:01:51 2007
> @@ -36,7 +36,7 @@
> Message message = new MessageImpl();
> message.setExchange(new ExchangeImpl());
> message.getExchange().setOutMessage(message);
> - SoapBinding sb = new SoapBinding();
> + SoapBinding sb = new SoapBinding(null);
> message = sb.createMessage(message);
> assertNotNull(message);
> assertTrue(message instanceof SoapMessage);
>
> Modified:
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapBindingTest.java
> Mon Apr 16 16:01:51 2007
> @@ -28,7 +28,7 @@
>
> public void testCreateMessage() throws Exception {
> Message message = new MessageImpl();
> - SoapBinding sb = new SoapBinding();
> + SoapBinding sb = new SoapBinding(null);
> message = sb.createMessage(message);
> assertNotNull(message);
> assertTrue(message instanceof SoapMessage);
>
> Modified:
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBinding.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBinding.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBinding.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBinding.java
> Mon Apr 16 16:01:51 2007
> @@ -23,12 +23,21 @@
> import org.apache.cxf.message.Message;
> import org.apache.cxf.message.MessageImpl;
> import org.apache.cxf.message.XMLMessage;
> +import org.apache.cxf.service.model.BindingInfo;
>
> public class XMLBinding extends AbstractBasicInterceptorProvider
> implements Binding {
> +
> + private BindingInfo bindingInfo;
> +
> + public XMLBinding(BindingInfo bindingInfo) {
> + super();
> + this.bindingInfo = bindingInfo;
> + }
>
> - public XMLBinding() {
> + public BindingInfo getBindingInfo() {
> + return bindingInfo;
> }
> -
> +
> public Message createMessage() {
> return createMessage(new MessageImpl());
> }
>
> Modified:
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/bindings/xml/src/main/java/org/apache/cxf/binding/xml/XMLBindingFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -18,9 +18,6 @@
> */
> package org.apache.cxf.binding.xml;
>
> -import java.util.Collection;
> -
> -import javax.annotation.Resource;
> import javax.xml.namespace.QName;
>
> import org.apache.cxf.binding.AbstractBindingFactory;
> @@ -41,19 +38,8 @@
>
> public class XMLBindingFactory extends AbstractBindingFactory {
>
> - private Collection<String> activationNamespaces;
> -
> - @Resource(name = "activationNamespaces")
> - public void setActivationNamespaces(Collection<String> ans) {
> - activationNamespaces = ans;
> - }
> -
> - public Collection<String> getActivationNamespaces() {
> - return activationNamespaces;
> - }
> -
> public Binding createBinding(BindingInfo binding) {
> - XMLBinding xb = new XMLBinding();
> + XMLBinding xb = new XMLBinding(binding);
>
> xb.getInInterceptors().add(new AttachmentInInterceptor());
> xb.getInInterceptors().add(new StaxInInterceptor());
>
> Modified:
> incubator/cxf/trunk/rt/bindings/xml/src/main/resources/META-INF/cxf/cxf-
> extension-xml.xml
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/xml/src/main/resources/META-INF/cxf/cxf-extension-xml.xml?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/bindings/xml/src/main/resources/META-INF/cxf/cxf-
> extension-xml.xml (original)
> +++
> incubator/cxf/trunk/rt/bindings/xml/src/main/resources/META-INF/cxf/cxf-
> extension-xml.xml Mon Apr 16 16:01:51 2007
> @@ -30,6 +30,7 @@
> <value>http://www.w3.org/2004/08/wsdl/http</value>
> </set>
> </property>
> + <property name="bus" ref="cxf"/>
> </bean>
>
> </beans>
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/binding/AbstractBindingFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -31,11 +31,14 @@
> import javax.xml.namespace.QName;
>
> import org.apache.cxf.Bus;
> +import org.apache.cxf.endpoint.Endpoint;
> import org.apache.cxf.service.Service;
> import org.apache.cxf.service.model.AbstractPropertiesHolder;
> import org.apache.cxf.service.model.BindingInfo;
> import org.apache.cxf.service.model.BindingOperationInfo;
> import org.apache.cxf.service.model.ServiceInfo;
> +import org.apache.cxf.transport.ChainInitiationObserver;
> +import org.apache.cxf.transport.Destination;
> import org.apache.cxf.wsdl11.WSDLBindingFactory;
>
> import static org.apache.cxf.helpers.CastUtils.cast;
> @@ -44,12 +47,10 @@
>
> public static final String DATABINDING_DISABLED = "
> databinding.disabled";
>
> - @Resource
> - Bus bus;
> -
> - @Resource
> Collection<String> activationNamespaces;
>
> + Bus bus;
> +
> @PostConstruct
> void registerWithBindingManager() {
> BindingFactoryManager manager = bus.getExtension(
> BindingFactoryManager.class);
> @@ -144,4 +145,29 @@
> }
> }
> }
> +
> + public void addListener(Destination d, Endpoint e) {
> + ChainInitiationObserver observer = new ChainInitiationObserver(e,
> bus);
> +
> + d.setMessageObserver(observer);
> + }
> +
> + public Bus getBus() {
> + return bus;
> + }
> +
> + @Resource(name = "bus")
> + public void setBus(Bus bus) {
> + this.bus = bus;
> + }
> +
> + public Collection<String> getActivationNamespaces() {
> + return activationNamespaces;
> + }
> +
> + @Resource(name = "activationNamespaces")
> + public void setActivationNamespaces(Collection<String>
> activationNamespaces) {
> + this.activationNamespaces = activationNamespaces;
> + }
> +
> }
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java
> (original)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ServerImpl.java
> Mon Apr 16 16:01:51 2007
> @@ -27,6 +27,7 @@
>
> import org.apache.cxf.Bus;
> import org.apache.cxf.BusException;
> +import org.apache.cxf.binding.BindingFactory;
> import org.apache.cxf.common.logging.LogUtils;
> import org.apache.cxf.management.InstrumentationManager;
> import org.apache.cxf.service.model.EndpointInfo;
> @@ -34,29 +35,25 @@
> import org.apache.cxf.transport.DestinationFactory;
> import org.apache.cxf.transport.DestinationFactoryManager;
> import org.apache.cxf.transport.MessageObserver;
> +import org.apache.cxf.transport.MultipleEndpointObserver;
>
> public class ServerImpl implements Server {
> private static final Logger LOG = LogUtils.getL7dLogger(
> ServerImpl.class);
> private Destination destination;
> - private MessageObserver messageObserver;
> private Endpoint endpoint;
> private ServerRegistry serverRegistry;
> private Bus bus;
> private ServerLifeCycleManager mgr;
> -
> - public ServerImpl(Bus bus, Endpoint endpoint, MessageObserver
> observer)
> - throws BusException, IOException {
> - this(bus, endpoint, null, observer);
> - }
> + private BindingFactory bindingFactory;
>
> public ServerImpl(Bus bus,
> Endpoint endpoint,
> DestinationFactory destinationFactory,
> - MessageObserver observer) throws BusException,
> IOException {
> + BindingFactory bindingFactory) throws BusException,
> IOException {
> this.endpoint = endpoint;
> - this.messageObserver = observer;
> this.bus = bus;
> -
> + this.bindingFactory = bindingFactory;
> +
> EndpointInfo ei = endpoint.getEndpointInfo();
>
> //Treat local transport as a special case, transports loaded by
> transportId can be replaced
> @@ -100,8 +97,8 @@
> }
>
> public void start() {
> + bindingFactory.addListener(destination, endpoint);
>
> - getDestination().setMessageObserver(messageObserver);
> // register the active server to run
> if (null != serverRegistry) {
> LOG.fine("register the server to serverRegistry ");
> @@ -118,24 +115,22 @@
> if (mgr != null) {
> mgr.stopServer(this);
> }
> - getDestination().setMessageObserver(null);
> +
> + MessageObserver mo = getDestination().getMessageObserver();
> + if (mo instanceof MultipleEndpointObserver) {
> + ((MultipleEndpointObserver)
> mo).getEndpoints().remove(endpoint);
> + } else {
> + getDestination().setMessageObserver(null);
> + }
> +
> if (null != serverRegistry) {
> LOG.fine("unregister the server to serverRegistry ");
> serverRegistry.unregister(this);
> }
> }
>
> - public MessageObserver getMessageObserver() {
> - return messageObserver;
> - }
> -
> - public void setMessageObserver(MessageObserver messageObserver) {
> - this.messageObserver = messageObserver;
> - }
> -
> public Endpoint getEndpoint() {
> return endpoint;
> }
> -
>
> }
>
> Added:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java?view=auto&rev=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
> (added)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
> Mon Apr 16 16:01:51 2007
> @@ -0,0 +1,67 @@
> +/**
> + * 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.interceptor;
> +
> +import java.util.Set;
> +
> +import org.apache.cxf.binding.Binding;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.helpers.CastUtils;
> +import org.apache.cxf.message.Exchange;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.phase.AbstractPhaseInterceptor;
> +import org.apache.cxf.service.Service;
> +import org.apache.cxf.transport.MultipleEndpointObserver;
> +
> +public abstract class AbstractEndpointSelectionInterceptor extends
> AbstractPhaseInterceptor<Message> {
> +
> + public AbstractEndpointSelectionInterceptor() {
> + super();
> +
> + }
> +
> + public void handleMessage(Message message) throws Fault {
> + Exchange ex = message.getExchange();
> + Set<Endpoint> endpoints = CastUtils.cast((Set)ex.get(
> MultipleEndpointObserver.ENDPOINTS));
> +
> + Endpoint ep = selectEndpoint(message, endpoints);
> +
> + if (ep == null) {
> + return;
> + }
> +
> + ex.put(Endpoint.class, ep);
> + ex.put(Binding.class, ep.getBinding());
> + ex.put(Service.class, ep.getService());
> +
> + InterceptorChain chain = message.getInterceptorChain();
> + chain.add(ep.getInInterceptors());
> + chain.add(ep.getBinding().getInInterceptors());
> + chain.add(ep.getService().getInInterceptors());
> + }
> +
> + /**
> + * Select an Endpoint which will be used for the rest of the
> inocation.
> + *
> + * @param message
> + * @param eps
> + * @return
> + */
> + protected abstract Endpoint selectEndpoint(Message message,
> Set<Endpoint> eps);
> +}
>
> Propchange:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
>
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
>
> ------------------------------------------------------------------------------
> svn:executable = *
>
> Propchange:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractEndpointSelectionInterceptor.java
>
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
> (original)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
> Mon Apr 16 16:01:51 2007
> @@ -116,7 +116,7 @@
> }
>
> // loop through each child element
> - while (StaxUtils.toNextElement(xmlReader)) {
> + while (StaxUtils.toNextElement(xmlReader) && itr.hasNext())
> {
> MessagePartInfo part = itr.next();
> parameters.add(dr.read(part, xmlReader));
> }
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractTransportFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractTransportFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractTransportFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractTransportFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -22,8 +22,6 @@
> import java.util.List;
> import java.util.Set;
>
> -import javax.annotation.Resource;
> -
> import org.apache.cxf.helpers.CastUtils;
>
> /**
> @@ -36,7 +34,6 @@
> return transportIds;
> }
>
> - @Resource
> public void setTransportIds(List<String> transportIds) {
> this.transportIds = transportIds;
> }
>
> Modified:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
> (original)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
> Mon Apr 16 16:01:51 2007
> @@ -82,5 +82,9 @@
> exchange.setDestination(m.getDestination());
> }
> }
> +
> + public Endpoint getEndpoint() {
> + return endpoint;
> + }
>
> }
>
> Added:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java?view=auto&rev=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
> (added)
> +++
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
> Mon Apr 16 16:01:51 2007
> @@ -0,0 +1,129 @@
> +/**
> + * 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;
> +
> +import java.util.ArrayList;
> +import java.util.HashSet;
> +import java.util.List;
> +import java.util.Set;
> +
> +import org.apache.cxf.Bus;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.interceptor.Interceptor;
> +import org.apache.cxf.message.Exchange;
> +import org.apache.cxf.message.ExchangeImpl;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.phase.PhaseInterceptorChain;
> +import org.apache.cxf.phase.PhaseManager;
> +
> +/**
> + * This MessageObserver creates an Interceptor chain which adds in the
> interceptors
> + * set on this class and the global Bus interceptors. At somepoint, it is
> expected
> + * that these interceptors will resolve the appropriate Endpoint/Binding
> combination
> + * and continue setting up the chain.
> + *
> + */
> +public class MultipleEndpointObserver implements MessageObserver {
> +
> + public static final String ENDPOINTS = "
> multipleEndpointObserver.endpoints";
> +
> + protected Bus bus;
> + protected List<Interceptor> bindingInterceptors = new
> ArrayList<Interceptor>();
> + protected List<Interceptor> routingInterceptors = new
> ArrayList<Interceptor>();
> + private Set<Endpoint> endpoints = new HashSet<Endpoint>();
> +
> + public MultipleEndpointObserver(Bus bus) {
> + super();
> + this.bus = bus;
> + }
> +
> + public void onMessage(Message message) {
> + message = createMessage(message);
> + Exchange exchange = message.getExchange();
> + if (exchange == null) {
> + exchange = new ExchangeImpl();
> + exchange.setInMessage(message);
> + }
> + setExchangeProperties(exchange, message);
> +
> + // setup chain
> + PhaseInterceptorChain chain = createChain();
> +
> + message.setInterceptorChain(chain);
> +
> + chain.add(bus.getInInterceptors());
> + if (bindingInterceptors != null) {
> + chain.add(bindingInterceptors);
> + }
> + if (routingInterceptors != null) {
> + chain.add(routingInterceptors);
> + }
> +
> + if (endpoints != null) {
> + exchange.put(ENDPOINTS, endpoints);
> + }
> +
> + chain.doIntercept(message);
> + }
> +
> + /**
> + * Give a chance for a Binding to customize their message
> + */
> + protected Message createMessage(Message message) {
> + return message;
> + }
> +
> + protected PhaseInterceptorChain createChain() {
> + PhaseInterceptorChain chain = new PhaseInterceptorChain(
> bus.getExtension(PhaseManager.class)
> + .getInPhases());
> + return chain;
> + }
> +
> + protected void setExchangeProperties(Exchange exchange, Message m) {
> + exchange.put(Bus.class, bus);
> + if (exchange.getDestination() == null) {
> + exchange.setDestination(m.getDestination());
> + }
> + }
> +
> + public List<Interceptor> getBindingInterceptors() {
> + return bindingInterceptors;
> + }
> +
> + public void setBindingInterceptors(List<Interceptor>
> bindingInterceptors) {
> + this.bindingInterceptors = bindingInterceptors;
> + }
> +
> + public List<Interceptor> getRoutingInterceptors() {
> + return routingInterceptors;
> + }
> +
> + public void setRoutingInterceptors(List<Interceptor>
> routingInterceptors) {
> + this.routingInterceptors = routingInterceptors;
> + }
> +
> + public Set<Endpoint> getEndpoints() {
> + return endpoints;
> + }
> +
> + public void setEndpoints(Set<Endpoint> endpoints) {
> + this.endpoints = endpoints;
> + }
> +
> +}
>
> Propchange:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
>
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
>
> ------------------------------------------------------------------------------
> svn:executable = *
>
> Propchange:
> incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/MultipleEndpointObserver.java
>
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Modified:
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/AbstractJaxWsTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/AbstractJaxWsTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/AbstractJaxWsTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/AbstractJaxWsTest.java
> Mon Apr 16 16:01:51 2007
> @@ -42,7 +42,7 @@
> super.setUpBus();
>
> SoapBindingFactory bindingFactory = new SoapBindingFactory();
> -
> + bindingFactory.setBus(bus);
> bus.getExtension(BindingFactoryManager.class)
> .registerBindingFactory("http://schemas.xmlsoap.org/wsdl/soap/",
> bindingFactory);
> bus.getExtension(BindingFactoryManager.class)
>
> Modified:
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/holder/HolderTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/holder/HolderTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/holder/HolderTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/holder/HolderTest.java
> Mon Apr 16 16:01:51 2007
> @@ -39,7 +39,6 @@
>
> @Override
> protected Bus createBus() throws BusException {
> - // TODO Auto-generated method stub
> return new CXFBusFactory().createBus();
> }
>
>
> Modified:
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
> (original)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/AbstractEndpointFactory.java
> Mon Apr 16 16:01:51 2007
> @@ -28,6 +28,7 @@
> import org.apache.cxf.BusException;
> import org.apache.cxf.BusFactory;
> import org.apache.cxf.binding.BindingConfiguration;
> +import org.apache.cxf.binding.BindingFactory;
> import org.apache.cxf.binding.BindingFactoryManager;
> import org.apache.cxf.binding.soap.SoapBindingConfiguration;
> import org.apache.cxf.binding.soap.model.SoapBindingInfo;
> @@ -57,6 +58,7 @@
> private String transportId;
> private String bindingId;
> private Class serviceClass;
> + private BindingFactory bindingFactory;
> private DestinationFactory destinationFactory;
> private ReflectionServiceFactoryBean serviceFactory;
> private QName endpointName;
> @@ -80,10 +82,14 @@
> endpointName = serviceFactory.getEndpointName();
> }
> EndpointInfo ei = service.getEndpointInfo(endpointName);
> - if (ei != null
> - && transportId != null
> - && !ei.getTransportId().equals(transportId)) {
> - ei = null;
> + if (ei != null) {
> + if (transportId != null
> + && !ei.getTransportId().equals(transportId)) {
> + ei = null;
> + } else {
> + BindingFactoryManager bfm = getBus().getExtension(
> BindingFactoryManager.class);
> + bindingFactory = bfm.getBindingFactory(ei.getBinding
> ().getBindingId());
> + }
> }
>
> if (ei == null) {
> @@ -225,9 +231,14 @@
> if (bindingConfig == null) {
> bindingConfig = new SoapBindingConfiguration();
> }
> - ((SoapBindingConfiguration)bindingConfig).setStyle(
> serviceFactory.getStyle());
> + if (bindingConfig instanceof SoapBindingConfiguration) {
> + ((SoapBindingConfiguration)bindingConfig).setStyle(
> serviceFactory.getStyle());
> + }
> }
> - return mgr.getBindingFactory(binding).createBindingInfo(
> serviceFactory.getService(),
> +
> + bindingFactory = mgr.getBindingFactory(binding);
> +
> + return bindingFactory.createBindingInfo(
> serviceFactory.getService(),
> binding,
> bindingConfig);
> } catch (BusException ex) {
> throw new ServiceConstructionException(
> @@ -283,7 +294,6 @@
> this.serviceClass = serviceClass;
> }
>
> -
> public DestinationFactory getDestinationFactory() {
> return destinationFactory;
> }
> @@ -333,6 +343,10 @@
>
> public void setWsdlURL(String wsdlURL) {
> getServiceFactory().setWsdlURL(wsdlURL);
> + }
> +
> + public BindingFactory getBindingFactory() {
> + return bindingFactory;
> }
>
> public ConduitSelector getConduitSelector() {
>
> Modified:
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
> (original)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
> Mon Apr 16 16:01:51 2007
> @@ -29,7 +29,6 @@
> import org.apache.cxf.service.factory.ServiceConstructionException;
> import org.apache.cxf.service.invoker.BeanInvoker;
> import org.apache.cxf.service.invoker.Invoker;
> -import org.apache.cxf.transport.ChainInitiationObserver;
> import org.apache.cxf.ws.AbstractWSFeature;
>
> /**
> @@ -86,9 +85,9 @@
> server = new ServerImpl(getBus(),
> ep,
> getDestinationFactory(),
> - new ChainInitiationObserver(ep,
> getBus()));
> + getBindingFactory());
>
> - if (serviceBean != null && ep.getService().getInvoker() ==
> null) {
> + if (serviceBean != null) {
> ep.getService().setInvoker(createInvoker());
> }
>
>
> Added:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java?view=auto&rev=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
> (added)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
> Mon Apr 16 16:01:51 2007
> @@ -0,0 +1,104 @@
> +/**
> + * 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.frontend.soap;
> +
> +import org.apache.cxf.binding.soap.Soap12;
> +import org.apache.cxf.binding.soap.SoapBindingConfiguration;
> +import org.apache.cxf.endpoint.ServerImpl;
> +import org.apache.cxf.frontend.ServerFactoryBean;
> +import org.apache.cxf.interceptor.Fault;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.phase.AbstractPhaseInterceptor;
> +import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.service.factory.AbstractSimpleFrontendTest;
> +import org.apache.cxf.service.factory.HelloService;
> +import org.apache.cxf.service.factory.HelloServiceImpl;
> +import org.apache.cxf.transport.Destination;
> +import org.apache.cxf.transport.MessageObserver;
> +import org.apache.cxf.transport.MultipleEndpointObserver;
> +import org.apache.cxf.transport.local.LocalTransportFactory;
> +import org.junit.Test;
> +
> +public class SoapBindingSelectionTest extends AbstractSimpleFrontendTest
> {
> +
> + boolean service1Invoked;
> + boolean service2Invoked;
> +
> + @Test
> + public void testMultipleSoapBindings() throws Exception {
> + ServerFactoryBean svrBean1 = new ServerFactoryBean();
> + svrBean1.setAddress("http://localhost/Hello");
> + svrBean1.setServiceClass(HelloService.class);
> + svrBean1.setServiceBean(new HelloServiceImpl());
> + svrBean1.setBus(getBus());
> + svrBean1.getInInterceptors().add(new
> AbstractPhaseInterceptor<Message>() {
> + @Override
> + public String getPhase() {
> + return Phase.USER_LOGICAL;
> + }
> +
> + public void handleMessage(Message message) throws Fault {
> + service1Invoked = true;
> + }
> + });
> + svrBean1.create();
> +
> + ServerFactoryBean svrBean2 = new ServerFactoryBean();
> + svrBean2.setAddress("http://localhost/Hello");
> + svrBean2.setServiceClass(HelloService.class);
> + svrBean2.setServiceBean(new HelloServiceImpl());
> + svrBean2.setBus(getBus());
> + svrBean2.getInInterceptors().add(new
> AbstractPhaseInterceptor<Message>() {
> + @Override
> + public String getPhase() {
> + return Phase.USER_LOGICAL;
> + }
> +
> + public void handleMessage(Message message) throws Fault {
> + service2Invoked = true;
> + }
> + });
> +
> + SoapBindingConfiguration config = new SoapBindingConfiguration();
> + config.setVersion(Soap12.getInstance());
> + svrBean2.setBindingConfig(config);
> +
> + ServerImpl server2 = (ServerImpl)svrBean2.create();
> +
> + Destination d = server2.getDestination();
> + MessageObserver mo = d.getMessageObserver();
> + assertTrue(mo instanceof MultipleEndpointObserver);
> +
> + MultipleEndpointObserver meo = (MultipleEndpointObserver) mo;
> + assertEquals(2, meo.getEndpoints().size());
> +
> + invoke("http://localhost/Hello",
> LocalTransportFactory.TRANSPORT_ID, "soap11.xml");
> +
> + assertTrue(service1Invoked);
> + assertFalse(service2Invoked);
> +
> + service1Invoked = false;
> +
> + invoke("http://localhost/Hello",
> LocalTransportFactory.TRANSPORT_ID, "soap12.xml");
> +
> + assertFalse(service1Invoked);
> + assertTrue(service2Invoked);
> + }
> +
> +}
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
>
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
>
> ------------------------------------------------------------------------------
> svn:executable = *
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/SoapBindingSelectionTest.java
>
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Added:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml?view=auto&rev=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
> (added)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
> Mon Apr 16 16:01:51 2007
> @@ -0,0 +1,12 @@
> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> + <soap:Body>
> + <sayHello
> + xmlns="http://factory.service.cxf.apache.org/">
> + <ns2:arg0
> + xmlns:ns2="
> http://factory.service.cxf.apache.org/"
> + xmlns="
> http://www.w3.org/2005/08/addressing/wsdl">
> + hello
> + </ns2:arg0>
> + </sayHello>
> + </soap:Body>
> +</soap:Envelope>
> \ No newline at end of file
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
>
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
>
> ------------------------------------------------------------------------------
> svn:executable = *
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
>
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap11.xml
>
> ------------------------------------------------------------------------------
> svn:mime-type = text/xml
>
> Added:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml?view=auto&rev=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
> (added)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
> Mon Apr 16 16:01:51 2007
> @@ -0,0 +1,12 @@
> +<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
> + <soap:Body>
> + <sayHello
> + xmlns="http://factory.service.cxf.apache.org/">
> + <ns2:arg0
> + xmlns:ns2="
> http://factory.service.cxf.apache.org/"
> + xmlns="
> http://www.w3.org/2005/08/addressing/wsdl">
> + hello
> + </ns2:arg0>
> + </sayHello>
> + </soap:Body>
> +</soap:Envelope>
> \ No newline at end of file
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
>
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
>
> ------------------------------------------------------------------------------
> svn:executable = *
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
>
> ------------------------------------------------------------------------------
> svn:keywords = Rev Date
>
> Propchange:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/frontend/soap/soap12.xml
>
> ------------------------------------------------------------------------------
> svn:mime-type = text/xml
>
> Modified:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/RountripTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/RountripTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/RountripTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/RountripTest.java
> Mon Apr 16 16:01:51 2007
> @@ -44,7 +44,8 @@
> clientBean.setTransportId("http://schemas.xmlsoap.org/soap/http");
> clientBean.setServiceClass(HelloService.class);
> clientBean.setBus(getBus());
> -
> + clientBean.getInInterceptors().add(new LoggingInInterceptor());
> +
> HelloService client = (HelloService) proxyFactory.create();
>
> ClientImpl c = (ClientImpl) clientBean.getClient();
>
> Modified:
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ServerFactoryTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ServerFactoryTest.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ServerFactoryTest.java
> (original)
> +++
> incubator/cxf/trunk/rt/frontend/simple/src/test/java/org/apache/cxf/service/factory/ServerFactoryTest.java
> Mon Apr 16 16:01:51 2007
> @@ -87,5 +87,10 @@
>
> }
>
> + public MessageObserver getMessageObserver() {
> + // TODO Auto-generated method stub
> + return null;
> + }
> +
> }
> }
>
> Modified:
> incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
> (original)
> +++
> incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
> Mon Apr 16 16:01:51 2007
> @@ -413,7 +413,7 @@
> decoupledMessageObserver = observer;
> }
>
> - protected synchronized MessageObserver getMessageObserver() {
> + public synchronized MessageObserver getMessageObserver() {
> return decoupledMessageObserver;
> }
> }
>
> Modified:
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/Server.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/Server.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/Server.java
> (original)
> +++
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/Server.java
> Mon Apr 16 16:01:51 2007
> @@ -19,24 +19,12 @@
>
> package org.apache.cxf.systest.mtom;
>
> -import javax.xml.namespace.QName;
> import javax.xml.ws.soap.SOAPBinding;
>
> -import org.apache.cxf.Bus;
> -import org.apache.cxf.BusFactory;
> -import org.apache.cxf.endpoint.ServerImpl;
> -import org.apache.cxf.jaxws.JAXWSMethodInvoker;
> -import org.apache.cxf.jaxws.binding.soap.SOAPBindingImpl;
> -import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
> -import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
> -import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.jaxws.EndpointImpl;
> import org.apache.cxf.mtom_xop.TestMtomImpl;
> -import org.apache.cxf.service.Service;
> -import org.apache.cxf.service.factory.AbstractServiceFactoryBean;
> -import org.apache.cxf.service.model.EndpointInfo;
> import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
> -import org.apache.cxf.transport.ChainInitiationObserver;
> -import org.apache.cxf.transport.MessageObserver;
>
> public class Server extends AbstractBusTestServerBase {
>
> @@ -44,25 +32,14 @@
> Object implementor = new TestMtomImpl();
> String address = "http://localhost:9036/mime-test";
> try {
> - Bus bus = BusFactory.getDefaultBus();
> - JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(
> implementor.getClass());
> - AbstractServiceFactoryBean serviceFactory = new
> JaxWsServiceFactoryBean(implInfo);
> - serviceFactory.setBus(bus);
> - Service service = serviceFactory.create();
> - QName endpointName = implInfo.getEndpointName();
> - EndpointInfo ei = service.getEndpointInfo(endpointName);
> - service.setInvoker(new JAXWSMethodInvoker(implementor));
> - org.apache.cxf.endpoint.EndpointImpl endpoint = new
> JaxWsEndpointImpl(bus, service, ei);
> - SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(
> ei.getBinding());
> + EndpointImpl jaxep = (EndpointImpl)
> javax.xml.ws.Endpoint.publish(address, implementor);
> + Endpoint ep = jaxep.getServer().getEndpoint();
> + ep.getInInterceptors().add(new
> TestMultipartMessageInterceptor());
> + ep.getOutInterceptors().add(new
> TestAttachmentOutInterceptor());
> +
> + SOAPBinding jaxWsSoapBinding = (SOAPBinding) jaxep.getBinding
> ();
> jaxWsSoapBinding.setMTOMEnabled(true);
>
> - endpoint.getInInterceptors().add(new
> TestMultipartMessageInterceptor());
> - endpoint.getOutInterceptors().add(new
> TestAttachmentOutInterceptor());
> -
> - endpoint.getEndpointInfo().setAddress(address);
> - MessageObserver observer = new
> ChainInitiationObserver(endpoint, bus);
> - ServerImpl server = new ServerImpl(bus, endpoint, observer);
> - server.start();
> } catch (Exception e) {
> Thread.currentThread().interrupt();
> }
>
> Modified:
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/versioning/MediatorInInterceptor.java
> URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/versioning/MediatorInInterceptor.java?view=diff&rev=529436&r1=529435&r2=529436
>
> ==============================================================================
> ---
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/versioning/MediatorInInterceptor.java
> (original)
> +++
> incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/versioning/MediatorInInterceptor.java
> Mon Apr 16 16:01:51 2007
> @@ -19,34 +19,20 @@
>
> package org.apache.cxf.systest.versioning;
>
> -import java.io.BufferedInputStream;
> -import java.io.IOException;
> -import java.io.InputStream;
> -import java.util.List;
> +import java.util.Set;
>
> -import javax.xml.stream.XMLInputFactory;
> -import javax.xml.stream.XMLStreamConstants;
> import javax.xml.stream.XMLStreamException;
> import javax.xml.stream.XMLStreamReader;
>
> -import org.apache.cxf.Bus;
> -import org.apache.cxf.binding.soap.SoapMessage;
> -import org.apache.cxf.binding.soap.SoapVersion;
> -import org.apache.cxf.binding.soap.SoapVersionFactory;
> -import org.apache.cxf.bus.CXFBusFactory;
> -import org.apache.cxf.endpoint.Server;
> -import org.apache.cxf.endpoint.ServerRegistry;
> -import org.apache.cxf.interceptor.InterceptorChain;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.interceptor.AbstractEndpointSelectionInterceptor;
> +import org.apache.cxf.interceptor.Fault;
> import org.apache.cxf.interceptor.StaxInInterceptor;
> import org.apache.cxf.message.Message;
> -import org.apache.cxf.phase.AbstractPhaseInterceptor;
> import org.apache.cxf.phase.Phase;
> -import org.apache.cxf.staxutils.DepthXMLStreamReader;
> -import org.apache.cxf.staxutils.StaxUtils;
> -import org.apache.cxf.transport.MessageObserver;
>
>
> -public class MediatorInInterceptor extends
> AbstractPhaseInterceptor<SoapMessage> {
> +public class MediatorInInterceptor extends
> AbstractEndpointSelectionInterceptor {
>
> public MediatorInInterceptor() {
> super();
> @@ -54,68 +40,36 @@
> addBefore(StaxInInterceptor.class.getName());
> }
>
> - public void handleMessage(SoapMessage message) {
> - String schemaNamespace = "";
> - InterceptorChain chain = message.getInterceptorChain();
> -
> - //scan the incoming message for its schema namespace
> - try {
> - //create a buffered stream so that we get back the original
> stream after scaning
> - InputStream is = message.getContent(InputStream.class);
> - BufferedInputStream pis = new BufferedInputStream(is);
> - pis.mark(pis.available());
> - message.setContent(InputStream.class, pis);
> -
> - //TODO: process attachements
> -
> - String encoding = (String)message.get(Message.ENCODING);
> - XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(pis,
> encoding);
> - DepthXMLStreamReader xmlReader = new
> DepthXMLStreamReader(reader);
> -
> - if (xmlReader.nextTag() == XMLStreamConstants.START_ELEMENT)
> {
> - String ns = xmlReader.getNamespaceURI();
> - SoapVersion soapVersion = SoapVersionFactory.getInstance
> ().getSoapVersion(ns);
> - //advance just past header
> - StaxUtils.toNextTag(xmlReader, soapVersion.getBody());
> - //past body.
> - xmlReader.nextTag();
> + @Override
> + protected Endpoint selectEndpoint(Message message, Set<Endpoint> eps)
> {
> + XMLStreamReader xsr = message.getContent(XMLStreamReader.class);
> + if (!xsr.isStartElement()) {
> + try {
> + xsr.nextTag();
> + } catch (XMLStreamException e) {
> + throw new Fault(e);
> }
> -
> - schemaNamespace = xmlReader.getName().getNamespaceURI();
> -
> - pis.reset();
> - } catch (IOException e) {
> - e.printStackTrace();
> - } catch (XMLStreamException e) {
> - e.printStackTrace();
> }
> -
> - //Look up for all available endpoints registered on the bus
> - Bus bus = CXFBusFactory.getDefaultBus();
> - ServerRegistry serverRegistry = bus.getExtension(
> ServerRegistry.class);
> - List<Server> servers = serverRegistry.getServers();
> -
> +
> + if (!xsr.isStartElement()) {
> + return null;
> + }
> +
> + String schemaNamespace = xsr.getNamespaceURI();
> +
> //if the incoming message has a namespace contained "2007/03/21",
> we redirect the message
> //to the new version of service on endpoint
> "local://localhost:9027/SoapContext/version2/SoapPort"
> - Server targetServer = null;
> - for (Server server : servers) {
> - targetServer = server;
> - String address = server.getEndpoint
> ().getEndpointInfo().getAddress();
> + for (Endpoint ep : eps) {
> if (schemaNamespace.indexOf("2007/03/21") != -1) {
> - if (address.indexOf("version2") != -1) {
> - break;
> + if ("2".equals(ep.get("version"))) {
> + return ep;
> }
> - } else if (address.indexOf("version1") != -1) {
> - break;
> + } else if ("1".equals(ep.get("version"))) {
> + return ep;
> }
> }
>
> - //Redirect the request
> - MessageObserver mo = targetServer.getMessageObserver();
> - mo.onMessage(message);
> -
> - //Now the response has been put in the message, abort the chain
> - chain.abort();
> + return null;
> }
>
> }
>
>
>
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by William Tam <em...@gmail.com>.
The reason I have my own observer is to forward messages to an external
routing engine. Yes, I used to set my observer in ServerImpl.
- William
On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
>
> Hi William,
>
> Mind if I ask a few questions first? I think there are some cases where
> you
> probably do want to specify your own MessageObserver, but this seems
> opposed
> to the goal of letting a binding manage how endpoint resolution happens. I
> would like to unify the two better though - so maybe you can help me
> figure
> that out :-)
>
> Why are you specifying a different messageobserver?
>
> Where were you previously specifying your own messageobserver -
> ServerImpl?
>
> Thanks
> - Dan
>
> On 4/17/07, William Tam <em...@gmail.com> wrote:
> >
> > Hi Dan,
> >
> > Is it possible to specific my own MessageObserver rather than using the
> > default "ChainInitiationObserver"? Prior to this change, I could name
> my
> > MessageObserver in the constructor of ServerImpl(). I could no longer
> do
> > that. The MessageObserver is now hardcorded in
> > AbstractBindingFactory.addListener(). It is not possible for me to
> > override
> > it because I don't have control over the BindingFactories.
> >
> > Thanks,
> > William
> >
> >
> >
> --
> Dan Diephouse
> Envoi Solutions
> http://envoisolutions.com | http://netzooid.com/blog
>
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by William Tam <em...@gmail.com>.
Sounds good. Thanks!
On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
>
> Alright, I think what I'll do is restore the ability to supply your own
> MessageObserver. If no MessageObserver is supplied we'll let the binding
> create one. This will give the Binding a chance to set up a chain for
> scenarios where we don't know the endpoint ahead of time, and allow people
> to override this.
>
> That sound good?
>
> - Dan
>
> On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> >
> > I have just found a work around:
> >
> > server = new ServerImpl(getBus(), ep, null, new
> > AbstractBindingFactory() {
> > public Binding createBinding(BindingInfo binding) {
> > return null;
> > }
> > public void addListener(Destination d, Endpoint e) {
> > d.setMessageObserver(chain);
> > }
> > });
> >
> > where chain is a previously created ChainInitiationObserver.
> > Thought it seems a bit weird ;-)
> >
> > On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> > >
> > > Same question here :-)
> > > I used my own MessageObserver to set up some properties on the message
> > > before launching the interceptor chain...
> > > Btw, how can I retrieve the BindingFactory ?
> > >
> > > On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
> > > >
> > > > Hi William,
> > > >
> > > > Mind if I ask a few questions first? I think there are some cases
> > where
> > > > you
> > > > probably do want to specify your own MessageObserver, but this seems
> > > > opposed
> > > > to the goal of letting a binding manage how endpoint resolution
> > happens.
> > > > I
> > > > would like to unify the two better though - so maybe you can help me
> > > > figure
> > > > that out :-)
> > > >
> > > > Why are you specifying a different messageobserver?
> > > >
> > > > Where were you previously specifying your own messageobserver -
> > > > ServerImpl?
> > > >
> > > > Thanks
> > > > - Dan
> > > >
> > > > On 4/17/07, William Tam <em...@gmail.com> wrote:
> > > > >
> > > > > Hi Dan,
> > > > >
> > > > > Is it possible to specific my own MessageObserver rather than
> using
> > > > the
> > > > > default "ChainInitiationObserver"? Prior to this change, I could
> > name
> > > > my
> > > > > MessageObserver in the constructor of ServerImpl(). I could no
> > longer
> > > > do
> > > > > that. The MessageObserver is now hardcorded in
> > > > > AbstractBindingFactory.addListener(). It is not possible for me
> to
> > > > > override
> > > > > it because I don't have control over the BindingFactories.
> > > > >
> > > > > Thanks,
> > > > > William
> > > > >
> > > > >
> > > > >
> > > > --
> > > > Dan Diephouse
> > > > Envoi Solutions
> > > > http://envoisolutions.com | http://netzooid.com/blog
> > > >
> > >
> > >
> > >
> > > --
> > > Cheers,
> > > Guillaume Nodet
> > > ------------------------
> > > Principal Engineer, IONA
> > > Blog: http://gnodet.blogspot.com/
> >
> >
> >
> >
> > --
> > Cheers,
> > Guillaume Nodet
> > ------------------------
> > Principal Engineer, IONA
> > Blog: http://gnodet.blogspot.com/
> >
>
>
>
> --
> Dan Diephouse
> Envoi Solutions
> http://envoisolutions.com | http://netzooid.com/blog
>
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by Guillaume Nodet <gn...@gmail.com>.
I have added the constructor with a MessageObserver back.
On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
>
> Alright, I think what I'll do is restore the ability to supply your own
> MessageObserver. If no MessageObserver is supplied we'll let the binding
> create one. This will give the Binding a chance to set up a chain for
> scenarios where we don't know the endpoint ahead of time, and allow people
> to override this.
>
> That sound good?
>
> - Dan
>
> On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> >
> > I have just found a work around:
> >
> > server = new ServerImpl(getBus(), ep, null, new
> > AbstractBindingFactory() {
> > public Binding createBinding(BindingInfo binding) {
> > return null;
> > }
> > public void addListener(Destination d, Endpoint e) {
> > d.setMessageObserver(chain);
> > }
> > });
> >
> > where chain is a previously created ChainInitiationObserver.
> > Thought it seems a bit weird ;-)
> >
> > On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> > >
> > > Same question here :-)
> > > I used my own MessageObserver to set up some properties on the message
> > > before launching the interceptor chain...
> > > Btw, how can I retrieve the BindingFactory ?
> > >
> > > On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
> > > >
> > > > Hi William,
> > > >
> > > > Mind if I ask a few questions first? I think there are some cases
> > where
> > > > you
> > > > probably do want to specify your own MessageObserver, but this seems
> > > > opposed
> > > > to the goal of letting a binding manage how endpoint resolution
> > happens.
> > > > I
> > > > would like to unify the two better though - so maybe you can help me
> > > > figure
> > > > that out :-)
> > > >
> > > > Why are you specifying a different messageobserver?
> > > >
> > > > Where were you previously specifying your own messageobserver -
> > > > ServerImpl?
> > > >
> > > > Thanks
> > > > - Dan
> > > >
> > > > On 4/17/07, William Tam <em...@gmail.com> wrote:
> > > > >
> > > > > Hi Dan,
> > > > >
> > > > > Is it possible to specific my own MessageObserver rather than
> using
> > > > the
> > > > > default "ChainInitiationObserver"? Prior to this change, I could
> > name
> > > > my
> > > > > MessageObserver in the constructor of ServerImpl(). I could no
> > longer
> > > > do
> > > > > that. The MessageObserver is now hardcorded in
> > > > > AbstractBindingFactory.addListener(). It is not possible for me
> to
> > > > > override
> > > > > it because I don't have control over the BindingFactories.
> > > > >
> > > > > Thanks,
> > > > > William
> > > > >
> > > > >
> > > > >
> > > > --
> > > > Dan Diephouse
> > > > Envoi Solutions
> > > > http://envoisolutions.com | http://netzooid.com/blog
> > > >
> > >
> > >
> > >
> > > --
> > > Cheers,
> > > Guillaume Nodet
> > > ------------------------
> > > Principal Engineer, IONA
> > > Blog: http://gnodet.blogspot.com/
> >
> >
> >
> >
> > --
> > Cheers,
> > Guillaume Nodet
> > ------------------------
> > Principal Engineer, IONA
> > Blog: http://gnodet.blogspot.com/
> >
>
>
>
> --
> Dan Diephouse
> Envoi Solutions
> http://envoisolutions.com | http://netzooid.com/blog
>
--
Cheers,
Guillaume Nodet
------------------------
Principal Engineer, IONA
Blog: http://gnodet.blogspot.com/
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by Dan Diephouse <da...@envoisolutions.com>.
Alright, I think what I'll do is restore the ability to supply your own
MessageObserver. If no MessageObserver is supplied we'll let the binding
create one. This will give the Binding a chance to set up a chain for
scenarios where we don't know the endpoint ahead of time, and allow people
to override this.
That sound good?
- Dan
On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
>
> I have just found a work around:
>
> server = new ServerImpl(getBus(), ep, null, new
> AbstractBindingFactory() {
> public Binding createBinding(BindingInfo binding) {
> return null;
> }
> public void addListener(Destination d, Endpoint e) {
> d.setMessageObserver(chain);
> }
> });
>
> where chain is a previously created ChainInitiationObserver.
> Thought it seems a bit weird ;-)
>
> On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> >
> > Same question here :-)
> > I used my own MessageObserver to set up some properties on the message
> > before launching the interceptor chain...
> > Btw, how can I retrieve the BindingFactory ?
> >
> > On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
> > >
> > > Hi William,
> > >
> > > Mind if I ask a few questions first? I think there are some cases
> where
> > > you
> > > probably do want to specify your own MessageObserver, but this seems
> > > opposed
> > > to the goal of letting a binding manage how endpoint resolution
> happens.
> > > I
> > > would like to unify the two better though - so maybe you can help me
> > > figure
> > > that out :-)
> > >
> > > Why are you specifying a different messageobserver?
> > >
> > > Where were you previously specifying your own messageobserver -
> > > ServerImpl?
> > >
> > > Thanks
> > > - Dan
> > >
> > > On 4/17/07, William Tam <em...@gmail.com> wrote:
> > > >
> > > > Hi Dan,
> > > >
> > > > Is it possible to specific my own MessageObserver rather than using
> > > the
> > > > default "ChainInitiationObserver"? Prior to this change, I could
> name
> > > my
> > > > MessageObserver in the constructor of ServerImpl(). I could no
> longer
> > > do
> > > > that. The MessageObserver is now hardcorded in
> > > > AbstractBindingFactory.addListener(). It is not possible for me to
> > > > override
> > > > it because I don't have control over the BindingFactories.
> > > >
> > > > Thanks,
> > > > William
> > > >
> > > >
> > > >
> > > --
> > > Dan Diephouse
> > > Envoi Solutions
> > > http://envoisolutions.com | http://netzooid.com/blog
> > >
> >
> >
> >
> > --
> > Cheers,
> > Guillaume Nodet
> > ------------------------
> > Principal Engineer, IONA
> > Blog: http://gnodet.blogspot.com/
>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Principal Engineer, IONA
> Blog: http://gnodet.blogspot.com/
>
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by Dan Diephouse <da...@envoisolutions.com>.
The ChainInitiatorObserver isn't created until you call start() right now.
Obviously this could be improved though so you could supply your own :-) I
will fix this up later today.
- Dan
On 4/17/07, William Tam <em...@gmail.com> wrote:
>
> Hi Guillaume,
>
> Thanks for the workaround. Similarly, something like this might work,
> too.
>
> server = new ServerImpl(getBus(), ep, df, bf);
> server.getDestination().setMessageObserver(myObserver);
>
> yeah, it would be nice if ChainInitiationObserver has never been created.
>
> - William
>
> On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> >
> > I have just found a work around:
> >
> > server = new ServerImpl(getBus(), ep, null, new
> > AbstractBindingFactory() {
> > public Binding createBinding(BindingInfo binding) {
> > return null;
> > }
> > public void addListener(Destination d, Endpoint e) {
> > d.setMessageObserver(chain);
> > }
> > });
> >
> > where chain is a previously created ChainInitiationObserver.
> > Thought it seems a bit weird ;-)
> >
> > On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> > >
> > > Same question here :-)
> > > I used my own MessageObserver to set up some properties on the message
> > > before launching the interceptor chain...
> > > Btw, how can I retrieve the BindingFactory ?
> > >
> > > On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
> > > >
> > > > Hi William,
> > > >
> > > > Mind if I ask a few questions first? I think there are some cases
> > where
> > > > you
> > > > probably do want to specify your own MessageObserver, but this seems
> > > > opposed
> > > > to the goal of letting a binding manage how endpoint resolution
> > happens.
> > > > I
> > > > would like to unify the two better though - so maybe you can help me
> > > > figure
> > > > that out :-)
> > > >
> > > > Why are you specifying a different messageobserver?
> > > >
> > > > Where were you previously specifying your own messageobserver -
> > > > ServerImpl?
> > > >
> > > > Thanks
> > > > - Dan
> > > >
> > > > On 4/17/07, William Tam <em...@gmail.com> wrote:
> > > > >
> > > > > Hi Dan,
> > > > >
> > > > > Is it possible to specific my own MessageObserver rather than
> using
> > > > the
> > > > > default "ChainInitiationObserver"? Prior to this change, I could
> > name
> > > > my
> > > > > MessageObserver in the constructor of ServerImpl(). I could no
> > longer
> > > > do
> > > > > that. The MessageObserver is now hardcorded in
> > > > > AbstractBindingFactory.addListener(). It is not possible for me
> to
> > > > > override
> > > > > it because I don't have control over the BindingFactories.
> > > > >
> > > > > Thanks,
> > > > > William
> > > > >
> > > > >
> > > > >
> > > > --
> > > > Dan Diephouse
> > > > Envoi Solutions
> > > > http://envoisolutions.com | http://netzooid.com/blog
> > > >
> > >
> > >
> > >
> > > --
> > > Cheers,
> > > Guillaume Nodet
> > > ------------------------
> > > Principal Engineer, IONA
> > > Blog: http://gnodet.blogspot.com/
> >
> >
> >
> >
> > --
> > Cheers,
> > Guillaume Nodet
> > ------------------------
> > Principal Engineer, IONA
> > Blog: http://gnodet.blogspot.com/
> >
>
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by William Tam <em...@gmail.com>.
Hi Guillaume,
Thanks for the workaround. Similarly, something like this might work, too.
server = new ServerImpl(getBus(), ep, df, bf);
server.getDestination().setMessageObserver(myObserver);
yeah, it would be nice if ChainInitiationObserver has never been created.
- William
On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
>
> I have just found a work around:
>
> server = new ServerImpl(getBus(), ep, null, new
> AbstractBindingFactory() {
> public Binding createBinding(BindingInfo binding) {
> return null;
> }
> public void addListener(Destination d, Endpoint e) {
> d.setMessageObserver(chain);
> }
> });
>
> where chain is a previously created ChainInitiationObserver.
> Thought it seems a bit weird ;-)
>
> On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
> >
> > Same question here :-)
> > I used my own MessageObserver to set up some properties on the message
> > before launching the interceptor chain...
> > Btw, how can I retrieve the BindingFactory ?
> >
> > On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
> > >
> > > Hi William,
> > >
> > > Mind if I ask a few questions first? I think there are some cases
> where
> > > you
> > > probably do want to specify your own MessageObserver, but this seems
> > > opposed
> > > to the goal of letting a binding manage how endpoint resolution
> happens.
> > > I
> > > would like to unify the two better though - so maybe you can help me
> > > figure
> > > that out :-)
> > >
> > > Why are you specifying a different messageobserver?
> > >
> > > Where were you previously specifying your own messageobserver -
> > > ServerImpl?
> > >
> > > Thanks
> > > - Dan
> > >
> > > On 4/17/07, William Tam <em...@gmail.com> wrote:
> > > >
> > > > Hi Dan,
> > > >
> > > > Is it possible to specific my own MessageObserver rather than using
> > > the
> > > > default "ChainInitiationObserver"? Prior to this change, I could
> name
> > > my
> > > > MessageObserver in the constructor of ServerImpl(). I could no
> longer
> > > do
> > > > that. The MessageObserver is now hardcorded in
> > > > AbstractBindingFactory.addListener(). It is not possible for me to
> > > > override
> > > > it because I don't have control over the BindingFactories.
> > > >
> > > > Thanks,
> > > > William
> > > >
> > > >
> > > >
> > > --
> > > Dan Diephouse
> > > Envoi Solutions
> > > http://envoisolutions.com | http://netzooid.com/blog
> > >
> >
> >
> >
> > --
> > Cheers,
> > Guillaume Nodet
> > ------------------------
> > Principal Engineer, IONA
> > Blog: http://gnodet.blogspot.com/
>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Principal Engineer, IONA
> Blog: http://gnodet.blogspot.com/
>
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by Guillaume Nodet <gn...@gmail.com>.
I have just found a work around:
server = new ServerImpl(getBus(), ep, null, new
AbstractBindingFactory() {
public Binding createBinding(BindingInfo binding) {
return null;
}
public void addListener(Destination d, Endpoint e) {
d.setMessageObserver(chain);
}
});
where chain is a previously created ChainInitiationObserver.
Thought it seems a bit weird ;-)
On 4/17/07, Guillaume Nodet <gn...@gmail.com> wrote:
>
> Same question here :-)
> I used my own MessageObserver to set up some properties on the message
> before launching the interceptor chain...
> Btw, how can I retrieve the BindingFactory ?
>
> On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
> >
> > Hi William,
> >
> > Mind if I ask a few questions first? I think there are some cases where
> > you
> > probably do want to specify your own MessageObserver, but this seems
> > opposed
> > to the goal of letting a binding manage how endpoint resolution happens.
> > I
> > would like to unify the two better though - so maybe you can help me
> > figure
> > that out :-)
> >
> > Why are you specifying a different messageobserver?
> >
> > Where were you previously specifying your own messageobserver -
> > ServerImpl?
> >
> > Thanks
> > - Dan
> >
> > On 4/17/07, William Tam <em...@gmail.com> wrote:
> > >
> > > Hi Dan,
> > >
> > > Is it possible to specific my own MessageObserver rather than using
> > the
> > > default "ChainInitiationObserver"? Prior to this change, I could name
> > my
> > > MessageObserver in the constructor of ServerImpl(). I could no longer
> > do
> > > that. The MessageObserver is now hardcorded in
> > > AbstractBindingFactory.addListener(). It is not possible for me to
> > > override
> > > it because I don't have control over the BindingFactories.
> > >
> > > Thanks,
> > > William
> > >
> > >
> > >
> > --
> > Dan Diephouse
> > Envoi Solutions
> > http://envoisolutions.com | http://netzooid.com/blog
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Principal Engineer, IONA
> Blog: http://gnodet.blogspot.com/
--
Cheers,
Guillaume Nodet
------------------------
Principal Engineer, IONA
Blog: http://gnodet.blogspot.com/
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by Guillaume Nodet <gn...@gmail.com>.
Same question here :-)
I used my own MessageObserver to set up some properties on the message
before launching the interceptor chain...
Btw, how can I retrieve the BindingFactory ?
On 4/17/07, Dan Diephouse <da...@envoisolutions.com> wrote:
>
> Hi William,
>
> Mind if I ask a few questions first? I think there are some cases where
> you
> probably do want to specify your own MessageObserver, but this seems
> opposed
> to the goal of letting a binding manage how endpoint resolution happens. I
> would like to unify the two better though - so maybe you can help me
> figure
> that out :-)
>
> Why are you specifying a different messageobserver?
>
> Where were you previously specifying your own messageobserver -
> ServerImpl?
>
> Thanks
> - Dan
>
> On 4/17/07, William Tam <em...@gmail.com> wrote:
> >
> > Hi Dan,
> >
> > Is it possible to specific my own MessageObserver rather than using the
> > default "ChainInitiationObserver"? Prior to this change, I could name
> my
> > MessageObserver in the constructor of ServerImpl(). I could no longer
> do
> > that. The MessageObserver is now hardcorded in
> > AbstractBindingFactory.addListener(). It is not possible for me to
> > override
> > it because I don't have control over the BindingFactories.
> >
> > Thanks,
> > William
> >
> >
> >
> --
> Dan Diephouse
> Envoi Solutions
> http://envoisolutions.com | http://netzooid.com/blog
>
--
Cheers,
Guillaume Nodet
------------------------
Principal Engineer, IONA
Blog: http://gnodet.blogspot.com/
Re: svn commit: r529436 [1/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/binding/ api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/interceptor/ api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/
Posted by Dan Diephouse <da...@envoisolutions.com>.
Hi William,
Mind if I ask a few questions first? I think there are some cases where you
probably do want to specify your own MessageObserver, but this seems opposed
to the goal of letting a binding manage how endpoint resolution happens. I
would like to unify the two better though - so maybe you can help me figure
that out :-)
Why are you specifying a different messageobserver?
Where were you previously specifying your own messageobserver - ServerImpl?
Thanks
- Dan
On 4/17/07, William Tam <em...@gmail.com> wrote:
>
> Hi Dan,
>
> Is it possible to specific my own MessageObserver rather than using the
> default "ChainInitiationObserver"? Prior to this change, I could name my
> MessageObserver in the constructor of ServerImpl(). I could no longer do
> that. The MessageObserver is now hardcorded in
> AbstractBindingFactory.addListener(). It is not possible for me to
> override
> it because I don't have control over the BindingFactories.
>
> Thanks,
> William
>
>
>
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog