summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-09-10 01:12:21 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-09-10 01:12:21 +0000
commit99356bb73f6291ad798dfb579809c355c6db71e4 (patch)
tree6f345732d7538abb64dac1f2abc389add3ed4225 /sca-java-2.x/trunk/modules
parent99ff864f6dc27e598f4850b80ad65b8b9c994877 (diff)
Fix the self reference with explicit bindings
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@995627 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules')
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java6
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite (renamed from sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite)6
-rw-r--r--sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java31
-rw-r--r--sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java27
-rw-r--r--sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java8
5 files changed, 47 insertions, 31 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java b/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java
index 27b8cec2f1..3a5aaedbc3 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java
+++ b/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java
@@ -62,7 +62,7 @@ public class BindingTestCase {
@Test
public void testReference() throws MalformedURLException, IOException {
- HelloWorldService client = node.getService(HelloWorldService.class, "HelloWorldClient");
+ HelloWorldService client = node.getService(HelloWorldService.class, "HelloWorldClient/HelloWorldService/sca");
Assert.assertEquals("Hello beate", client.sayHello("beate"));
Assert.assertEquals("Hello beate arnold", client.sayHello2("beate", "arnold"));
@@ -73,7 +73,7 @@ public class BindingTestCase {
//@Ignore("TUSCANY-3635")
public void testComplexParams() throws MalformedURLException, IOException {
- HelloWorldService client = node.getService(HelloWorldService.class, "HelloWorldClient");
+ HelloWorldService client = node.getService(HelloWorldService.class, "HelloWorldClient/HelloWorldService/sca");
BeanA bean = new BeanA();
bean.setB(true);
@@ -103,7 +103,7 @@ public class BindingTestCase {
@BeforeClass
public static void init() throws Exception {
JettyServer.portDefault = 8085;
- node = NodeFactory.newInstance().createNode("helloworld.composite").start();
+ node = NodeFactory.newInstance().createNode("jsonp/helloworld.composite").start();
}
@AfterClass
diff --git a/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite b/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite
index 065e888bb7..c1061147a8 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite
+++ b/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite
@@ -25,14 +25,16 @@
<component name="HelloWorldComponent">
<implementation.java class="helloworld.HelloWorldImpl"/>
<service name="HelloWorldService" >
- <tuscany:binding.jsonp />
+ <binding.sca name="sca"/>
+ <tuscany:binding.jsonp name="HelloWorldService"/>
</service>
</component>
<component name="HelloWorldClient">
<implementation.java class="helloworld.HelloWorldClient"/>
<reference name="ref" >
- <tuscany:binding.jsonp uri="http://localhost:8085/HelloWorldComponent/HelloWorldService"/>
+ <binding.sca name="sca"/>
+ <tuscany:binding.jsonp name="HelloWorldService" uri="http://localhost:8085/HelloWorldComponent/HelloWorldService"/>
</reference>
</component>
diff --git a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
index 39881ce68d..b6dce222ca 100644
--- a/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
+++ b/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
@@ -22,8 +22,9 @@ package org.apache.tuscany.sca.binding.jsonrpc.provider;
import java.util.ArrayList;
import java.util.List;
+import javax.servlet.Servlet;
+
import org.apache.tuscany.sca.binding.jsonrpc.JSONRPCBinding;
-import org.apache.tuscany.sca.databinding.json.JSONDataBinding;
import org.apache.tuscany.sca.host.http.ServletHost;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
@@ -93,18 +94,28 @@ public class JSONRPCServiceBindingProvider implements ServiceBindingProvider {
// Create and register a Servlet for this service
JSONRPCServiceServlet serviceServlet =
new JSONRPCServiceServlet(messageFactory, endpoint, serviceInterface, proxy);
- String mapping = binding.getURI();
- if (!mapping.endsWith("/")) {
- mapping += "/";
+ String mapping = registerServlet(serviceServlet);
+ servletMappings.add(mapping);
+ }
+
+ public String registerServlet(Servlet servlet) {
+ // Create our HTTP service listener Servlet and register it with the
+ // Servlet host
+ String servletMapping = binding.getURI();
+ if (!servletMapping.endsWith("/")) {
+ servletMapping += "/";
}
- if (!mapping.endsWith("*")) {
- mapping += "*";
+ if (!servletMapping.endsWith("*")) {
+ servletMapping += "*";
}
- servletHost.addServletMapping(mapping, serviceServlet);
- servletMappings.add(mapping);
- servletHost.addServletMapping(binding.getURI(), serviceServlet);
- servletMappings.add(binding.getURI());
+ String mappedURI = servletHost.addServletMapping(servletMapping, servlet);
+ String deployedURI = mappedURI;
+ if (deployedURI.endsWith("*")) {
+ deployedURI = deployedURI.substring(0, deployedURI.length() - 1);
+ }
+ binding.setURI(deployedURI);
+ return mappedURI;
}
public void stop() {
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
index 9a9e5a108e..eaf830ceb5 100644
--- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
+++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java
@@ -211,9 +211,13 @@ public class RESTServiceBindingProvider implements EndpointProvider {
throw new IllegalStateException("No get or service method found on the service");
}
+ servletMapping = registerServlet(servlet);
+ }
+
+ public String registerServlet(Servlet servlet) {
// Create our HTTP service listener Servlet and register it with the
// Servlet host
- servletMapping = binding.getURI();
+ String servletMapping = binding.getURI();
if (!servletMapping.endsWith("/")) {
servletMapping += "/";
}
@@ -221,7 +225,13 @@ public class RESTServiceBindingProvider implements EndpointProvider {
servletMapping += "*";
}
- servletHost.addServletMapping(servletMapping, servlet);
+ String mappedURI = servletHost.addServletMapping(servletMapping, servlet);
+ String deployedURI = mappedURI;
+ if (deployedURI.endsWith("*")) {
+ deployedURI = deployedURI.substring(0, deployedURI.length() - 1);
+ }
+ binding.setURI(deployedURI);
+ return mappedURI;
}
public void stop() {
@@ -258,17 +268,8 @@ public class RESTServiceBindingProvider implements EndpointProvider {
TuscanyRESTServlet restServlet = new TuscanyRESTServlet(extensionPoints, application.resourceClass);
- // Create our HTTP service listener Servlet and register it with the
- // Servlet host
- servletMapping = binding.getURI();
- if (!servletMapping.endsWith("/")) {
- servletMapping += "/";
- }
- if (!servletMapping.endsWith("*")) {
- servletMapping += "*";
- }
-
- servletHost.addServletMapping(servletMapping, restServlet);
+ servletMapping = registerServlet(restServlet);
+
RegistrationUtils.registerApplication(application, restServlet.getServletContext());
return application;
} else {
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
index 96d44b3bc2..82860e2028 100644
--- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
+++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
@@ -46,8 +46,6 @@ import org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointReferenceImpl;
import org.apache.tuscany.sca.definitions.Definitions;
import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
import org.apache.tuscany.sca.interfacedef.util.Audit;
import org.apache.tuscany.sca.monitor.Monitor;
import org.apache.tuscany.sca.monitor.MonitorFactory;
@@ -331,7 +329,11 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder {
if (endpointReference.getReference().getName().startsWith("$self$.")){
// just select the first one and don't do any policy matching
- matchedEndpoint = endpoints.get(0);
+ if (endpointReference.getTargetEndpoint() != null && !endpointReference.getTargetEndpoint().isUnresolved()) {
+ matchedEndpoint = endpointReference.getTargetEndpoint();
+ } else {
+ matchedEndpoint = endpoints.get(0);
+ }
} else {
// find the first endpoint that matches this endpoint reference
for (Endpoint endpoint : endpoints){