From 99356bb73f6291ad798dfb579809c355c6db71e4 Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 10 Sep 2010 01:12:21 +0000 Subject: Fix the self reference with explicit bindings git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@995627 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/test/java/test/BindingTestCase.java | 6 ++-- .../src/test/resources/helloworld.composite | 39 -------------------- .../src/test/resources/jsonp/helloworld.composite | 41 ++++++++++++++++++++++ .../provider/JSONRPCServiceBindingProvider.java | 31 ++++++++++------ .../rest/provider/RESTServiceBindingProvider.java | 27 +++++++------- .../runtime/impl/EndpointReferenceBinderImpl.java | 8 +++-- 6 files changed, 84 insertions(+), 68 deletions(-) delete mode 100644 sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite create mode 100644 sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite (limited to 'sca-java-2.x/trunk/modules') 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/helloworld.composite deleted file mode 100644 index 065e888bb7..0000000000 --- a/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite b/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite new file mode 100644 index 0000000000..c1061147a8 --- /dev/null +++ b/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + 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){ -- cgit v1.2.3