Author: slaws
Date: Fri Jun 11 12:04:47 2010
New Revision: 953679

URL: http://svn.apache.org/viewvc?rev=953679&view=rev
Log:
A little more separation of the Tuscany bits from the Axis bits

Added:
    
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
Removed:
    
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceProvider.java
Modified:
    
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java
    
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInMessageReceiver.java
    
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInOutSyncMessageReceiver.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java?rev=953679&r1=953678&r2=953679&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2EngineIntegration.java
 Fri Jun 11 12:04:47 2010
@@ -424,11 +424,11 @@ public class Axis2EngineIntegration {
                 }
 
                 MessageReceiver msgrec = null;
-                Axis2ServiceProvider serviceProvider = new 
Axis2ServiceProvider(endpoint, wsBinding, extensionPoints);
+                TuscanyServiceProvider serviceProvider = new 
TuscanyServiceProvider(extensionPoints, endpoint, wsBinding, op);
                 if (op.isNonBlocking()) {
-                    msgrec = new 
Axis2ServiceInMessageReceiver(serviceProvider, op);
+                    msgrec = new 
Axis2ServiceInMessageReceiver(serviceProvider);
                 } else {
-                    msgrec = new 
Axis2ServiceInOutSyncMessageReceiver(serviceProvider, op);
+                    msgrec = new 
Axis2ServiceInOutSyncMessageReceiver(serviceProvider);
                 }
                 axisOp.setMessageReceiver(msgrec);
             }

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInMessageReceiver.java?rev=953679&r1=953678&r2=953679&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInMessageReceiver.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInMessageReceiver.java
 Fri Jun 11 12:04:47 2010
