You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/10/25 14:20:03 UTC

svn commit: r467620 - in /incubator/tuscany/java/sca: kernel/spi/src/main/java/org/apache/tuscany/spi/host/ runtime/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/ runtime/webapp-host/src/test/java/org/apache/tuscany/runtime/webapp/ servic...

Author: antelder
Date: Wed Oct 25 05:20:02 2006
New Revision: 467620

URL: http://svn.apache.org/viewvc?view=rev&rev=467620
Log:
TUSCANY-822, apply patch from Bert Lamb - Fix JSON-RPC binding for multiple services per composite

Modified:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/host/ServletHost.java
    incubator/tuscany/java/sca/runtime/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/ServletHostImpl.java
    incubator/tuscany/java/sca/runtime/webapp-host/src/test/java/org/apache/tuscany/runtime/webapp/ServletHostTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ServiceTestCase.java
    incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/host/ServletHost.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/host/ServletHost.java?view=diff&rev=467620&r1=467619&r2=467620
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/host/ServletHost.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/host/ServletHost.java Wed Oct 25 05:20:02 2006
@@ -42,7 +42,17 @@
      * registered Servlet.
      *
      * @param mapping the uri-mapping for the Servlet
+     * @returns the servlet that was registered to the mapping, null if nothing was registered to the mapping
      */
-    void unregisterMapping(String mapping);
+    Servlet unregisterMapping(String mapping);
+    
+    /**
+     * Check to see if a mapping exists.
+     * 
+     * @param mapping  the uri-mapping for the Servlet
+     * @return true if mapping is registered, false otherwise
+     */
+    boolean isMappingRegistered(String mapping);
+        
 
 }

Modified: incubator/tuscany/java/sca/runtime/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/ServletHostImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/ServletHostImpl.java?view=diff&rev=467620&r1=467619&r2=467620
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/ServletHostImpl.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp-host/src/main/java/org/apache/tuscany/runtime/webapp/ServletHostImpl.java Wed Oct 25 05:20:02 2006
@@ -94,9 +94,14 @@
         }
         servlets.put(path, servlet);
     }
+    
+    public boolean isMappingRegistered(String mapping) {
+        return servlets.containsKey(mapping);
+        
+    }
 
-    public void unregisterMapping(String path) {
-        servlets.remove(path);
+    public Servlet unregisterMapping(String path) {
+        return servlets.remove(path);
     }
 
     public void addListener(RuntimeEventListener listener) {

Modified: incubator/tuscany/java/sca/runtime/webapp-host/src/test/java/org/apache/tuscany/runtime/webapp/ServletHostTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/webapp-host/src/test/java/org/apache/tuscany/runtime/webapp/ServletHostTestCase.java?view=diff&rev=467620&r1=467619&r2=467620
==============================================================================
--- incubator/tuscany/java/sca/runtime/webapp-host/src/test/java/org/apache/tuscany/runtime/webapp/ServletHostTestCase.java (original)
+++ incubator/tuscany/java/sca/runtime/webapp-host/src/test/java/org/apache/tuscany/runtime/webapp/ServletHostTestCase.java Wed Oct 25 05:20:02 2006
@@ -54,6 +54,8 @@
         Servlet servlet = createMock(Servlet.class);
         ServletHostImpl host = new ServletHostImpl();
         host.registerMapping("foo", servlet);
+        assertEquals(true, host.isMappingRegistered("foo"));
+        assertEquals(false, host.isMappingRegistered("bar"));
         try {
             host.registerMapping("foo", servlet);
             fail();
@@ -71,7 +73,8 @@
         replay(servlet);
         ServletHostImpl host = new ServletHostImpl();
         host.registerMapping("foo", servlet);
-        host.unregisterMapping("foo");
+        Servlet unregedServlet = host.unregisterMapping("foo");
+        assertEquals(unregedServlet, servlet);
         try {
             host.service(req, res);
         } catch (IllegalStateException e) {

Modified: incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ServiceTestCase.java?view=diff&rev=467620&r1=467619&r2=467620
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.axis2/src/test/java/org/apache/tuscany/binding/axis2/Axis2ServiceTestCase.java Wed Oct 25 05:20:02 2006
@@ -134,11 +134,16 @@
             mappings.put(mapping, servlet);
         }
 
-        public void unregisterMapping(String mapping) {
+        public Servlet unregisterMapping(String mapping) {
+            return mappings.remove(mapping);
         }
 
         public Servlet getMapping(String mapping) {
             return mappings.get(mapping);
+        }
+
+        public boolean isMappingRegistered(String mapping) {
+            return mappings.containsKey(mapping);
         }
 
     }

Modified: incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java?view=diff&rev=467620&r1=467619&r2=467620
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jsonrpc/src/main/java/org/apache/tuscany/binding/jsonrpc/JSONRPCService.java Wed Oct 25 05:20:02 2006
@@ -29,6 +29,7 @@
  */
 public class JSONRPCService extends ServiceExtension {
     private ServletHost servletHost;
+    private static int servletRegistrationCount = 0;
 
     public JSONRPCService(String theName, Class<?> interfaze, CompositeComponent parent, WireService wireService, ServletHost servletHost) {
 
@@ -37,18 +38,25 @@
         this.servletHost = servletHost;
     }
 
-    public void start() {
+    public synchronized void start() {
         super.start();
 
         JSONRPCEntryPointServlet servlet = new JSONRPCEntryPointServlet(getName(), this.getServiceInstance());
         servletHost.registerMapping("/" + getName(), servlet);
-        servletHost.registerMapping("/SCA/scripts", new ScriptGetterServlet());
+        if((servletRegistrationCount == 0) && (!servletHost.isMappingRegistered("/SCA/scripts"))) {            
+            servletHost.registerMapping("/SCA/scripts", new ScriptGetterServlet());            
+        }
+        servletRegistrationCount++;
     }
 
     @Destroy
-    public void stop() {
+    public synchronized void stop() {
         servletHost.unregisterMapping("/" + getName());
-        servletHost.unregisterMapping("/SCA/scripts");
+        servletRegistrationCount--;
+        if(servletRegistrationCount == 0)
+        {
+            servletHost.unregisterMapping("/SCA/scripts");            
+        }
 
         super.stop();
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org