You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2011/08/26 14:41:11 UTC

svn commit: r1162090 - in /tuscany/sca-java-2.x/trunk/modules: binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/ core/src/main/java/org/apache/tuscany/sca/core/context/impl/

Author: slaws
Date: Fri Aug 26 12:41:11 2011
New Revision: 1162090

URL: http://svn.apache.org/viewvc?rev=1162090&view=rev
Log:
TUSCANY-3932 - sample of how the structural URI could be passed over a remote binding (in this case binding.ws) and picked up on the service side in the binding.sca case. 

Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java
    tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.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/Axis2ReferenceBindingInvoker.java?rev=1162090&r1=1162089&r2=1162090&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/Axis2ReferenceBindingInvoker.java Fri Aug 26 12:41:11 2011
@@ -89,6 +89,7 @@ public class Axis2ReferenceBindingInvoke
     public static final QName QNAME_WSA_MESSAGEID =
         new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_MESSAGE_ID, AddressingConstants.WSA_DEFAULT_PREFIX);
     
+    public static final QName QNAME_CALLACK_EP_URI = new QName(org.apache.tuscany.sca.assembly.xml.Constants.SCA11_TUSCANY_NS, "CALLBACK_EP_URI");
 
     private RuntimeEndpointReference endpointReference;
     private ServiceClient serviceClient;
@@ -243,6 +244,11 @@ public class Axis2ReferenceBindingInvoke
         if (callbackEndpoint != null) {
             // Load the actual callback endpoint URI into an Axis EPR ready to form the content of the wsa:From header
             EndpointReference fromEPR = new EndpointReference(callbackEndpoint.getBinding().getURI());
+            
+            // pass the callback structure URI as a reference parameter
+            // this allows callback endpoints to be looked up via the registry when
+            // the ws binding is being used as a delegate from the sca binding
+            fromEPR.addReferenceParameter(QNAME_CALLACK_EP_URI, callbackEndpoint.getURI());
            
             addWSAFromHeader( sh, fromEPR );
             addWSAActionHeader( sh );

Modified: 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=1162090&r1=1162089&r2=1162090&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/provider/TuscanyServiceProvider.java (original)
+++ 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 Aug 26 12:41:11 2011
@@ -252,7 +252,17 @@ public class TuscanyServiceProvider {
             if (callbackAddrElement != null) {
                 callbackAddress = callbackAddrElement.getText();
                 OMElement refParms = from.getFirstChildWithName(QNAME_WSA_REFERENCE_PARAMETERS);
-                if( refParms != null ) msg.getHeaders().put(WS_REF_PARMS, refParms);
+                if( refParms != null ) {
+                    msg.getHeaders().put(WS_REF_PARMS, refParms);
+                    Iterator iter = refParms.getChildrenWithLocalName("CALLBACK_EP_URI");
+                    if (iter != null && iter.hasNext()){
+                        OMElement callbackEPURI = (OMElement)iter.next();
+                        if (callbackEPURI != null){
+                            msg.getHeaders().put("CALLBACK_EP_URI", callbackEPURI.getText());
+                        }
+                    }
+                }
+                
             }
         } // end if
     	

Modified: tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java?rev=1162090&r1=1162089&r2=1162090&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java Fri Aug 26 12:41:11 2011
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.tuscany.sca.assembly.Binding;
 import org.apache.tuscany.sca.assembly.Endpoint;
 import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
 import org.apache.tuscany.sca.assembly.builder.BuilderContext;
 import org.apache.tuscany.sca.context.CompositeContext;
@@ -131,6 +132,26 @@ public class CallbackServiceReferenceImp
                 epr.setTargetEndpoint(resolvedEndpoint);
                 
                 // TUSCANY-3932
+                // If it's the default binding then we're going to look the callback endpoint
+                // up in the registry. Most remote protocols, which may be used as delegates 
+                // or binding.sca will deal in absolution callback address and send the 
+                // callback enbdpoint strutural URL separately. In this case flip the binding
+                // back to the structure URL. 
+                // TODO - all this creation of endpoints by the binding to represent callbacks
+                //        is confusing. Code here will change if we tidy it up. 
+                if (epr.getBinding().getType().equals(SCABinding.TYPE)){
+                    // assume that we're going to look up the callback endpoint in the
+                    // registry
+                    Message msgContext = ThreadMessageContext.getMessageContext();
+                    if (msgContext != null){
+                        String callbackEPURI = (String)msgContext.getHeaders().get("CALLBACK_EP_URI");
+                        if (callbackEPURI != null){
+                            resolvedEndpoint.setURI(callbackEPURI);
+                        }
+                    }
+                }
+/*                
+                // TUSCANY-3932
                 // If the resolved endpoint has a binding with a absolute URI then assume
                 // that URL has been passed in in the forward message and really treat it
                 // as a resolved endpoint.
@@ -151,7 +172,7 @@ public class CallbackServiceReferenceImp
                         epr.setUnresolved(false);
                     }
                 }
-
+*/
                 return epr;
             } catch (CloneNotSupportedException e) {
                 // will not happen