Return-Path: Delivered-To: apmail-incubator-cxf-dev-archive@locus.apache.org Received: (qmail 66764 invoked from network); 17 Apr 2007 15:57:25 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 17 Apr 2007 15:57:25 -0000 Received: (qmail 78021 invoked by uid 500); 17 Apr 2007 15:57:26 -0000 Delivered-To: apmail-incubator-cxf-dev-archive@incubator.apache.org Received: (qmail 77943 invoked by uid 500); 17 Apr 2007 15:57:26 -0000 Mailing-List: contact cxf-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cxf-dev@incubator.apache.org Delivered-To: mailing list cxf-dev@incubator.apache.org Received: (qmail 77863 invoked by uid 99); 17 Apr 2007 15:57:25 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Apr 2007 08:57:25 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of email.wtam@gmail.com designates 64.233.166.177 as permitted sender) Received: from [64.233.166.177] (HELO py-out-1112.google.com) (64.233.166.177) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Apr 2007 08:57:13 -0700 Received: by py-out-1112.google.com with SMTP id p76so1508088pyb for ; Tue, 17 Apr 2007 08:56:52 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; b=TjaNMZv9rhzLVBRGMg8MBNxlqIyhcFdPmd6yu6HF31e3RScXXFbUhkAUcHtTccTmTCudThF80Cr2UGab9Liz+E6nvqCtp9QlmIpszHj2eOb//Pfk/3hGBqvDytX28M7ONsBOoi6rOQLn4Tp/rUm+G91szXQyylZCpC0tCv5WGbY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type; b=mRROv8MhotI922JvRTnwddoEzeVhTxX63G12oAYl5Oqbbe1rmhQq6HRj9lXaEZCy9xAF1NfN2+JYYn2a0VBpXoCh/Eu3cR1TpS6y5YsAl3Bl0m9QpMLb+Or50DPQGbCF6hqdeyFsz3jjGd2H/QNhE1fqUp0YFWim4sasVAftTYM= Received: by 10.65.242.10 with SMTP id u10mr15010714qbr.1176825411315; Tue, 17 Apr 2007 08:56:51 -0700 (PDT) Received: by 10.65.254.15 with HTTP; Tue, 17 Apr 2007 08:56:51 -0700 (PDT) Message-ID: Date: Tue, 17 Apr 2007 11:56:51 -0400 From: "William Tam" To: cxf-dev@incubator.apache.org Subject: 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/ MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_7197_18394030.1176825411164" X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_7197_18394030.1176825411164 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline 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 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 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 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 > implements PhaseInterceptor { > @@ -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 newhandlers) { > + public void add(Collection newhandlers) { > add(newhandlers, false); > } > > - public void add(List newhandlers, boolean force) { > + public void add(Collection 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 activationNamespaces; > private List strategies = new > ArrayList(); > > public HttpBindingFactory() { > strategies.add(new JRAStrategy()); > strategies.add(new ConventionStrategy()); > } > - > - @Resource(name = "activationNamespaces") > - public void setActivationNamespaces(Collection ans) { > - activationNamespaces = ans; > - } > - > - public Collection 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 activationNamespaces; > - private Bus bus; > private boolean autoRegisterLocalEndpoint; > private boolean initialized = true; > private LocalServerListener listener; > > - public Collection getActivationNamespaces() { > - return activationNamespaces; > - } > - > - @Resource(name = "activationNamespaces") > - public void setActivationNamespaces(Collection 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 activationNamespaces; > - > - public Collection getActivationNamespaces() { > - return activationNamespaces; > - } > - > - @Resource(name = "activationNamespaces") > - public void setActivationNamespaces(Collection 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 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 @@ > http://schemas.xmlsoap.org/wsdl/soap12/ > > > + > > > 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 activationNamespaces; > - > - @Resource(name = "activationNamespaces") > - public void setActivationNamespaces(Collection ans) { > - activationNamespaces = ans; > - } > - > - public Collection 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 @@ > http://www.w3.org/2004/08/wsdl/http > > > + > > > > > 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 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 getActivationNamespaces() { > + return activationNamespaces; > + } > + > + @Resource(name = "activationNamespaces") > + public void setActivationNamespaces(Collection > 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 { > + > + public AbstractEndpointSelectionInterceptor() { > + super(); > + > + } > + > + public void handleMessage(Message message) throws Fault { > + Exchange ex = message.getExchange(); > + Set 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 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 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 bindingInterceptors = new > ArrayList(); > + protected List routingInterceptors = new > ArrayList(); > + private Set endpoints = new HashSet(); > + > + 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 getBindingInterceptors() { > + return bindingInterceptors; > + } > + > + public void setBindingInterceptors(List > bindingInterceptors) { > + this.bindingInterceptors = bindingInterceptors; > + } > + > + public List getRoutingInterceptors() { > + return routingInterceptors; > + } > + > + public void setRoutingInterceptors(List > routingInterceptors) { > + this.routingInterceptors = routingInterceptors; > + } > + > + public Set getEndpoints() { > + return endpoints; > + } > + > + public void setEndpoints(Set 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() { > + @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() { > + @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 @@ > + > + > + + xmlns="http://factory.service.cxf.apache.org/"> > + + xmlns:ns2=" > http://factory.service.cxf.apache.org/" > + xmlns=" > http://www.w3.org/2005/08/addressing/wsdl"> > + hello > + > + > + > + > \ 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 @@ > + > + > + + xmlns="http://factory.service.cxf.apache.org/"> > + + xmlns:ns2=" > http://factory.service.cxf.apache.org/" > + xmlns=" > http://www.w3.org/2005/08/addressing/wsdl"> > + hello > + > + > + > + > \ 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 { > +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 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 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; > } > > } > > > ------=_Part_7197_18394030.1176825411164--