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 06:12:01 UTC
svn commit: r656503 - in
/servicemix/smx3/branches/servicemix-3.2/deployables:
bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/
bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/
se...
Author: ffang
Date: Wed May 14 21:12:01 2008
New Revision: 656503
URL: http://svn.apache.org/viewvc?rev=656503&view=rev
Log:
[SM-1225]cxf bc provider should support exchange without specifing the operationName if portType only have one operation
Modified:
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java?rev=656503&r1=656502&r2=656503&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProvider.java Wed May 14 21:12:01 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/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java?rev=656503&r1=656502&r2=656503&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java Wed May 14 21:12:01 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/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java?rev=656503&r1=656502&r2=656503&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutInterceptor.java Wed May 14 21:12:01 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/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java?rev=656503&r1=656502&r2=656503&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiOutWsdl1Interceptor.java Wed May 14 21:12:01 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/branches/servicemix-3.2/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java?rev=656503&r1=656502&r2=656503&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-cxf-se/src/main/java/org/apache/servicemix/cxfse/CxfSeEndpoint.java Wed May 14 21:12:01 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);