@@ -28,13 +28,10 @@ import org.apache.tuscany.sca.interfaced
 
 public class Axis2ServiceInMessageReceiver extends AbstractInMessageReceiver {
 
-    protected Operation operation;
-
-    private Axis2ServiceProvider provider;
+    private TuscanyServiceProvider provider;
     
-    public Axis2ServiceInMessageReceiver(Axis2ServiceProvider provider, 
Operation operation) {
+    public Axis2ServiceInMessageReceiver(TuscanyServiceProvider provider) {
         this.provider = provider;
-        this.operation = operation;
     }
 
     public Axis2ServiceInMessageReceiver() {
@@ -44,9 +41,8 @@ public class Axis2ServiceInMessageReceiv
     public void invokeBusinessLogic(MessageContext inMC) throws AxisFault {
         try {
             OMElement requestOM = 
inMC.getEnvelope().getBody().getFirstElement();
-            Object[] args = new Object[] {requestOM};
             
-            provider.invokeTarget(operation, args, inMC);
+            provider.invoke(requestOM, inMC);
             
         } catch (InvocationTargetException e) {
             Throwable t = e.getCause();

Modified: 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInOutSyncMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInOutSyncMessageReceiver.java?rev=953679&r1=953678&r2=953679&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInOutSyncMessageReceiver.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ServiceInOutSyncMessageReceiver.java
 Fri Jun 11 12:04:47 2010
@@ -28,20 +28,16 @@ import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
-import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.util.FaultException;
 import org.oasisopen.sca.ServiceRuntimeException;
 
 public class Axis2ServiceInOutSyncMessageReceiver extends 
AbstractInOutSyncMessageReceiver {
     private static final Logger logger = 
Logger.getLogger(Axis2ServiceInOutSyncMessageReceiver.class.getName());
        
-    protected Operation operation;
+    private TuscanyServiceProvider provider;
 
-    private Axis2ServiceProvider provider;
-
-    public Axis2ServiceInOutSyncMessageReceiver(Axis2ServiceProvider provider, 
Operation operation) {
+    public Axis2ServiceInOutSyncMessageReceiver(TuscanyServiceProvider 
provider) {
         this.provider = provider;
-        this.operation = operation;
     }
 
     public Axis2ServiceInOutSyncMessageReceiver() {
@@ -51,25 +47,8 @@ public class Axis2ServiceInOutSyncMessag
     public void invokeBusinessLogic(MessageContext inMC, MessageContext outMC) 
throws AxisFault {
         try {
             OMElement requestOM = 
inMC.getEnvelope().getBody().getFirstElement();
-            Object[] args = null;
-               
-            if (requestOM != null) {
-               args = new Object[] {requestOM};
-            }
-            
-            /*
-            for ( PolicyHandler policyHandler : policyHandlerList ) {
-                policyHandler.beforeInvoke(operation, args, inMC);
-            }
-            */
-            
-            OMElement responseOM = (OMElement)provider.invokeTarget(operation, 
args, inMC);
             
-            /*
-            for ( PolicyHandler policyHandler : policyHandlerList ) {
-                policyHandler.afterInvoke(operation, args, inMC, responseOM);
-            }
-            */
+            OMElement responseOM = (OMElement)provider.invoke(requestOM, inMC);
 
             SOAPEnvelope soapEnvelope = 
getSOAPFactory(inMC).getDefaultEnvelope();
             if (null != responseOM ) {

Added: 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java?rev=953679&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
 Fri Jun 11 12:04:47 2010
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.binding.ws.axis2.provider;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.assembly.RuntimeAssemblyFactory;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+
+public class TuscanyServiceProvider {
+    private static final Logger logger = 
Logger.getLogger(TuscanyServiceProvider.class.getName());
+    
+    public static final QName QNAME_WSA_ADDRESS =
+        new QName(AddressingConstants.Final.WSA_NAMESPACE, 
AddressingConstants.EPR_ADDRESS);
+    public static final QName QNAME_WSA_FROM =
+        new QName(AddressingConstants.Final.WSA_NAMESPACE, 
AddressingConstants.WSA_FROM);
+    public static final QName QNAME_WSA_REFERENCE_PARAMETERS =
+        new QName(AddressingConstants.Final.WSA_NAMESPACE, 
AddressingConstants.EPR_REFERENCE_PARAMETERS);
+    
+    
+    private RuntimeEndpoint endpoint;
+    private WebServiceBinding wsBinding;
+    private MessageFactory messageFactory;
+    private FactoryExtensionPoint modelFactories;
+    private RuntimeAssemblyFactory assemblyFactory;
+    private Operation operation;
+    
+    public TuscanyServiceProvider(ExtensionPointRegistry extensionPoints,
+                                  RuntimeEndpoint endpoint,
+                                  WebServiceBinding wsBinding,
+                                  Operation operation) {
+        this.endpoint = endpoint;
+        this.wsBinding = wsBinding;
+        this.operation = operation;
+        this.modelFactories = 
extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+        this.messageFactory = modelFactories.getFactory(MessageFactory.class);
+        this.assemblyFactory = 
(RuntimeAssemblyFactory)modelFactories.getFactory(AssemblyFactory.class);       
 
+    }
+    
+    public OMElement invoke(OMElement requestOM, MessageContext inMC) throws 
InvocationTargetException {
+        String callbackAddress = null;
+        String callbackID = null;
+
+        // create a message object and set the args as its body
+        Message msg = messageFactory.createMessage();
+        Object[] args = new Object[] {requestOM};
+        msg.setBody(args);
+        msg.setOperation(operation);
+        msg.setBindingContext(inMC);
+
+        //FIXME: can we use the Axis2 addressing support for this?
+        SOAPHeader header = inMC.getEnvelope().getHeader();
+        if (header != null) {
+            OMElement from = header.getFirstChildWithName(QNAME_WSA_FROM);
+            if (from != null) {
+                OMElement callbackAddrElement = 
from.getFirstChildWithName(QNAME_WSA_ADDRESS);
+                if (callbackAddrElement != null) {
+                    if 
(endpoint.getService().getInterfaceContract().getCallbackInterface() != null) {
+                        callbackAddress = callbackAddrElement.getText();
+                    }
+                }
+            }            
+        }
+
+        // Create a from EPR to hold the details of the callback endpoint
+        EndpointReference from = null;
+        if (callbackAddress != null ) {
+            from = assemblyFactory.createEndpointReference();
+            Endpoint fromEndpoint = assemblyFactory.createEndpoint();
+            from.setTargetEndpoint(fromEndpoint);
+            
from.setStatus(EndpointReference.Status.WIRED_TARGET_FOUND_AND_MATCHED);
+            msg.setFrom(from);
+            Endpoint callbackEndpoint = assemblyFactory.createEndpoint();
+            callbackEndpoint.setURI(callbackAddress);
+            callbackEndpoint.setUnresolved(true);
+            from.setCallbackEndpoint(callbackEndpoint);
+        }
+
+        Message response = endpoint.invoke(msg);
+        
+        if(response.isFault()) {
+            throw new InvocationTargetException((Throwable) 
response.getBody());
+        }
+        return response.getBody();
+    }
+}


Reply via email to