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/25 19:09:21 UTC
svn commit: r1161645 -
/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/context/impl/CallbackServiceReferenceImpl.java
Author: slaws
Date: Thu Aug 25 17:09:21 2011
New Revision: 1161645
URL: http://svn.apache.org/viewvc?rev=1161645&view=rev
Log:
TUSCANY-3932 - changes to get callbacks working over the distributed domain. There's active discussion here http://www.mail-archive.com/dev%40tuscany.apache.org/msg17247.html so this will change will change as a result.
Modified:
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/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=1161645&r1=1161644&r2=1161645&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 Thu Aug 25 17:09:21 2011
@@ -18,10 +18,14 @@
*/
package org.apache.tuscany.sca.core.context.impl;
+import java.net.URI;
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.builder.BindingBuilder;
+import org.apache.tuscany.sca.assembly.builder.BuilderContext;
import org.apache.tuscany.sca.context.CompositeContext;
import org.apache.tuscany.sca.context.ThreadMessageContext;
import org.apache.tuscany.sca.core.invocation.Constants;
@@ -125,6 +129,29 @@ public class CallbackServiceReferenceImp
try {
RuntimeEndpointReference epr = (RuntimeEndpointReference)endpointReference.clone();
epr.setTargetEndpoint(resolvedEndpoint);
+
+ // 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.
+ Binding callbackBinding = resolvedEndpoint.getBinding();
+ if ( callbackBinding != null){
+ URI callbackBindingURI = null;
+ try {
+ callbackBindingURI = new URI(callbackBinding.getURI());
+ } catch (Exception ex){
+ // ignore it, we test for null next
+ }
+ if (callbackBindingURI != null &&
+ callbackBindingURI.isAbsolute()){
+ epr.setBinding(callbackBinding);
+ // TODO - What else?
+ build(epr);
+ epr.setStatus(EndpointReference.Status.WIRED_TARGET_FOUND_AND_MATCHED);
+ epr.setUnresolved(false);
+ }
+ }
+
return epr;
} catch (CloneNotSupportedException e) {
// will not happen
@@ -134,5 +161,16 @@ public class CallbackServiceReferenceImp
return null;
}
}
+
+ private void build(EndpointReference endpointReference) {
+ BindingBuilder builder = builders.getBindingBuilder(endpointReference.getBinding().getType());
+ if (builder != null) {
+ builder.build(endpointReference.getComponent(),
+ endpointReference.getReference(),
+ endpointReference.getBinding(),
+ new BuilderContext(registry),
+ false);
+ }
+ }
}