summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2012-03-22 23:19:17 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2012-03-22 23:19:17 +0000
commitf98e8159640f2e47b17756d2d8433330919e858e (patch)
treedc0b66765e25454c321e5412e559136f1ab436f3 /sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src
parent73da1fdb893118d67777a2e8962965d2336ca6e2 (diff)
Fix the binding invokers to use endpoint reference's deployed URI (i.e., the target service endpoint address)
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1304128 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src')
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java2
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java117
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite8
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite7
4 files changed, 133 insertions, 1 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
index 713122f479..ca21599b14 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
+++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JsonRpcInvoker.java
@@ -70,7 +70,7 @@ public class JsonRpcInvoker implements Invoker, DataExchangeSemantics {
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;
}
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
new file mode 100644
index 0000000000..383a862945
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/jsonrpc/JSONRPCReferenceTargetTestCase.java
@@ -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;
+ }
+ }
+
+}
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
index 0c588cf137..44de429713 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
+++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite
@@ -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>
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
index 5391416510..3679e259a4 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
+++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/test/resources/JSONRPCReference.composite
@@ -38,4 +38,11 @@
</reference>
</component>
+ <component name="EchoComponentWithReferenceTarget">
+ <implementation.java class="echo.EchoClientImpl" />
+ <reference name="echoReference" target="EchoComponent1/Echo/jsonrpc">
+ </reference>
+ </component>
+
+
</composite>