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 2007/04/14 15:02:04 UTC

svn commit: r528802 - /incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/

Author: antelder
Date: Sat Apr 14 06:02:03 2007
New Revision: 528802

URL: http://svn.apache.org/viewvc?view=rev&rev=528802
Log:
More Axis2 binding bringup. the helloworld-om-client testcase now works

Modified:
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceBinding.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2TargetInvoker.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2WSReference.java

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java?view=diff&rev=528802&r1=528801&r2=528802
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java Sat Apr 14 06:02:03 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.binding.axis2;
 
+import java.net.URI;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ConfigurationContext;
@@ -65,7 +67,8 @@
     public ReferenceBinding build(CompositeReference boundReferenceDefinition,
                                   WebServiceBinding bindingDefinition,
                                   DeploymentContext context) throws BuilderException {
-      return new Axis2WSReference(null, null);
+        URI targetURI = bindingDefinition.getURI() != null ? URI.create(bindingDefinition.getURI()) : URI.create("foo");
+        return new Axis2WSReference(URI.create(context.getComponentId() + "#" + bindingDefinition.getName()), targetURI, bindingDefinition);
     }
     
 //    @SuppressWarnings("unchecked")

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceBinding.java?view=diff&rev=528802&r1=528801&r2=528802
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceBinding.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceBinding.java Sat Apr 14 06:02:03 2007
@@ -39,6 +39,7 @@
 import org.apache.tuscany.binding.axis2.util.WebServiceOperationMetaData;
 import org.apache.tuscany.binding.axis2.util.WebServicePortMetaData;
 import org.apache.tuscany.binding.ws.WebServiceBinding;
+import org.apache.tuscany.interfacedef.InterfaceContract;
 import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -48,40 +49,47 @@
 /**
  * Axis2Reference uses Axis2 to invoke a remote web service
  */
