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() {