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