You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2012/03/23 00:19:18 UTC

svn commit: r1304128 - in /tuscany/sca-java-2.x/trunk/modules: assembly/src/main/java/org/apache/tuscany/sca/assembly/ assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/p...

Author: rfeng
Date: Thu Mar 22 23:19:17 2012
New Revision: 1304128

URL: http://svn.apache.org/viewvc?rev=1304128&view=rev
Log:
Fix the binding invokers to use endpoint reference's deployed URI (i.e., the target service endpoint address)

Added:
    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java   (with props)
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java   (with props)
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java   (with props)
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java   (with props)
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java   (with props)
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite
      - copied, changed from r1303591, tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
Modified:
    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java
    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java
    tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java
    tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java
    tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java
    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
    tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java

Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java Thu Mar 22 23:19:17 2012
@@ -123,6 +123,17 @@ public interface EndpointReference exten
      * @param endpoint the target endpoint
      */
     void setTargetEndpoint(Endpoint targetEndpoint);
+    
+    /**
+     * Get the deployed URI of the corresponding service endpoint
+     * @return The deployed URI
+     */
+    String getDeployedURI();
+    /**
+     * Set the deployed URI
+     * @param deployedURI
+     */
+    void setDeployedURI(String deployedURI);
 
     /**
      * Returns the interface contract defining the interface

Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java Thu Mar 22 23:19:17 2012
@@ -48,6 +48,7 @@ public class EndpointReferenceImpl imple
     protected transient ContractBuilder contractBuilder;    
     protected boolean unresolved = true;
     protected String uri;
+    protected String deployedURI;
     protected Component component;
     protected ComponentReference reference;
     protected Binding binding;
@@ -231,6 +232,29 @@ public class EndpointReferenceImpl imple
         this.status = status;
     }
     
+    @Override
+    public String getDeployedURI() {
+        String targetURI = deployedURI;
+        if (targetURI != null) {
+            return targetURI;
+        }
+        if (getTargetEndpoint() != null) {
+            targetURI = getTargetEndpoint().getDeployedURI();
+        }
+        if (targetURI != null) {
+            return targetURI;
+        }
+        if (binding != null) {
+            targetURI = binding.getURI();
+        }
+        return targetURI;
+    }
+    
+    @Override
+    public void setDeployedURI(String deployedURI) {
+        this.deployedURI = deployedURI;
+    }
+    
     /**
      * Indicates whether this EndpointReference is connected to a target service which is asynchronous.
      * This can be marked in one of 3 ways:

Modified: tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java Thu Mar 22 23:19:17 2012
@@ -77,6 +77,7 @@ class AtomReferenceBindingProvider imple
     public Invoker createInvoker(Operation operation) {
         
         String operationName = operation.getName();            
+        String uri = endpointReference.getDeployedURI();
         if (operationName.equals("get")) { 
 
             // Determine the collection item type
@@ -87,25 +88,25 @@ class AtomReferenceBindingProvider imple
                 supportsFeedEntries = true;
             }
 
-            return new AtomBindingInvoker.GetInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.GetInvoker(operation, uri, httpClient, authorizationHeader, this);
 
         } else if (operationName.equals("post")) {
-            return new AtomBindingInvoker.PostInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.PostInvoker(operation, uri, httpClient, authorizationHeader, this);
         } else if (operationName.equals("put")) {
-            return new AtomBindingInvoker.PutInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.PutInvoker(operation, uri, httpClient, authorizationHeader, this);
         } else if (operationName.equals("delete")) {
-            return new AtomBindingInvoker.DeleteInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.DeleteInvoker(operation, uri, httpClient, authorizationHeader, this);
         } else if (operationName.equals("getFeed") || operationName.equals("getAll")) {
-            return new AtomBindingInvoker.GetAllInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.GetAllInvoker(operation, uri, httpClient, authorizationHeader, this);
         } else if (operationName.equals("postMedia")) {
-            return new AtomBindingInvoker.PostMediaInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.PostMediaInvoker(operation, uri, httpClient, authorizationHeader, this);
         } else if (operationName.equals("putMedia")) {
-            return new AtomBindingInvoker.PutMediaInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.PutMediaInvoker(operation, uri, httpClient, authorizationHeader, this);
         } else if (operationName.equals("query")) {
-            return new AtomBindingInvoker.QueryInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+            return new AtomBindingInvoker.QueryInvoker(operation, uri, httpClient, authorizationHeader, this);
         }
 
-        return new AtomBindingInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
+        return new AtomBindingInvoker(operation, uri, httpClient, authorizationHeader, this);
     }
 
     public InterfaceContract getBindingInterfaceContract() {

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java Thu Mar 22 23:19:17 2012
@@ -65,7 +65,7 @@ public class JSONPInvoker implements Inv
     }
 
     public Message doInvoke(Message msg) throws JsonGenerationException, JsonMappingException, IOException, EncoderException {
-        String uri = endpoint.getBinding().getURI() + "/" + operation.getName();
+        String uri = endpoint.getDeployedURI() + "/" + operation.getName();
         //String[] jsonArgs = objectsToJSON((Object[])msg.getBody());
         String[] jsonArgs = objectsToJSONStrings((Object[])msg.getBody());
 

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java Thu Mar 22 23:19:17 2012
@@ -70,7 +70,7 @@ public class JsonRpcInvoker implements I
     public JsonRpcInvoker(EndpointReference endpointReference, Operation operation, HttpClient httpClient) {
         this.endpointReference = endpointReference;
         this.operation = operation;
-        this.uri = endpointReference.getBinding().getURI();
+        this.uri = endpointReference.getDeployedURI();
         this.httpClient = httpClient;
     }
 

Added: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java?rev=1304128&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java Thu Mar 22 23:19:17 2012
@@ -0,0 +1,117 @@
+/*
+ * 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.jsonrpc;
+
+import java.util.Arrays;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import bean.TestBean;
+import echo.Echo;
+
+public class JSONRPCReferenceTargetTestCase {
+    private static final String ECHO_COMPONENT_WITH_REFERENCE = "EchoComponentWithReferenceTarget";
+    private static Node node;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        try {
+            String contribution = ContributionLocationHelper.getContributionLocation(JSONRPCReferenceTargetTestCase.class);
+            node =
+                NodeFactory.newInstance().createNode(new Contribution("testClient", contribution));
+            node.start();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        node.stop();
+    }
+
+    @Test
+    public void testInvokeReference() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
+        String result = echoComponent.echo("ABC");
+        Assert.assertEquals("echo: ABC", result);
+    }
+
+    @Test
+    public void testInvokeBeanReference() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
+        TestBean bean = new TestBean();
+        bean.setTestInt(1);
+        bean.setTestString("123");
+        bean.setStringArray(Arrays.asList("A", "B"));
+        TestBean result = echoComponent.echoBean(bean);
+        Assert.assertEquals(bean, result);
+    }
+
+    @Test
+    public void testInvokeReferenceVoidOperation() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
+        echoComponent.echoVoid();
+    }
+
+    @Test(expected = Exception.class)
+    public void testInvokeReferenceException() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
+        try {
+            echoComponent.echoBusinessException();
+        } catch (Exception e) {
+            System.err.println(e);
+            throw e;
+        }
+    }
+
+    @Test
+    public void testInvokeReference20() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, "EchoComponentWithReference20");
+        String result = echoComponent.echo("ABC");
+        Assert.assertEquals("echo: ABC", result);
+    }
+
+    @Test
+    public void testInvokeReferenceVoidOperation20() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, "EchoComponentWithReference20");
+        echoComponent.echoVoid();
+    }
+
+    @Test(expected = Exception.class)
+    public void testInvokeReferenceException20() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, "EchoComponentWithReference20");
+        try {
+            echoComponent.echoBusinessException();
+        } catch (Exception e) {
+            System.err.println(e);
+            throw e;
+        }
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite Thu Mar 22 23:19:17 2012
@@ -36,4 +36,12 @@
         </service>
     </component>
     
+    <component name="EchoComponent1">
+        <implementation.java class="echo.EchoComponentImpl"/>
+        <service name="Echo">
+            <tuscany:binding.jsonrpc name="jsonrpc" uri="/services/EchoService"/>
+            <tuscany:binding.jsonrpc version="2.0" name="jsonrpc20" uri="/services/EchoService20"/>
+        </service>
+    </component>
+    
 </composite>

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite Thu Mar 22 23:19:17 2012
@@ -38,4 +38,11 @@
         </reference>
     </component>
     
+    <component name="EchoComponentWithReferenceTarget">
+        <implementation.java class="echo.EchoClientImpl" />
+        <reference name="echoReference" target="EchoComponent1/Echo/jsonrpc">
+        </reference>
+    </component>
+    
+    
 </composite>

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF Thu Mar 22 23:19:17 2012
@@ -30,6 +30,7 @@ Import-Package: javax.jws,
  org.apache.tuscany.sca.databinding.xml;version="2.0.0",
  org.apache.tuscany.sca.extensibility;version="2.0.0",
  org.apache.tuscany.sca.host.http;version="2.0.0",
+ org.apache.tuscany.sca.host.http.client;version="2.0.0",
  org.apache.tuscany.sca.interfacedef;version="2.0.0",
  org.apache.tuscany.sca.interfacedef.impl;version="2.0.0",
  org.apache.tuscany.sca.interfacedef.java;version="2.0.0",

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java Thu Mar 22 23:19:17 2012
@@ -55,6 +55,7 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.UriBuilder;
 
 import org.apache.http.client.HttpClient;
+import org.apache.tuscany.sca.assembly.EndpointReference;
 import org.apache.tuscany.sca.assembly.WireFormat;
 import org.apache.tuscany.sca.binding.rest.RESTBinding;
 import org.apache.tuscany.sca.binding.rest.wireformat.json.JSONWireFormat;
@@ -77,15 +78,17 @@ import org.apache.wink.client.handlers.B
  */
 public class RESTBindingInvoker implements Invoker {
     private ExtensionPointRegistry registry;
+    private EndpointReference endpointReference;
     private RESTBinding binding;
     private Operation operation;
     private RestClient restClient;
     private String httpMethod;
     private Class<?> responseType;
 
-    public RESTBindingInvoker(ExtensionPointRegistry registry, RESTBinding binding, Operation operation, HttpClient httpClient) {
+    public RESTBindingInvoker(ExtensionPointRegistry registry, EndpointReference endpointReference, RESTBinding binding, Operation operation, HttpClient httpClient) {
         super();
         this.registry = registry;
+        this.endpointReference = endpointReference;
         this.binding = binding;
         this.operation = operation;
         this.restClient = createRestClient(httpClient);
@@ -165,7 +168,7 @@ public class RESTBindingInvoker implemen
         Object entity = null;
         Object[] args = msg.getBody();
 
-        URI uri = URI.create(binding.getURI());
+        URI uri = URI.create(endpointReference.getDeployedURI());
         UriBuilder uriBuilder = UriBuilder.fromUri(uri);
 
         Method method = ((JavaOperation)operation).getJavaMethod();

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java Thu Mar 22 23:19:17 2012
@@ -50,7 +50,7 @@ public class RESTReferenceBindingProvide
     }
 
     public Invoker createInvoker(Operation operation) {
-        return new RESTBindingInvoker(registry, (RESTBinding)endpointReference.getBinding(), operation, httpClient);
+        return new RESTBindingInvoker(registry, endpointReference, (RESTBinding)endpointReference.getBinding(), operation, httpClient);
     }
 
     public InterfaceContract getBindingInterfaceContract() {

Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java?rev=1304128&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java Thu Mar 22 23:19:17 2012
@@ -0,0 +1,65 @@
+/*
+ * 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.rest;
+
+import java.util.Arrays;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import services.echo.jaxrs.Echo;
+
+public class RESTReferenceTestCase {
+    private static final String ECHO_COMPONENT_WITH_REFERENCE = "EchoClientComponent/Echo";
+    private static Node node;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        try {
+            String contribution = ContributionLocationHelper.getContributionLocation(RESTReferenceTestCase.class);
+            node =
+                NodeFactory.newInstance().createNode("rest-reference.composite",
+                                                     new Contribution("testClient", contribution));
+            node.start();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        node.stop();
+    }
+
+    @Test
+    public void testInvokeReference() throws Exception {
+        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
+        String result = echoComponent.echo("ABC");
+        Assert.assertEquals("echo: ABC", result);
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java?rev=1304128&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java Thu Mar 22 23:19:17 2012
@@ -0,0 +1,47 @@
+/*
+ * 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 services.echo.jaxrs;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.QueryParam;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * Interface of our sample JSONRPC service.
+ *
+ * @version $Rev$ $Date$
+ */
+@Remotable
+@Path("")
+public interface Echo {
+    @GET
+    String echo(@QueryParam("msg") String msg);
+
+    @GET
+    int echoInt(@QueryParam("param") int param);
+
+    @GET
+    String [] echoArrayString(@QueryParam("msgArray") String[] stringArray);
+
+    @GET
+    int [] echoArrayInt(@QueryParam("intArray") int[] intArray);
+
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java?rev=1304128&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java Thu Mar 22 23:19:17 2012
@@ -0,0 +1,43 @@
+/*
+ * 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 services.echo.jaxrs;
+
+import org.oasisopen.sca.annotation.Reference;
+
+public class EchoClientImpl implements Echo {
+    @Reference
+    private Echo echoService;
+
+    public String echo(String msg) {
+        return "echo: "+ echoService.echo(msg);
+    }
+
+    public int echoInt(int param) {
+        return echoService.echoInt(param);
+    }
+
+    public String[] echoArrayString(String[] stringArray) {
+        return echoService.echoArrayString(stringArray);
+    }
+
+    public int[] echoArrayInt(int[] intArray) {
+        return echoService.echoArrayInt(intArray);
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java?rev=1304128&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java Thu Mar 22 23:19:17 2012
@@ -0,0 +1,45 @@
+/*
+ * 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 services.echo.jaxrs;
+
+
+/**
+ * A simple client component that uses a reference with an REST binding.
+ *
+ * @version $Rev$ $Date$
+ */
+public class EchoImpl implements Echo {
+
+    public String echo(String msg) {
+        return msg;
+    }
+
+    public int echoInt(int param) {
+        int value = param;
+        return value;
+    }
+
+    public String[] echoArrayString(String[] stringArray) {
+        return stringArray;
+    }
+
+    public int[] echoArrayInt(int[] intArray) {
+        return intArray;
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite (from r1303591, tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite?p2=tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite&p1=tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite&r1=1303591&r2=1304128&rev=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite Thu Mar 22 23:19:17 2012
@@ -1,39 +1,42 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * 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.    
--->
-<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
-	xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
-	targetNamespace="http://jsonrpc"
-	xmlns:jsonrpc="http://jsonrpc"
-	name="JSONRPCBinding">
-
-    <!--service name="EchoService" promote="EchoComponent">
-        <interface.java interface="echo.Echo"/>
-        <tuscany:binding.jsonrpc uri="http://localhost:8085/SCADomain/EchoService"/>
-    </service -->
-
-    <component name="EchoComponent">
-        <implementation.java class="echo.EchoComponentImpl"/>
-        <service name="Echo">
-            <tuscany:binding.jsonrpc uri="http://localhost:8085/SCADomain/EchoService"/>
-            <tuscany:binding.jsonrpc version="2.0" name="jsonrpc20" uri="http://localhost:8085/SCADomain/EchoService20"/>
-        </service>
-    </component>
-    
-</composite>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+	xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+	targetNamespace="http://rest"
+	xmlns:rest="http://rest"
+	name="RESTReference">
+
+    <component name="EchoClientComponent">
+        <implementation.java class="services.echo.jaxrs.EchoClientImpl" />
+        <reference name="echoService" target="EchoComponent/Echo">
+        </reference>
+    </component>
+
+    <component name="EchoComponent">
+        <implementation.java class="services.echo.jaxrs.EchoImpl" />
+        <service name="Echo">
+            <tuscany:binding.rest name="rest" uri="/EchoService/rest">
+            </tuscany:binding.rest>
+        </service>
+
+    </component>
+    
+    
+</composite>

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java Thu Mar 22 23:19:17 2012
@@ -40,11 +40,13 @@ import org.apache.tuscany.sca.runtime.Ru
 public class RMIReferenceBindingProvider implements ReferenceBindingProvider {
 
     private RuntimeComponentReference reference;
+    private EndpointReference endpointReference;
     private RMIBinding binding;
     private RMIHost rmiHost;
     
     public RMIReferenceBindingProvider(EndpointReference endpointReference,
                                        RMIHost rmiHost) {
+           this.endpointReference = endpointReference;
            this.reference = (RuntimeComponentReference)endpointReference.getReference();
            this.binding = (RMIBinding)endpointReference.getBinding();
            this.rmiHost = rmiHost;
@@ -63,7 +65,7 @@ public class RMIReferenceBindingProvider
             throw new IllegalArgumentException(e);
         }
 
-        return new RMIBindingInvoker(rmiHost, binding.getURI(), remoteMethod);
+        return new RMIBindingInvoker(rmiHost, endpointReference.getDeployedURI(), remoteMethod);
     }
 
     public void start() {

Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java Thu Mar 22 23:19:17 2012
@@ -128,7 +128,7 @@ public class JAXWSBindingInvoker impleme
         QName serviceName = wsBinding.getService().getQName();
         QName portName = new QName(serviceName.getNamespaceURI(), wsBinding.getPort().getName());
         Service service = Service.create(serviceName);
-        service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, wsBinding.getURI());   
+        service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointReference.getDeployedURI());   
         
         return service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
     }
@@ -154,7 +154,7 @@ public class JAXWSBindingInvoker impleme
         if (wsdlLocation != null) {
             return createDispatchFromWSDL(wsdlLocation);
         } else {
-            return createDispatchFromURI(wsBinding.getURI());                       
+            return createDispatchFromURI(endpointReference.getDeployedURI());                       
         }        
     }
     
@@ -321,7 +321,7 @@ public class JAXWSBindingInvoker impleme
         if (dynamicDispatchForCallback) {            
             Endpoint ep = msg.getTo();
             if (ep != null && ep.getBinding() != null) {
-                String address = ep.getBinding().getURI();
+                String address = ep.getDeployedURI();
                 invocationDispatch = createDynamicDispatch(address);
             } else {
                 throw new ServiceRuntimeException("[BWS20025] Unable to determine destination endpoint for endpoint reference " + endpointReference);
@@ -365,7 +365,7 @@ public class JAXWSBindingInvoker impleme
             // addWSAFromHeader(sh, fromEPR);
             SOAPHeaderElement fromH = sh.addHeaderElement(QNAME_WSA_FROM);
             SOAPElement fromAddress = fromH.addChildElement(QNAME_WSA_ADDRESS);            
-            fromAddress.setTextContent(callbackEndpoint.getBinding().getURI());
+            fromAddress.setTextContent(callbackEndpoint.getDeployedURI());
 
             addWSAActionHeader(sh, action);
 
@@ -406,7 +406,7 @@ public class JAXWSBindingInvoker impleme
         if (to == null) {
             Endpoint ep = msg.getTo();
             if (ep != null && ep.getBinding() != null) {
-                address = ep.getBinding().getURI();
+                address = ep.getDeployedURI();
             } else {
                 throw new ServiceRuntimeException(
                                                   "[BWS20025] Unable to determine destination endpoint for endpoint reference " + endpointReference);
@@ -435,7 +435,7 @@ public class JAXWSBindingInvoker impleme
             }
         }
         if (ep == null || ep.equals("")) {
-            ep = wsBinding.getURI();
+            ep = endpointReference.getDeployedURI();
         }
         return ep;
     }

Modified: tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java?rev=1304128&r1=1304127&r2=1304128&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java Thu Mar 22 23:19:17 2012
@@ -505,15 +505,12 @@ public class EndpointReferenceBinderImpl
         } else {
             endpointReference.setTargetEndpoint(matchedEndpoint);
             Binding binding = matchedEndpoint.getBinding();
-            // Reverted the change, see https://issues.apache.org/jira/browse/TUSCANY-4029
-            /*
             try {
-				endpointReference.setBinding((Binding) binding.clone());
-			} catch (CloneNotSupportedException e) {
-				// shouldn't happen
-				throw new RuntimeException(e);
-			}
-	   */
+                endpointReference.setBinding((Binding)binding.clone());
+            } catch (CloneNotSupportedException e) {
+                // shouldn't happen
+                throw new RuntimeException(e);
+            }
             endpointReference.setBinding(binding);
             // TUSCANY-3873 - add policy from the service
             //                we don't care about intents at this stage



Re: svn commit: r1304128 - in /tuscany/sca-java-2.x/trunk/modules: assembly/src/main/java/org/apache/tuscany/sca/assembly/ assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/p...

Posted by Raymond Feng <en...@gmail.com>.
This should conclude the argument that Ant was having with us. His change is now added back with all the fixes to the binding invokers made by the "to-be-nicer" guy.

Thanks,
Raymond

On Mar 22, 2012, at 4:19 PM, rfeng@apache.org wrote:

> Author: rfeng
> Date: Thu Mar 22 23:19:17 2012
> New Revision: 1304128
> 
> URL: http://svn.apache.org/viewvc?rev=1304128&view=rev
> Log:
> Fix the binding invokers to use endpoint reference's deployed URI (i.e., the target service endpoint address)
> 
> Added:
>    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java   (with props)
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java   (with props)
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java   (with props)
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java   (with props)
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java   (with props)
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite
>      - copied, changed from r1303591, tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
> Modified:
>    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java
>    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java
>    tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java
>    tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java
>    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
>    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
>    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java
>    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java
>    tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java
>    tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
>    tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/EndpointReference.java Thu Mar 22 23:19:17 2012
> @@ -123,6 +123,17 @@ public interface EndpointReference exten
>      * @param endpoint the target endpoint
>      */
>     void setTargetEndpoint(Endpoint targetEndpoint);
> +    
> +    /**
> +     * Get the deployed URI of the corresponding service endpoint
> +     * @return The deployed URI
> +     */
> +    String getDeployedURI();
> +    /**
> +     * Set the deployed URI
> +     * @param deployedURI
> +     */
> +    void setDeployedURI(String deployedURI);
> 
>     /**
>      * Returns the interface contract defining the interface
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointReferenceImpl.java Thu Mar 22 23:19:17 2012
> @@ -48,6 +48,7 @@ public class EndpointReferenceImpl imple
>     protected transient ContractBuilder contractBuilder;    
>     protected boolean unresolved = true;
>     protected String uri;
> +    protected String deployedURI;
>     protected Component component;
>     protected ComponentReference reference;
>     protected Binding binding;
> @@ -231,6 +232,29 @@ public class EndpointReferenceImpl imple
>         this.status = status;
>     }
> 
> +    @Override
> +    public String getDeployedURI() {
> +        String targetURI = deployedURI;
> +        if (targetURI != null) {
> +            return targetURI;
> +        }
> +        if (getTargetEndpoint() != null) {
> +            targetURI = getTargetEndpoint().getDeployedURI();
> +        }
> +        if (targetURI != null) {
> +            return targetURI;
> +        }
> +        if (binding != null) {
> +            targetURI = binding.getURI();
> +        }
> +        return targetURI;
> +    }
> +    
> +    @Override
> +    public void setDeployedURI(String deployedURI) {
> +        this.deployedURI = deployedURI;
> +    }
> +    
>     /**
>      * Indicates whether this EndpointReference is connected to a target service which is asynchronous.
>      * This can be marked in one of 3 ways:
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomReferenceBindingProvider.java Thu Mar 22 23:19:17 2012
> @@ -77,6 +77,7 @@ class AtomReferenceBindingProvider imple
>     public Invoker createInvoker(Operation operation) {
> 
>         String operationName = operation.getName();            
> +        String uri = endpointReference.getDeployedURI();
>         if (operationName.equals("get")) { 
> 
>             // Determine the collection item type
> @@ -87,25 +88,25 @@ class AtomReferenceBindingProvider imple
>                 supportsFeedEntries = true;
>             }
> 
> -            return new AtomBindingInvoker.GetInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.GetInvoker(operation, uri, httpClient, authorizationHeader, this);
> 
>         } else if (operationName.equals("post")) {
> -            return new AtomBindingInvoker.PostInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.PostInvoker(operation, uri, httpClient, authorizationHeader, this);
>         } else if (operationName.equals("put")) {
> -            return new AtomBindingInvoker.PutInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.PutInvoker(operation, uri, httpClient, authorizationHeader, this);
>         } else if (operationName.equals("delete")) {
> -            return new AtomBindingInvoker.DeleteInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.DeleteInvoker(operation, uri, httpClient, authorizationHeader, this);
>         } else if (operationName.equals("getFeed") || operationName.equals("getAll")) {
> -            return new AtomBindingInvoker.GetAllInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.GetAllInvoker(operation, uri, httpClient, authorizationHeader, this);
>         } else if (operationName.equals("postMedia")) {
> -            return new AtomBindingInvoker.PostMediaInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.PostMediaInvoker(operation, uri, httpClient, authorizationHeader, this);
>         } else if (operationName.equals("putMedia")) {
> -            return new AtomBindingInvoker.PutMediaInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.PutMediaInvoker(operation, uri, httpClient, authorizationHeader, this);
>         } else if (operationName.equals("query")) {
> -            return new AtomBindingInvoker.QueryInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +            return new AtomBindingInvoker.QueryInvoker(operation, uri, httpClient, authorizationHeader, this);
>         }
> 
> -        return new AtomBindingInvoker(operation, binding.getURI(), httpClient, authorizationHeader, this);
> +        return new AtomBindingInvoker(operation, uri, httpClient, authorizationHeader, this);
>     }
> 
>     public InterfaceContract getBindingInterfaceContract() {
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonp/runtime/JSONPInvoker.java Thu Mar 22 23:19:17 2012
> @@ -65,7 +65,7 @@ public class JSONPInvoker implements Inv
>     }
> 
>     public Message doInvoke(Message msg) throws JsonGenerationException, JsonMappingException, IOException, EncoderException {
> -        String uri = endpoint.getBinding().getURI() + "/" + operation.getName();
> +        String uri = endpoint.getDeployedURI() + "/" + operation.getName();
>         //String[] jsonArgs = objectsToJSON((Object[])msg.getBody());
>         String[] jsonArgs = objectsToJSONStrings((Object[])msg.getBody());
> 
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java Thu Mar 22 23:19:17 2012
> @@ -70,7 +70,7 @@ public class JsonRpcInvoker implements I
>     public JsonRpcInvoker(EndpointReference endpointReference, Operation operation, HttpClient httpClient) {
>         this.endpointReference = endpointReference;
>         this.operation = operation;
> -        this.uri = endpointReference.getBinding().getURI();
> +        this.uri = endpointReference.getDeployedURI();
>         this.httpClient = httpClient;
>     }
> 
> 
> Added: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java?rev=1304128&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java Thu Mar 22 23:19:17 2012
> @@ -0,0 +1,117 @@
> +/*
> + * 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.jsonrpc;
> +
> +import java.util.Arrays;
> +
> +import junit.framework.Assert;
> +
> +import org.apache.tuscany.sca.node.Contribution;
> +import org.apache.tuscany.sca.node.ContributionLocationHelper;
> +import org.apache.tuscany.sca.node.Node;
> +import org.apache.tuscany.sca.node.NodeFactory;
> +import org.junit.AfterClass;
> +import org.junit.BeforeClass;
> +import org.junit.Test;
> +
> +import bean.TestBean;
> +import echo.Echo;
> +
> +public class JSONRPCReferenceTargetTestCase {
> +    private static final String ECHO_COMPONENT_WITH_REFERENCE = "EchoComponentWithReferenceTarget";
> +    private static Node node;
> +
> +    @BeforeClass
> +    public static void setUp() throws Exception {
> +        try {
> +            String contribution = ContributionLocationHelper.getContributionLocation(JSONRPCReferenceTargetTestCase.class);
> +            node =
> +                NodeFactory.newInstance().createNode(new Contribution("testClient", contribution));
> +            node.start();
> +
> +        } catch (Exception e) {
> +            e.printStackTrace();
> +        }
> +    }
> +
> +    @AfterClass
> +    public static void tearDown() throws Exception {
> +        node.stop();
> +    }
> +
> +    @Test
> +    public void testInvokeReference() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
> +        String result = echoComponent.echo("ABC");
> +        Assert.assertEquals("echo: ABC", result);
> +    }
> +
> +    @Test
> +    public void testInvokeBeanReference() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
> +        TestBean bean = new TestBean();
> +        bean.setTestInt(1);
> +        bean.setTestString("123");
> +        bean.setStringArray(Arrays.asList("A", "B"));
> +        TestBean result = echoComponent.echoBean(bean);
> +        Assert.assertEquals(bean, result);
> +    }
> +
> +    @Test
> +    public void testInvokeReferenceVoidOperation() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
> +        echoComponent.echoVoid();
> +    }
> +
> +    @Test(expected = Exception.class)
> +    public void testInvokeReferenceException() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
> +        try {
> +            echoComponent.echoBusinessException();
> +        } catch (Exception e) {
> +            System.err.println(e);
> +            throw e;
> +        }
> +    }
> +
> +    @Test
> +    public void testInvokeReference20() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, "EchoComponentWithReference20");
> +        String result = echoComponent.echo("ABC");
> +        Assert.assertEquals("echo: ABC", result);
> +    }
> +
> +    @Test
> +    public void testInvokeReferenceVoidOperation20() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, "EchoComponentWithReference20");
> +        echoComponent.echoVoid();
> +    }
> +
> +    @Test(expected = Exception.class)
> +    public void testInvokeReferenceException20() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, "EchoComponentWithReference20");
> +        try {
> +            echoComponent.echoBusinessException();
> +        } catch (Exception e) {
> +            System.err.println(e);
> +            throw e;
> +        }
> +    }
> +
> +}
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
> ------------------------------------------------------------------------------
>    svn:keywords = Rev Date
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite Thu Mar 22 23:19:17 2012
> @@ -36,4 +36,12 @@
>         </service>
>     </component>
> 
> +    <component name="EchoComponent1">
> +        <implementation.java class="echo.EchoComponentImpl"/>
> +        <service name="Echo">
> +            <tuscany:binding.jsonrpc name="jsonrpc" uri="/services/EchoService"/>
> +            <tuscany:binding.jsonrpc version="2.0" name="jsonrpc20" uri="/services/EchoService20"/>
> +        </service>
> +    </component>
> +    
> </composite>
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite Thu Mar 22 23:19:17 2012
> @@ -38,4 +38,11 @@
>         </reference>
>     </component>
> 
> +    <component name="EchoComponentWithReferenceTarget">
> +        <implementation.java class="echo.EchoClientImpl" />
> +        <reference name="echoReference" target="EchoComponent1/Echo/jsonrpc">
> +        </reference>
> +    </component>
> +    
> +    
> </composite>
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/META-INF/MANIFEST.MF Thu Mar 22 23:19:17 2012
> @@ -30,6 +30,7 @@ Import-Package: javax.jws,
>  org.apache.tuscany.sca.databinding.xml;version="2.0.0",
>  org.apache.tuscany.sca.extensibility;version="2.0.0",
>  org.apache.tuscany.sca.host.http;version="2.0.0",
> + org.apache.tuscany.sca.host.http.client;version="2.0.0",
>  org.apache.tuscany.sca.interfacedef;version="2.0.0",
>  org.apache.tuscany.sca.interfacedef.impl;version="2.0.0",
>  org.apache.tuscany.sca.interfacedef.java;version="2.0.0",
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTBindingInvoker.java Thu Mar 22 23:19:17 2012
> @@ -55,6 +55,7 @@ import javax.ws.rs.core.MediaType;
> import javax.ws.rs.core.UriBuilder;
> 
> import org.apache.http.client.HttpClient;
> +import org.apache.tuscany.sca.assembly.EndpointReference;
> import org.apache.tuscany.sca.assembly.WireFormat;
> import org.apache.tuscany.sca.binding.rest.RESTBinding;
> import org.apache.tuscany.sca.binding.rest.wireformat.json.JSONWireFormat;
> @@ -77,15 +78,17 @@ import org.apache.wink.client.handlers.B
>  */
> public class RESTBindingInvoker implements Invoker {
>     private ExtensionPointRegistry registry;
> +    private EndpointReference endpointReference;
>     private RESTBinding binding;
>     private Operation operation;
>     private RestClient restClient;
>     private String httpMethod;
>     private Class<?> responseType;
> 
> -    public RESTBindingInvoker(ExtensionPointRegistry registry, RESTBinding binding, Operation operation, HttpClient httpClient) {
> +    public RESTBindingInvoker(ExtensionPointRegistry registry, EndpointReference endpointReference, RESTBinding binding, Operation operation, HttpClient httpClient) {
>         super();
>         this.registry = registry;
> +        this.endpointReference = endpointReference;
>         this.binding = binding;
>         this.operation = operation;
>         this.restClient = createRestClient(httpClient);
> @@ -165,7 +168,7 @@ public class RESTBindingInvoker implemen
>         Object entity = null;
>         Object[] args = msg.getBody();
> 
> -        URI uri = URI.create(binding.getURI());
> +        URI uri = URI.create(endpointReference.getDeployedURI());
>         UriBuilder uriBuilder = UriBuilder.fromUri(uri);
> 
>         Method method = ((JavaOperation)operation).getJavaMethod();
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTReferenceBindingProvider.java Thu Mar 22 23:19:17 2012
> @@ -50,7 +50,7 @@ public class RESTReferenceBindingProvide
>     }
> 
>     public Invoker createInvoker(Operation operation) {
> -        return new RESTBindingInvoker(registry, (RESTBinding)endpointReference.getBinding(), operation, httpClient);
> +        return new RESTBindingInvoker(registry, endpointReference, (RESTBinding)endpointReference.getBinding(), operation, httpClient);
>     }
> 
>     public InterfaceContract getBindingInterfaceContract() {
> 
> Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java?rev=1304128&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java Thu Mar 22 23:19:17 2012
> @@ -0,0 +1,65 @@
> +/*
> + * 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.rest;
> +
> +import java.util.Arrays;
> +
> +import junit.framework.Assert;
> +
> +import org.apache.tuscany.sca.node.Contribution;
> +import org.apache.tuscany.sca.node.ContributionLocationHelper;
> +import org.apache.tuscany.sca.node.Node;
> +import org.apache.tuscany.sca.node.NodeFactory;
> +import org.junit.AfterClass;
> +import org.junit.BeforeClass;
> +import org.junit.Test;
> +
> +import services.echo.jaxrs.Echo;
> +
> +public class RESTReferenceTestCase {
> +    private static final String ECHO_COMPONENT_WITH_REFERENCE = "EchoClientComponent/Echo";
> +    private static Node node;
> +
> +    @BeforeClass
> +    public static void setUp() throws Exception {
> +        try {
> +            String contribution = ContributionLocationHelper.getContributionLocation(RESTReferenceTestCase.class);
> +            node =
> +                NodeFactory.newInstance().createNode("rest-reference.composite",
> +                                                     new Contribution("testClient", contribution));
> +            node.start();
> +
> +        } catch (Exception e) {
> +            e.printStackTrace();
> +        }
> +    }
> +
> +    @AfterClass
> +    public static void tearDown() throws Exception {
> +        node.stop();
> +    }
> +
> +    @Test
> +    public void testInvokeReference() throws Exception {
> +        Echo echoComponent = node.getService(Echo.class, ECHO_COMPONENT_WITH_REFERENCE);
> +        String result = echoComponent.echo("ABC");
> +        Assert.assertEquals("echo: ABC", result);
> +    }
> +
> +}
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/RESTReferenceTestCase.java
> ------------------------------------------------------------------------------
>    svn:keywords = Rev Date
> 
> Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java?rev=1304128&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java Thu Mar 22 23:19:17 2012
> @@ -0,0 +1,47 @@
> +/*
> + * 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 services.echo.jaxrs;
> +
> +import javax.ws.rs.GET;
> +import javax.ws.rs.Path;
> +import javax.ws.rs.QueryParam;
> +
> +import org.oasisopen.sca.annotation.Remotable;
> +
> +/**
> + * Interface of our sample JSONRPC service.
> + *
> + * @version $Rev$ $Date$
> + */
> +@Remotable
> +@Path("")
> +public interface Echo {
> +    @GET
> +    String echo(@QueryParam("msg") String msg);
> +
> +    @GET
> +    int echoInt(@QueryParam("param") int param);
> +
> +    @GET
> +    String [] echoArrayString(@QueryParam("msgArray") String[] stringArray);
> +
> +    @GET
> +    int [] echoArrayInt(@QueryParam("intArray") int[] intArray);
> +
> +}
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/Echo.java
> ------------------------------------------------------------------------------
>    svn:keywords = Rev Date
> 
> Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java?rev=1304128&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java Thu Mar 22 23:19:17 2012
> @@ -0,0 +1,43 @@
> +/*
> + * 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 services.echo.jaxrs;
> +
> +import org.oasisopen.sca.annotation.Reference;
> +
> +public class EchoClientImpl implements Echo {
> +    @Reference
> +    private Echo echoService;
> +
> +    public String echo(String msg) {
> +        return "echo: "+ echoService.echo(msg);
> +    }
> +
> +    public int echoInt(int param) {
> +        return echoService.echoInt(param);
> +    }
> +
> +    public String[] echoArrayString(String[] stringArray) {
> +        return echoService.echoArrayString(stringArray);
> +    }
> +
> +    public int[] echoArrayInt(int[] intArray) {
> +        return echoService.echoArrayInt(intArray);
> +    }
> +}
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoClientImpl.java
> ------------------------------------------------------------------------------
>    svn:keywords = Rev Date
> 
> Added: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java?rev=1304128&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java Thu Mar 22 23:19:17 2012
> @@ -0,0 +1,45 @@
> +/*
> + * 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 services.echo.jaxrs;
> +
> +
> +/**
> + * A simple client component that uses a reference with an REST binding.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class EchoImpl implements Echo {
> +
> +    public String echo(String msg) {
> +        return msg;
> +    }
> +
> +    public int echoInt(int param) {
> +        int value = param;
> +        return value;
> +    }
> +
> +    public String[] echoArrayString(String[] stringArray) {
> +        return stringArray;
> +    }
> +
> +    public int[] echoArrayInt(int[] intArray) {
> +        return intArray;
> +    }
> +}
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/services/echo/jaxrs/EchoImpl.java
> ------------------------------------------------------------------------------
>    svn:keywords = Rev Date
> 
> Copied: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite (from r1303591, tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite)
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite?p2=tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite&p1=tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite&r1=1303591&r2=1304128&rev=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/resources/rest-reference.composite Thu Mar 22 23:19:17 2012
> @@ -1,39 +1,42 @@
> -<?xml version="1.0" encoding="UTF-8"?>
> -<!--
> - * 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.    
> --->
> -<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
> -	xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
> -	targetNamespace="http://jsonrpc"
> -	xmlns:jsonrpc="http://jsonrpc"
> -	name="JSONRPCBinding">
> -
> -    <!--service name="EchoService" promote="EchoComponent">
> -        <interface.java interface="echo.Echo"/>
> -        <tuscany:binding.jsonrpc uri="http://localhost:8085/SCADomain/EchoService"/>
> -    </service -->
> -
> -    <component name="EchoComponent">
> -        <implementation.java class="echo.EchoComponentImpl"/>
> -        <service name="Echo">
> -            <tuscany:binding.jsonrpc uri="http://localhost:8085/SCADomain/EchoService"/>
> -            <tuscany:binding.jsonrpc version="2.0" name="jsonrpc20" uri="http://localhost:8085/SCADomain/EchoService20"/>
> -        </service>
> -    </component>
> -    
> -</composite>
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> + * 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.    
> +-->
> +<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
> +	xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
> +	targetNamespace="http://rest"
> +	xmlns:rest="http://rest"
> +	name="RESTReference">
> +
> +    <component name="EchoClientComponent">
> +        <implementation.java class="services.echo.jaxrs.EchoClientImpl" />
> +        <reference name="echoService" target="EchoComponent/Echo">
> +        </reference>
> +    </component>
> +
> +    <component name="EchoComponent">
> +        <implementation.java class="services.echo.jaxrs.EchoImpl" />
> +        <service name="Echo">
> +            <tuscany:binding.rest name="rest" uri="/EchoService/rest">
> +            </tuscany:binding.rest>
> +        </service>
> +
> +    </component>
> +    
> +    
> +</composite>
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-rmi-runtime/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIReferenceBindingProvider.java Thu Mar 22 23:19:17 2012
> @@ -40,11 +40,13 @@ import org.apache.tuscany.sca.runtime.Ru
> public class RMIReferenceBindingProvider implements ReferenceBindingProvider {
> 
>     private RuntimeComponentReference reference;
> +    private EndpointReference endpointReference;
>     private RMIBinding binding;
>     private RMIHost rmiHost;
> 
>     public RMIReferenceBindingProvider(EndpointReference endpointReference,
>                                        RMIHost rmiHost) {
> +           this.endpointReference = endpointReference;
>            this.reference = (RuntimeComponentReference)endpointReference.getReference();
>            this.binding = (RMIBinding)endpointReference.getBinding();
>            this.rmiHost = rmiHost;
> @@ -63,7 +65,7 @@ public class RMIReferenceBindingProvider
>             throw new IllegalArgumentException(e);
>         }
> 
> -        return new RMIBindingInvoker(rmiHost, binding.getURI(), remoteMethod);
> +        return new RMIBindingInvoker(rmiHost, endpointReference.getDeployedURI(), remoteMethod);
>     }
> 
>     public void start() {
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java Thu Mar 22 23:19:17 2012
> @@ -128,7 +128,7 @@ public class JAXWSBindingInvoker impleme
>         QName serviceName = wsBinding.getService().getQName();
>         QName portName = new QName(serviceName.getNamespaceURI(), wsBinding.getPort().getName());
>         Service service = Service.create(serviceName);
> -        service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, wsBinding.getURI());   
> +        service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointReference.getDeployedURI());   
> 
>         return service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
>     }
> @@ -154,7 +154,7 @@ public class JAXWSBindingInvoker impleme
>         if (wsdlLocation != null) {
>             return createDispatchFromWSDL(wsdlLocation);
>         } else {
> -            return createDispatchFromURI(wsBinding.getURI());                       
> +            return createDispatchFromURI(endpointReference.getDeployedURI());                       
>         }        
>     }
> 
> @@ -321,7 +321,7 @@ public class JAXWSBindingInvoker impleme
>         if (dynamicDispatchForCallback) {            
>             Endpoint ep = msg.getTo();
>             if (ep != null && ep.getBinding() != null) {
> -                String address = ep.getBinding().getURI();
> +                String address = ep.getDeployedURI();
>                 invocationDispatch = createDynamicDispatch(address);
>             } else {
>                 throw new ServiceRuntimeException("[BWS20025] Unable to determine destination endpoint for endpoint reference " + endpointReference);
> @@ -365,7 +365,7 @@ public class JAXWSBindingInvoker impleme
>             // addWSAFromHeader(sh, fromEPR);
>             SOAPHeaderElement fromH = sh.addHeaderElement(QNAME_WSA_FROM);
>             SOAPElement fromAddress = fromH.addChildElement(QNAME_WSA_ADDRESS);            
> -            fromAddress.setTextContent(callbackEndpoint.getBinding().getURI());
> +            fromAddress.setTextContent(callbackEndpoint.getDeployedURI());
> 
>             addWSAActionHeader(sh, action);
> 
> @@ -406,7 +406,7 @@ public class JAXWSBindingInvoker impleme
>         if (to == null) {
>             Endpoint ep = msg.getTo();
>             if (ep != null && ep.getBinding() != null) {
> -                address = ep.getBinding().getURI();
> +                address = ep.getDeployedURI();
>             } else {
>                 throw new ServiceRuntimeException(
>                                                   "[BWS20025] Unable to determine destination endpoint for endpoint reference " + endpointReference);
> @@ -435,7 +435,7 @@ public class JAXWSBindingInvoker impleme
>             }
>         }
>         if (ep == null || ep.equals("")) {
> -            ep = wsBinding.getURI();
> +            ep = endpointReference.getDeployedURI();
>         }
>         return ep;
>     }
> 
> Modified: tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java?rev=1304128&r1=1304127&r2=1304128&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java Thu Mar 22 23:19:17 2012
> @@ -505,15 +505,12 @@ public class EndpointReferenceBinderImpl
>         } else {
>             endpointReference.setTargetEndpoint(matchedEndpoint);
>             Binding binding = matchedEndpoint.getBinding();
> -            // Reverted the change, see https://issues.apache.org/jira/browse/TUSCANY-4029
> -            /*
>             try {
> -				endpointReference.setBinding((Binding) binding.clone());
> -			} catch (CloneNotSupportedException e) {
> -				// shouldn't happen
> -				throw new RuntimeException(e);
> -			}
> -	   */
> +                endpointReference.setBinding((Binding)binding.clone());
> +            } catch (CloneNotSupportedException e) {
> +                // shouldn't happen
> +                throw new RuntimeException(e);
> +            }
>             endpointReference.setBinding(binding);
>             // TUSCANY-3873 - add policy from the service
>             //                we don't care about intents at this stage
> 
>