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/08/29 12:47:27 UTC

svn commit: r438042 - in /incubator/tuscany/java/sca/bindings/binding.rmi: ./ src/main/java/org/apache/tuscany/binding/rmi/ src/main/java/org/apache/tuscany/binding/rmi/host/ src/main/resources/META-INF/sca/ src/test/java/org/apache/tuscany/binding/rmi/

Author: antelder
Date: Tue Aug 29 03:47:25 2006
New Revision: 438042

URL: http://svn.apache.org/viewvc?rev=438042&view=rev
Log:
TUSCANY-668, apply patches from Venkat
- Decision on moving RMIHost related classes to host-api project. See disccusion in http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg07077.html
- Removing these classes from the sca-spi project
- Abstraction of Exception classes as inheriting from Tuscany Exception classes
- Repackage of RMIHostImpl within the RMIBinding extension implementation
- Fixing of bug in RMIService. 

Added:
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java   (with props)
Removed:
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIHostImpl.java
Modified:
    incubator/tuscany/java/sca/bindings/binding.rmi/pom.xml
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIInvoker.java
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/default.scdl
    incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/rmi_extension.scdl
    incubator/tuscany/java/sca/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/pom.xml?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/pom.xml (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/pom.xml Tue Aug 29 03:47:25 2006
@@ -50,6 +50,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.tuscany</groupId>
+            <artifactId>host-api</artifactId>
+            <version>${sca.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany</groupId>
             <artifactId>test</artifactId>
             <version>${sca.version}</version>
             <scope>test</scope>

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingBuilder.java Tue Aug 29 03:47:25 2006
@@ -18,16 +18,15 @@
 
 import java.rmi.Remote;
 
-import org.osoa.sca.annotations.Constructor;
-
+import org.apache.tuscany.host.rmi.RMIHost;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.BindingBuilderExtension;
-import org.apache.tuscany.spi.host.RMIHost;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
+import org.osoa.sca.annotations.Constructor;
 
 /**
  * Builds a Service or Reference for an RMI binding.

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIInvoker.java?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIInvoker.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIInvoker.java Tue Aug 29 03:47:25 2006
@@ -20,8 +20,8 @@
 import java.lang.reflect.Method;
 import java.rmi.Remote;
 
-import org.apache.tuscany.spi.host.RMIHost;
-import org.apache.tuscany.spi.host.RemoteServiceException;
+import org.apache.tuscany.host.rmi.RMIHost;
+import org.apache.tuscany.host.rmi.RMIHostException;
 import org.apache.tuscany.spi.wire.InvocationRuntimeException;
 import org.apache.tuscany.spi.wire.Message;
 import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -80,7 +80,7 @@
                 // proxy = Naming.lookup(serviceURI);
             }
             return remoteMethod.invoke(proxy, (Object[]) payload);
-        } catch (RemoteServiceException e) {
+        } catch (RMIHostException e) {
             // the method we are passed must be accessible
             throw new AssertionError(e);
         } catch (IllegalAccessException e) {

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIReference.java Tue Aug 29 03:47:25 2006
@@ -18,9 +18,9 @@
 
 import java.lang.reflect.Method;
 
+import org.apache.tuscany.host.rmi.RMIHost;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.extension.ReferenceExtension;
-import org.apache.tuscany.spi.host.RMIHost;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.WireService;
 

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIService.java Tue Aug 29 03:47:25 2006
@@ -20,17 +20,17 @@
 import java.rmi.Remote;
 import java.rmi.server.UnicastRemoteObject;
 
-import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.extension.ServiceExtension;
-import org.apache.tuscany.spi.host.RMIHost;
-import org.apache.tuscany.spi.host.RemoteServiceException;
-import org.apache.tuscany.spi.wire.WireService;
-
 import net.sf.cglib.asm.ClassWriter;
 import net.sf.cglib.asm.Constants;
 import net.sf.cglib.asm.Type;
 import net.sf.cglib.proxy.Enhancer;
 
+import org.apache.tuscany.host.rmi.RMIHost;
+import org.apache.tuscany.host.rmi.RMIHostException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.extension.ServiceExtension;
+import org.apache.tuscany.spi.wire.WireService;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -77,15 +77,15 @@
                 getPort(port),
                 rmiProxy);
             // bindRmiService(uri,rmiProxy);
-        } catch (RemoteServiceException e) {
-            throw new NoRemoteServiceException(e);
+        } catch (RMIHostException e) {
+            throw new NoRemoteServiceException(e); 
         }
     }
 
     public void stop() {
         try {
             rmiHost.unregisterService(serviceName);
-        } catch (RemoteServiceException e) {
+        } catch (RMIHostException e) {
             throw new NoRemoteServiceException(e.getMessage());
         }
         super.stop();
@@ -128,9 +128,10 @@
         cw.visit(Constants.V1_5, Constants.ACC_PUBLIC + Constants.ACC_ABSTRACT + Constants.ACC_INTERFACE,
             interfazeName.replace('.', '/'), "java/lang/Object", new String[]{"java/rmi/Remote"}, simpleName + ".java");
 
-        StringBuffer argsAndReturn = new StringBuffer("(");
+        StringBuffer argsAndReturn = null;
         Method[] methods = serviceInterface.getMethods();
         for (Method method : methods) {
+            argsAndReturn = new StringBuffer("(");
             Class[] paramTypes = method.getParameterTypes();
             Class returnType = method.getReturnType();
 

Added: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java?rev=438042&view=auto
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java (added)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java Tue Aug 29 03:47:25 2006
@@ -0,0 +1,136 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed 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.binding.rmi.host;
+
+import java.rmi.AlreadyBoundException;
+import java.rmi.NotBoundException;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.tuscany.host.rmi.RMIHost;
+import org.apache.tuscany.host.rmi.RMIHostException;
+import org.apache.tuscany.host.rmi.RMIHostRuntimeException;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * This class provides an implementation for the RMI Host SPIs
+ */
+@Scope("MODULE")
+public class RMIHostImpl implements RMIHost {
+
+    // map of RMI registries started and running
+    private Map<String, Registry> rmiRegistries;
+
+    public RMIHostImpl() {
+        rmiRegistries = new ConcurrentHashMap<String, Registry>();
+        /*
+         * if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); }
+         */
+    }
+
+    @Init(eager = true)
+    public void init() {
+    }
+
+    public void registerService(String serviceName, int port, Remote serviceObject) throws RMIHostException,
+                                                                                   RMIHostRuntimeException {
+        Registry registry;
+        try {
+            registry = rmiRegistries.get(Integer.toString(port));
+            if (registry == null) {
+                registry = LocateRegistry.createRegistry(port);
+                rmiRegistries.put(Integer.toString(port),
+                                  registry);
+            }
+            registry.bind(serviceName,
+                          serviceObject);
+        } catch (AlreadyBoundException e) {
+            throw new RMIHostException(e.getMessage());
+        } catch (RemoteException e) {
+            RMIHostRuntimeException rmiExec = new RMIHostRuntimeException(e.getMessage());
+            rmiExec.setStackTrace(e.getStackTrace());
+            throw rmiExec;
+        }
+
+    }
+
+    public void registerService(String serviceName, Remote serviceObject) throws RMIHostException,
+                                                                         RMIHostRuntimeException {
+        registerService(serviceName,
+                        RMI_DEFAULT_PORT,
+                        serviceObject);
+    }
+
+    public void unregisterService(String serviceName, int port) throws RMIHostException,
+                                                               RMIHostRuntimeException {
+        Registry registry;
+
+        try {
+            registry = rmiRegistries.get(Integer.toString(port));
+            if (registry == null) {
+                registry = LocateRegistry.createRegistry(port);
+                rmiRegistries.put(Integer.toString(port),
+                                  registry);
+            }
+            registry.unbind(serviceName);
+        } catch (RemoteException e) {
+            RMIHostRuntimeException rmiExec = new RMIHostRuntimeException(e.getMessage());
+            rmiExec.setStackTrace(e.getStackTrace());
+            throw rmiExec;
+        } catch (NotBoundException e) {
+            throw new RMIHostException(e.getMessage());
+        }
+    }
+
+    public void unregisterService(String serviceName) throws RMIHostException,
+                                                     RMIHostRuntimeException {
+        unregisterService(serviceName,
+                          RMI_DEFAULT_PORT);
+
+    }
+
+    public Remote findService(String host, String port, String svcName) throws RMIHostException,
+                                                                       RMIHostRuntimeException {
+        Registry registry;
+        Remote remoteService = null;
+        host = (host == null || host.length() <= 0) ? "localhost" : host;
+        int portNumber = (port == null || port.length() <= 0) ? RMI_DEFAULT_PORT : Integer
+                .decode(port);
+
+        try {
+            registry = LocateRegistry.getRegistry(host,
+                                                  portNumber);
+
+            if (registry != null) {
+                remoteService = registry.lookup(svcName);
+            }
+        } catch (RemoteException e) {
+            RMIHostRuntimeException rmiExec = new RMIHostRuntimeException(e.getMessage());
+            rmiExec.setStackTrace(e.getStackTrace());
+            throw rmiExec;
+        } catch (NotBoundException e) {
+            throw new RMIHostException(e.getMessage());
+        }
+        return remoteService;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/java/org/apache/tuscany/binding/rmi/host/RMIHostImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/default.scdl?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/default.scdl (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/default.scdl Tue Aug 29 03:47:25 2006
@@ -32,7 +32,7 @@
     </component>
     
  <!--   <component name="binding.rmi.bindingInvoker">
-        <system:implementation.system class="org.apache.tuscany.binding.rmi.RMIInvoker"/>
+        <system:implementation.system class="org.apache.tuscany.binding.rmi.host.RMIInvoker"/>
     </component>
   -->
     

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/rmi_extension.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/rmi_extension.scdl?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/rmi_extension.scdl (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/main/resources/META-INF/sca/rmi_extension.scdl Tue Aug 29 03:47:25 2006
@@ -38,7 +38,7 @@
     
     <!-- RMI Host service -->
     <component name="rmiHost">
-        <system:implementation.system class="org.apache.tuscany.binding.rmi.RMIHostImpl"/>
+        <system:implementation.system class="org.apache.tuscany.binding.rmi.host.RMIHostImpl"/>
     </component>
     
 </composite>

Modified: incubator/tuscany/java/sca/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java?rev=438042&r1=438041&r2=438042&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.rmi/src/test/java/org/apache/tuscany/binding/rmi/BindingTestCase.java Tue Aug 29 03:47:25 2006
@@ -1,13 +1,18 @@
 package org.apache.tuscany.binding.rmi;
 
+import helloworld.HelloWorldRmiService;
+import helloworld.HelloWorldService;
+
 import org.apache.tuscany.test.SCATestCase;
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
 
 public class BindingTestCase extends SCATestCase {
-    //private HelloWorldService helloWorldService;
-    //private HelloWorldRmiService helloWorldRmiService;
+    private HelloWorldService helloWorldService;
+    private HelloWorldRmiService helloWorldRmiService;
 
     public void testRmiService() {
-        // System.out.println(helloWorldRmiService.sayRmiHello("Tuscany World!"));
+        //System.out.println(helloWorldRmiService.sayRmiHello("Tuscany World!"));
     }
 
     protected void setUp() throws Exception {
@@ -26,7 +31,7 @@
 
 
     protected void tearDown() throws Exception {
-//        super.tearDown();
+        //super.tearDown();
     }
 
 }



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