-public class Axis2ReferenceBinding<T> extends ReferenceBindingExtension {
+public class Axis2ReferenceBinding extends ReferenceBindingExtension {
     private static final QName BINDING_WS = new QName(SCA_NS, "binding.ws");
 
     private WebServicePortMetaData wsPortMetaData;
     private ServiceClient serviceClient;
+
     private WorkContext workContext;
 
-    @SuppressWarnings("unchecked")
-    public Axis2ReferenceBinding(URI uri,
-                                 WebServiceBinding wsBinding,
-//                                 ServiceContract contract,
-//                                 ServiceContract<?> bindingServiceContract,
-                                 WorkContext workContext) {
-        super(uri, uri); // TODO: what should these be
-        this.bindingServiceContract = bindingServiceContract;
-        this.workContext = workContext;
-        try {
-            Definition wsdlDefinition = wsBinding.getWSDLDefinition();
-            wsPortMetaData =
-                new WebServicePortMetaData(wsdlDefinition, wsBinding.getWSDLPort(), wsBinding.getURI(), false);
-            serviceClient = createServiceClient(wsdlDefinition, wsPortMetaData);
-        } catch (AxisFault e) {
-            throw new Axis2BindingRunTimeException(e);
-        }
+//    public Axis2ReferenceBinding(URI uri,
+//                                 WebServiceBinding wsBinding
+////                                 ServiceContract contract,
+////                                 ServiceContract<?> bindingServiceContract) {
+//        super(uri, uri); // TODO: what should these be
+//        try {
+//            Definition wsdlDefinition = wsBinding.getWSDLDefinition();
+//            wsPortMetaData =
+//                new WebServicePortMetaData(wsdlDefinition, wsBinding.getWSDLPort(), wsBinding.getURI(), false);
+//            serviceClient = createServiceClient(wsdlDefinition, wsPortMetaData);
+//        } catch (AxisFault e) {
+//            throw new Axis2BindingRunTimeException(e);
+//        }
+//    }
+    public Axis2ReferenceBinding(URI name, URI targetUri, WebServiceBinding wsBinding) {
+       super(name, targetUri);
+       this.wsPortMetaData = new WebServicePortMetaData(wsBinding.getWSDLDefinition().getDefinition(), wsBinding.getPort(), wsBinding.getURI(), false);
+       this.serviceClient = createServiceClient(wsBinding.getWSDLDefinition().getDefinition(), wsPortMetaData);
     }
 
     public QName getBindingType() {
         return BINDING_WS;
     }
 
-    public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation) {
+    public TargetInvoker createTargetInvoker(String targetName, Operation operation, boolean isCallback) throws TargetInvokerCreationException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public TargetInvoker createTargetInvoker(InterfaceContract contract, Operation operation, boolean isCallback) {
         Axis2TargetInvoker invoker;
         try {
-            boolean operationHasCallback = contract.getCallbackName() != null;
+            boolean operationHasCallback = contract.getCallbackInterface() != null;
             if (operationHasCallback) {
                 // FIXME: SDODataBinding needs to pass in TypeHelper and classLoader
                 // as parameters.
@@ -97,7 +105,8 @@
                 // it may depend on knowledge
                 // of what actual callback method was invoked by the service at the
                 // other end
-                Operation callbackOperation = findCallbackOperation();
+//                Operation callbackOperation = findCallbackOperation();
+                Operation callbackOperation = null;
                 Axis2CallbackInvocationHandler invocationHandler =
                     new Axis2CallbackInvocationHandler(wire);
                 Axis2ReferenceCallbackTargetInvoker callbackInvoker =
@@ -115,31 +124,35 @@
         return invoker;
     }
 
-    private Operation findCallbackOperation() {
-        ServiceContract contract = wire.getTargetContract(); // TODO: which end?
-        Operation callbackOperation = null;
-        Collection callbackOperations = contract.getCallbackOperations().values();
-        if (callbackOperations.size() != 1) {
-            throw new Axis2BindingRunTimeException("Can only handle one callback operation");
-        } else {
-            callbackOperation = (Operation) callbackOperations.iterator().next();
-        }
-        return callbackOperation;
-    }
+//    private Operation findCallbackOperation() {
+//        ServiceContract contract = wire.getTargetContract(); // TODO: which end?
+//        Operation callbackOperation = null;
+//        Collection callbackOperations = contract.getCallbackOperations().values();
+//        if (callbackOperations.size() != 1) {
+//            throw new Axis2BindingRunTimeException("Can only handle one callback operation");
+//        } else {
+//            callbackOperation = (Operation) callbackOperations.iterator().next();
+//        }
+//        return callbackOperation;
+//    }
 
     /**
      * Create an Axis2 ServiceClient
      */
-    private ServiceClient createServiceClient(Definition wsdlDefinition, WebServicePortMetaData wsPortMetaData)
-        throws AxisFault {
+    protected ServiceClient createServiceClient(Definition wsdlDefinition, WebServicePortMetaData wsPortMetaData) {
+        try {
 
-        TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
-        ConfigurationContext configurationContext = tuscanyAxisConfigurator.getConfigurationContext();
-        QName serviceQName = wsPortMetaData.getServiceName();
-        String portName = wsPortMetaData.getPortName().getLocalPart();
-        AxisService axisService =
-            AxisService.createClientSideAxisService(wsdlDefinition, serviceQName, portName, new Options());
-        return new ServiceClient(configurationContext, axisService);
+            TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
+            ConfigurationContext configurationContext = tuscanyAxisConfigurator.getConfigurationContext();
+            QName serviceQName = wsPortMetaData.getServiceName();
+            String portName = wsPortMetaData.getPortName().getLocalPart();
+            AxisService axisService = AxisService.createClientSideAxisService(wsdlDefinition, serviceQName, portName, new Options());
+
+            return new ServiceClient(configurationContext, axisService);
+
+        } catch (AxisFault e) {
+            throw new RuntimeException(e); // TODO: better exception
+        }
     }
 
     /**
@@ -184,16 +197,6 @@
         }
 
         return invoker;
-    }
-
-    public TargetInvoker createTargetInvoker(String targetName, Operation operation) throws TargetInvokerCreationException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public TargetInvoker createTargetInvoker(String targetName, PhysicalOperationDefinition operation) throws TargetInvokerCreationException {
-        // TODO Auto-generated method stub
-        return null;
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java?view=diff&rev=528802&r1=528801&r2=528802
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ReferenceCallbackTargetInvoker.java Sat Apr 14 06:02:03 2007
@@ -23,7 +23,8 @@
 import java.util.LinkedList;
 import java.util.concurrent.CountDownLatch;
 
-import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.interfacedef.Operation;
+import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.wire.InvocationRuntimeException;
 import org.apache.tuscany.spi.wire.Message;
 import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -48,7 +49,7 @@
         this.invocationHandler = invocationHandler;
     }
 
-    public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
+    public Object invokeTarget(final Object payload, final short sequence, WorkContext workContext) throws InvocationTargetException {
         Object[] args;
         if (payload != null && !payload.getClass().isArray()) {
             args = new Object[]{payload};
@@ -60,7 +61,8 @@
         // FIXME synchronize with forward thread to return value
         signal.countDown();
         try {
-            return invocationHandler.invoke(operation, args, callbackRoutingChain);
+//            return invocationHandler.invoke(operation, args, callbackRoutingChain);
+            return null; // TODO ???
         } catch (Throwable t) {
             t.printStackTrace();
             throw new InvocationTargetException(t);
@@ -69,7 +71,7 @@
 
     public Message invoke(Message msg) throws InvocationRuntimeException {
         try {
-            Object resp = invokeTarget(msg.getBody(), NONE);
+            Object resp = invokeTarget(msg.getBody(), NONE, null);
             msg.setBody(resp);
         } catch (InvocationTargetException e) {
             msg.setBodyWithFault(e.getCause());
@@ -112,4 +114,5 @@
     public Object getReturnPayload() {
         return returnPayload;
     }
+
 }

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2TargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2TargetInvoker.java?view=diff&rev=528802&r1=528801&r2=528802
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2TargetInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2TargetInvoker.java Sat Apr 14 06:02:03 2007
@@ -35,6 +35,7 @@
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.tuscany.assembly.xml.Constants;
 import org.apache.tuscany.spi.Scope;
 import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.extension.TargetInvokerExtension;
@@ -56,6 +57,8 @@
 
     private WorkContext workContext;
 
+    public static final QName CONVERSATION_ID_REFPARM_QN = new QName(Constants.SCA10_NS,"conversationID");
+    
     public Axis2TargetInvoker(ServiceClient serviceClient, QName wsdlOperationName, Options options,
                               SOAPFactory soapFactory, WorkContext workContext) {
         this.wsdlOperationName = wsdlOperationName;
@@ -113,7 +116,7 @@
             String conversationId = (String) workContext.getIdentifier(Scope.CONVERSATION);
             if(conversationId != null && conversationId.length()!=0){
                 EndpointReference fromEPR= new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL);
-                fromEPR.addReferenceParameter(WebServiceBindingDefinition.CONVERSATION_ID_REFPARM_QN, conversationId);
+                fromEPR.addReferenceParameter(CONVERSATION_ID_REFPARM_QN, conversationId);
                 options.setFrom(fromEPR);
                 requestMC.setFrom(fromEPR); //who knows why two ways ?
             

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2WSReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2WSReference.java?view=diff&rev=528802&r1=528801&r2=528802
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2WSReference.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2WSReference.java Sat Apr 14 06:02:03 2007
@@ -36,6 +36,7 @@
 import org.apache.tuscany.binding.axis2.util.TuscanyAxisConfigurator;
 import org.apache.tuscany.binding.axis2.util.WebServiceOperationMetaData;
 import org.apache.tuscany.binding.axis2.util.WebServicePortMetaData;
+import org.apache.tuscany.binding.ws.WebServiceBinding;
 import org.apache.tuscany.binding.ws.xml.WebServiceConstants;
 import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.spi.component.TargetInvokerCreationException;
@@ -46,9 +47,14 @@
 public class Axis2WSReference extends ReferenceBindingExtension {
 
     private WorkContext workContext;
+    private WebServicePortMetaData wsPortMetaData;
+    private WebServiceBinding wsBinding;
+    private ServiceClient serviceClient;
 
-    public Axis2WSReference(URI name, URI targetUri) {
+    public Axis2WSReference(URI name, URI targetUri, WebServiceBinding wsBinding) {
         super(name, targetUri);
+        this.wsPortMetaData = new WebServicePortMetaData(wsBinding.getWSDLDefinition().getDefinition(), wsBinding.getPort(), wsBinding.getURI(), false);
+        this.serviceClient = createServiceClient(wsBinding.getWSDLDefinition().getDefinition(), wsPortMetaData);
     }
 
     public QName getBindingType() {
@@ -56,43 +62,45 @@
     }
 
     public TargetInvoker createTargetInvoker(String targetName, Operation operation, boolean isCallback) throws TargetInvokerCreationException {
-        Options options = null;
-        SOAPFactory soapFactory = null;
-        QName wsdlOperationQName = null;
-        ServiceClient serviceClient = null;
-        Axis2TargetInvoker invoker = new Axis2TargetInvoker(serviceClient, wsdlOperationQName, options, soapFactory, workContext);
-        return invoker;
+            boolean isOneWay = operation.isNonBlocking();
+            Axis2TargetInvoker invoker = createOperationInvoker(serviceClient, operation, wsPortMetaData, false, isOneWay);
+            return invoker;
     }
 
     /**
      * Create an Axis2 ServiceClient
      */
-    private ServiceClient createServiceClient(Definition wsdlDefinition, WebServicePortMetaData wsPortMetaData)
-        throws AxisFault {
+    protected ServiceClient createServiceClient(Definition wsdlDefinition, WebServicePortMetaData wsPortMetaData) {
+        try {
 
-        TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
-        ConfigurationContext configurationContext = tuscanyAxisConfigurator.getConfigurationContext();
-        QName serviceQName = wsPortMetaData.getServiceName();
-        String portName = wsPortMetaData.getPortName().getLocalPart();
-        AxisService axisService =
-            AxisService.createClientSideAxisService(wsdlDefinition, serviceQName, portName, new Options());
-        return new ServiceClient(configurationContext, axisService);
+            TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
+            ConfigurationContext configurationContext = tuscanyAxisConfigurator.getConfigurationContext();
+            QName serviceQName = wsPortMetaData.getServiceName();
+            String portName = wsPortMetaData.getPortName().getLocalPart();
+            AxisService axisService = AxisService.createClientSideAxisService(wsdlDefinition, serviceQName, portName, new Options());
+
+            return new ServiceClient(configurationContext, axisService);
+
+        } catch (AxisFault e) {
+            throw new RuntimeException(e); // TODO: better exception
+        }
     }
 
     /**
      * Create and configure an Axis2TargetInvoker for each operations
      */
-    private Axis2TargetInvoker createOperationInvoker(ServiceClient serviceClient,
-                                                      Operation m,
+    protected Axis2TargetInvoker createOperationInvoker(ServiceClient serviceClient,
+                                                      Operation operation,
                                                       WebServicePortMetaData wsPortMetaData,
                                                       boolean hasCallback,
-                                                      boolean isOneWay) throws AxisFault {
+                                                      boolean isOneWay) {
+
         SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
         String portTypeNS = wsPortMetaData.getPortTypeName().getNamespaceURI();
 
-        String methodName = m.getName();
+        String operationName = operation.getName();
 
-        WebServiceOperationMetaData operationMetaData = wsPortMetaData.getOperationMetaData(methodName);
+        WebServiceOperationMetaData operationMetaData = wsPortMetaData.getOperationMetaData(operationName);
 
         Options options = new Options();
         options.setTo(new EndpointReference(wsPortMetaData.getEndpoint()));
@@ -111,11 +119,9 @@
 
         Axis2TargetInvoker invoker;
         if (hasCallback) {
-            invoker =
-                new Axis2AsyncTargetInvoker(serviceClient, wsdlOperationQName, options, soapFactory, workContext);
+            invoker = new Axis2AsyncTargetInvoker(serviceClient, wsdlOperationQName, options, soapFactory, workContext);
         } else if (isOneWay) {
-            invoker =
-                new Axis2OneWayTargetInvoker(serviceClient, wsdlOperationQName, options, soapFactory, workContext);
+            invoker = new Axis2OneWayTargetInvoker(serviceClient, wsdlOperationQName, options, soapFactory, workContext);
         } else {
             invoker = new Axis2TargetInvoker(serviceClient, wsdlOperationQName, options, soapFactory, workContext);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org