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 2010/09/10 03:12:22 UTC

svn commit: r995627 - in /tuscany/sca-java-2.x/trunk/modules: binding-jsonp-runtime/src/test/java/test/ binding-jsonp-runtime/src/test/resources/ binding-jsonp-runtime/src/test/resources/jsonp/ binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/s...

Author: rfeng
Date: Fri Sep 10 01:12:21 2010
New Revision: 995627

URL: http://svn.apache.org/viewvc?rev=995627&view=rev
Log:
Fix the self reference with explicit bindings

Added:
    tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/
    tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite   (contents, props changed)
      - copied, changed from r995479, tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite
Removed:
    tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite
Modified:
    tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java
    tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java
    tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.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/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java?rev=995627&r1=995626&r2=995627&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/java/test/BindingTestCase.java Fri Sep 10 01:12:21 2010
@@ -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

Copied: tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite (from r995479, tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite?p2=tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite&p1=tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite&r1=995479&r2=995627&rev=995627&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/helloworld.composite (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite Fri Sep 10 01:12:21 2010
@@ -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>   
 

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/binding-jsonp-runtime/src/test/resources/jsonp/helloworld.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.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/JSONRPCServiceBindingProvider.java?rev=995627&r1=995626&r2=995627&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/jsonrpc/provider/JSONRPCServiceBindingProvider.java Fri Sep 10 01:12:21 2010
@@ -22,8 +22,9 @@ package org.apache.tuscany.sca.binding.j
 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 JSONRPCServiceBindingProvid
         // 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() {

Modified: tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.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/RESTServiceBindingProvider.java?rev=995627&r1=995626&r2=995627&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/RESTServiceBindingProvider.java Fri Sep 10 01:12:21 2010
@@ -211,9 +211,13 @@ public class RESTServiceBindingProvider 
             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 
             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 
 
                 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 {

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=995627&r1=995626&r2=995627&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 Fri Sep 10 01:12:21 2010
@@ -46,8 +46,6 @@ import org.apache.tuscany.sca.core.assem
 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
         
         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){