You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2008/09/11 09:21:43 UTC
svn commit: r694155 - in /tuscany/java/sca/modules/binding-jms-runtime: ./
src/main/java/org/apache/tuscany/sca/binding/jms/provider/
Author: antelder
Date: Thu Sep 11 00:21:42 2008
New Revision: 694155
URL: http://svn.apache.org/viewvc?rev=694155&view=rev
Log:
Partial fix/workaround for TUSCANY-2583 - only first method's parameter is send in JMS Message
Modified:
tuscany/java/sca/modules/binding-jms-runtime/pom.xml
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingProviderFactory.java
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java
Modified: tuscany/java/sca/modules/binding-jms-runtime/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/pom.xml?rev=694155&r1=694154&r2=694155&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-jms-runtime/pom.xml (original)
+++ tuscany/java/sca/modules/binding-jms-runtime/pom.xml Thu Sep 11 00:21:42 2008
@@ -60,11 +60,23 @@
<version>1.4-SNAPSHOT</version>
</dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-databinding-axiom</artifactId>
- <version>1.4-SNAPSHOT</version>
- </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-interface-wsdl</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-databinding-axiom</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-wsdlgen</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
Modified: tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java?rev=694155&r1=694154&r2=694155&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java (original)
+++ tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java Thu Sep 11 00:21:42 2008
@@ -102,7 +102,7 @@
MessageImpl tuscanyMsg = new MessageImpl();
tuscanyMsg.setOperation(operation);
if ("onMessage".equals(operation.getName())) {
- tuscanyMsg.setBody(requestJMSMsg);
+ tuscanyMsg.setBody(new Object[]{requestJMSMsg});
} else {
Object requestPayload = requestMessageProcessor.extractPayloadFromJMSMessage(requestJMSMsg);
tuscanyMsg.setBody(requestPayload);
Modified: tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingProviderFactory.java?rev=694155&r1=694154&r2=694155&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingProviderFactory.java (original)
+++ tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingProviderFactory.java Thu Sep 11 00:21:42 2008
@@ -38,18 +38,20 @@
public class JMSBindingProviderFactory implements BindingProviderFactory<JMSBinding> {
private WorkScheduler workScheduler;
+ private ExtensionPointRegistry extensionPoints;
public JMSBindingProviderFactory(ExtensionPointRegistry extensionPoints) {
+ this.extensionPoints = extensionPoints;
UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
workScheduler = utilities.getUtility(WorkScheduler.class);
}
public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, JMSBinding binding) {
- return new JMSBindingReferenceBindingProvider(component, reference, binding);
+ return new JMSBindingReferenceBindingProvider(component, reference, binding, extensionPoints);
}
public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, JMSBinding binding) {
- return new JMSBindingServiceBindingProvider(component, service, binding, binding, workScheduler);
+ return new JMSBindingServiceBindingProvider(component, service, binding, binding, workScheduler, extensionPoints);
}
public Class<JMSBinding> getModelType() {
Modified: tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java?rev=694155&r1=694154&r2=694155&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java (original)
+++ tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingReferenceBindingProvider.java Thu Sep 11 00:21:42 2008
@@ -24,10 +24,14 @@
import javax.jms.JMSException;
+import org.apache.axiom.om.OMElement;
import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
-import org.apache.tuscany.sca.interfacedef.Interface;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Invoker;
@@ -46,10 +50,14 @@
private JMSBinding jmsBinding;
private List<JMSBindingInvoker> jmsBindingInvokers = new ArrayList<JMSBindingInvoker>();
private JMSResourceFactory jmsResourceFactory;
+ private RuntimeComponent component;
+ private InterfaceContract wsdlInterfaceContract;
+ private ExtensionPointRegistry extensions;
- public JMSBindingReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, JMSBinding binding) {
+ public JMSBindingReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, JMSBinding binding, ExtensionPointRegistry extensions) {
this.reference = reference;
this.jmsBinding = binding;
+ this.extensions = extensions;
jmsResourceFactory = new JMSResourceFactory(binding.getConnectionFactoryName(), binding.getInitialContextFactoryName(), binding.getJndiURL());
if (XMLTextMessageProcessor.class.isAssignableFrom(JMSMessageProcessorUtil.getRequestMessageProcessor(jmsBinding).getClass())) {
@@ -57,19 +65,28 @@
}
}
-
+
protected void setXMLDataBinding(RuntimeComponentReference reference) {
- try {
- InterfaceContract ic = (InterfaceContract)reference.getInterfaceContract().clone();
-
- Interface ii = (Interface)ic.getInterface().clone();
- ii.resetDataBinding("org.apache.axiom.om.OMElement");
- ic.setInterface(ii);
- reference.setInterfaceContract(ic);
-
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
- }
+
+ WebServiceBindingFactory wsFactory = extensions.getExtensionPoint(WebServiceBindingFactory.class);
+ WebServiceBinding wsBinding = wsFactory.createWebServiceBinding();
+ BindingWSDLGenerator.generateWSDL(component, reference, wsBinding, extensions, null);
+ wsdlInterfaceContract = wsBinding.getBindingInterfaceContract();
+ wsdlInterfaceContract.getInterface().resetDataBinding(OMElement.class.getName());
+
+ // TODO: TUSCANY-xxx, section 5.2 "Default Data Binding" in the JMS binding spec
+
+// try {
+// InterfaceContract ic = (InterfaceContract)reference.getInterfaceContract().clone();
+//
+// Interface ii = (Interface)ic.getInterface().clone();
+// ii.resetDataBinding("org.apache.axiom.om.OMElement");
+// ic.setInterface(ii);
+// reference.setInterfaceContract(ic);
+//
+// } catch (CloneNotSupportedException e) {
+// throw new RuntimeException(e);
+// }
}
public Invoker createInvoker(Operation operation) {
@@ -90,10 +107,14 @@
}
public InterfaceContract getBindingInterfaceContract() {
- if (reference.getInterfaceContract() == null) {
- return reference.getReference().getInterfaceContract();
+ if (wsdlInterfaceContract != null) {
+ return wsdlInterfaceContract;
} else {
- return reference.getInterfaceContract();
+ if (reference.getInterfaceContract() == null) {
+ return reference.getReference().getInterfaceContract();
+ } else {
+ return reference.getInterfaceContract();
+ }
}
}
Modified: tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java?rev=694155&r1=694154&r2=694155&view=diff
==============================================================================
--- tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java (original)
+++ tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java Thu Sep 11 00:21:42 2008
@@ -31,11 +31,15 @@
import javax.jms.Topic;
import javax.naming.NamingException;
+import org.apache.axiom.om.OMElement;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
import org.apache.tuscany.sca.binding.jms.impl.JMSBindingException;
-import org.apache.tuscany.sca.interfacedef.Interface;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.provider.ServiceBindingProvider;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
@@ -60,11 +64,18 @@
private Destination destination;
- public JMSBindingServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, Binding targetBinding, JMSBinding binding, WorkScheduler workScheduler) {
+ private ExtensionPointRegistry extensionPoints;
+
+ private RuntimeComponent component;
+ private InterfaceContract wsdlInterfaceContract;
+
+ public JMSBindingServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, Binding targetBinding, JMSBinding binding, WorkScheduler workScheduler, ExtensionPointRegistry extensionPoints) {
+ this.component = component;
this.service = service;
this.jmsBinding = binding;
this.workScheduler = workScheduler;
this.targetBinding = targetBinding;
+ this.extensionPoints = extensionPoints;
jmsResourceFactory = new JMSResourceFactory(binding.getConnectionFactoryName(), binding.getInitialContextFactoryName(), binding.getJndiURL());
@@ -76,32 +87,54 @@
}
if (XMLTextMessageProcessor.class.isAssignableFrom(JMSMessageProcessorUtil.getRequestMessageProcessor(jmsBinding).getClass())) {
- setXMLDataBinding(service);
+ if (!isOnMessage()) {
+ setXMLDataBinding(service);
+ }
}
}
+
+ protected boolean isOnMessage() {
+ InterfaceContract ic = getBindingInterfaceContract();
+ if (ic.getInterface().getOperations().size() != 1) {
+ return false;
+ }
+ return "onMessage".equals(ic.getInterface().getOperations().get(0).getName());
+ }
protected void setXMLDataBinding(RuntimeComponentService service) {
if (service.getInterfaceContract() != null) {
- try {
- InterfaceContract ic = (InterfaceContract)service.getInterfaceContract().clone();
- Interface ii = ic.getInterface();
- if (ii.getOperations().size() == 1 && "onMessage".equals(ii.getOperations().get(0).getName())) {
- return;
- }
- ii = (Interface)ii.clone();
- ii.resetDataBinding("org.apache.axiom.om.OMElement");
- ic.setInterface(ii);
- service.setInterfaceContract(ic);
-
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
- }
+ WebServiceBindingFactory wsFactory = extensionPoints.getExtensionPoint(WebServiceBindingFactory.class);
+ WebServiceBinding wsBinding = wsFactory.createWebServiceBinding();
+ BindingWSDLGenerator.generateWSDL(component, service, wsBinding, extensionPoints, null);
+ wsdlInterfaceContract = wsBinding.getBindingInterfaceContract();
+ wsdlInterfaceContract.getInterface().resetDataBinding(OMElement.class.getName());
+
+ // TODO: TUSCANY-xxx, section 5.2 "Default Data Binding" in the JMS binding spec
+
+// try {
+// InterfaceContract ic = (InterfaceContract)service.getInterfaceContract().clone();
+// Interface ii = ic.getInterface();
+// if (ii.getOperations().size() == 1 && "onMessage".equals(ii.getOperations().get(0).getName())) {
+// return;
+// }
+// ii = (Interface)ii.clone();
+// ii.resetDataBinding("org.apache.axiom.om.OMElement");
+// ic.setInterface(ii);
+// service.setInterfaceContract(ic);
+//
+// } catch (CloneNotSupportedException e) {
+// throw new RuntimeException(e);
+// }
}
}
public InterfaceContract getBindingInterfaceContract() {
- return service.getInterfaceContract();
+ if (wsdlInterfaceContract != null) {
+ return wsdlInterfaceContract;
+ } else {
+ return service.getInterfaceContract();
+ }
}
public boolean supportsOneWayInvocation() {