You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/05/15 05:57:34 UTC

svn commit: r656501 - in /servicemix/smx3/trunk/deployables: bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/ bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/ serviceengines/servi...

Author: ffang
Date: Wed May 14 20:57:34 2008
New Revision: 656501

URL: http://svn.apache.org/viewvc?rev=656501&view=rev
Log:
[SM-1225]cxf bc provider should support exchange without specifing the operationName if portType only have one operation

Modified:
    servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
    servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
    servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java
    servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java
    servicemix/smx3/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java

Modified: servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java?rev=656501&r1=656500&r2=656501&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java (original)
+++ servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java Wed May 14 20:57:34 2008
@@ -50,6 +50,7 @@
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.endpoint.EndpointImpl;
 import org.apache.cxf.interceptor.AttachmentOutInterceptor;
+import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.interceptor.StaxOutInterceptor;
 
@@ -149,7 +150,13 @@
         BindingOperationInfo boi = null;
         if (opeName == null) {
             // if interface only have one operation, may not specify the opeName in MessageExchange
-            boi = ei.getBinding().getOperations().iterator().next();
+            if (ei.getBinding().getOperations().size() == 1) {
+                boi = ei.getBinding().getOperations().iterator().next();
+            } else {
+                throw new Fault(
+                            new Exception("Operation not bound on this MessageExchange"));
+                
+            }
         } else {
             boi = ei.getBinding().getOperation(exchange.getOperation());   
         }

Modified: servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java?rev=656501&r1=656500&r2=656501&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java (original)
+++ servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java Wed May 14 20:57:34 2008
@@ -43,6 +43,7 @@
 import org.apache.cxf.phase.PhaseInterceptorChain;
 import org.apache.cxf.phase.PhaseManager;
 import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.staxutils.DepthXMLStreamReader;
 import org.apache.cxf.staxutils.StaxUtils;
 import org.apache.cxf.transport.MessageObserver;
@@ -88,10 +89,24 @@
             contentType = (String) message.get(Message.CONTENT_TYPE);
             SoapMessage soapMessage = 
                 (SoapMessage) this.providerEndpoint.getCxfEndpoint().getBinding().createMessage(message);
-
+            
             // create XmlStreamReader
-            BindingOperationInfo boi = providerEndpoint.getEndpointInfo()
-                    .getBinding().getOperation(messageExchange.getOperation());
+            EndpointInfo ei = this.providerEndpoint.getEndpointInfo();
+            QName opeName = messageExchange.getOperation();
+            BindingOperationInfo boi = null;
+            if (opeName == null) {
+                // if interface only have one operation, may not specify the opeName in MessageExchange
+                if (ei.getBinding().getOperations().size() == 1) {
+                    boi = ei.getBinding().getOperations().iterator().next();
+                } else {
+                    throw new org.apache.cxf.interceptor.Fault(
+                                new Exception("Operation not bound on this MessageExchange"));
+                    
+                }
+            } else {
+                boi = ei.getBinding().getOperation(messageExchange.getOperation());   
+            }
+            
             if (boi.getOperationInfo().isOneWay()) {
                 return;
             }

Modified: servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java?rev=656501&r1=656500&r2=656501&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java (original)
+++ servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java Wed May 14 20:57:34 2008
@@ -92,6 +92,10 @@
 
         BindingOperationInfo bop = message.getExchange().get(
                 BindingOperationInfo.class);
+        if (bop == null) {
+            throw new Fault(
+                    new Exception("Operation not bound on this message"));
+        }
         BindingMessageInfo msg = isRequestor(message) ? bop.getInput() : bop
                 .getOutput();
 

Modified: servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java?rev=656501&r1=656500&r2=656501&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java (original)
+++ servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java Wed May 14 20:57:34 2008
@@ -102,6 +102,10 @@
 
             BindingOperationInfo bop = message.getExchange().get(
                     BindingOperationInfo.class);
+            if (bop == null) {
+                throw new Fault(
+                        new Exception("Operation not bound on this message"));
+            }
             BindingMessageInfo msg = isRequestor(message) ? bop.getInput()
                     : bop.getOutput();
 

Modified: servicemix/smx3/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java?rev=656501&r1=656500&r2=656501&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java (original)
+++ servicemix/smx3/trunk/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java Wed May 14 20:57:34 2008
@@ -35,6 +35,7 @@
 import javax.xml.ws.WebServiceRef;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.interceptor.InterceptorProvider;
 import org.apache.cxf.jaxws.EndpointImpl;
@@ -42,6 +43,7 @@
 import org.apache.cxf.jaxws.ServiceImpl;
 import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
 import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
+import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.transport.ConduitInitiatorManager;
 import org.apache.cxf.transport.jbi.JBIDestination;
 import org.apache.cxf.transport.jbi.JBIDispatcherUtil;
@@ -182,6 +184,20 @@
     @Override
     public void process(MessageExchange exchange) throws Exception {
         
+        QName opeName = exchange.getOperation();
+        EndpointInfo ei = endpoint.getServer().getEndpoint().getEndpointInfo();
+        if (opeName == null) {
+            // if interface only have one operation, may not specify the opeName in MessageExchange
+            if (ei.getBinding().getOperations().size() == 1) {
+                opeName = ei.getBinding().getOperations().iterator().next().getName();
+                exchange.setOperation(opeName);
+            } else {
+                throw new Fault(
+                            new Exception("Operation not bound on this MessageExchange"));
+                
+            }
+        } 
+        
         JBITransportFactory jbiTransportFactory = (JBITransportFactory) getBus()
                 .getExtension(ConduitInitiatorManager.class)
                 .getConduitInitiator(CxfSeComponent.JBI_TRANSPORT_ID);