Author: rfeng
Date: Wed Sep 17 18:33:03 2008
New Revision: 696531

URL: http://svn.apache.org/viewvc?rev=696531&view=rev
Log:
Support the rmi:// uri for binding.rmi

Modified:
    
tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-binding-rmi.xsd
    
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/impl/RMIBindingImpl.java
    
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
    
tuscany/java/sca/modules/binding-rmi/src/test/resources/RMIBindingTest.composite

Modified: 
tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-binding-rmi.xsd
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-binding-rmi.xsd?rev=696531&r1=696530&r2=696531&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-binding-rmi.xsd
 (original)
+++ 
tuscany/java/sca/modules/assembly-xsd/src/main/resources/tuscany-sca-binding-rmi.xsd
 Wed Sep 17 18:33:03 2008
@@ -36,7 +36,7 @@
                 </sequence>
                         <attribute name="host" type="anyURI" use="optional"/>
                         <attribute name="port" type="int" use="optional"/>
-                        <attribute name="serviceName" type="anyURI" 
use="required"/>
+                        <attribute name="serviceName" type="anyURI" 
use="optional"/>
             </extension>
         </complexContent>
     </complexType>

Modified: 
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/impl/RMIBindingImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/impl/RMIBindingImpl.java?rev=696531&r1=696530&r2=696531&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/impl/RMIBindingImpl.java
 (original)
+++ 
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/impl/RMIBindingImpl.java
 Wed Sep 17 18:33:03 2008
@@ -18,6 +18,9 @@
  */
 package org.apache.tuscany.sca.binding.rmi.impl;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+
 import org.apache.tuscany.sca.binding.rmi.RMIBinding;
 
 /**
@@ -81,6 +84,7 @@
     }
 
     public String getURI() {
+        compose();
         return uri;
     }
 
@@ -90,6 +94,7 @@
 
     public void setURI(String uri) {
         this.uri = uri;
+        parse(uri);
     }
 
     
@@ -105,5 +110,48 @@
     public Object clone() throws CloneNotSupportedException {
         return super.clone();
     }     
+    
+    /*
+    rmi://[host][:port][/[object]]
+    rmi:[/][object]
+    */
+    private void parse(String uriStr) {
+        if (uriStr == null) {
+            return;
+        }
+        URI uri = URI.create(uriStr);
+        if (host == null) {
+            this.host = uri.getHost();
+        }
+        if (port == null) {
+            this.port = String.valueOf(uri.getPort());
+        }
+        if (serviceName == null) {
+            String path = uri.getPath();
+            if (path != null && path.charAt(0) == '/') {
+                path = path.substring(1);
+            }
+            this.serviceName = path;
+        }
+    }
+    
+    private void compose() {
+        if (uri == null) {
+            int p = -1;
+            if (port != null && port.length() > 0) {
+                p = Integer.decode(port);
+            }
+            String path = serviceName;
+            if (path != null) {
+                path = "/" + path;
+            }
+            try {
+                uri = new URI("rmi", null, host, p, path, null, 
null).toString();
+            } catch (URISyntaxException e) {
+                throw new IllegalArgumentException(e);
+            }
+        }
+    }
+
 
 }

Modified: 
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java?rev=696531&r1=696530&r2=696531&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
 (original)
+++ 
tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/provider/RMIServiceBindingProvider.java
 Wed Sep 17 18:33:03 2008
@@ -94,6 +94,9 @@
         int portNumber = RMIHost.RMI_DEFAULT_PORT;
         if (port != null && port.length() > 0) {
             portNumber = Integer.decode(port);
+            if (portNumber == -1) {
+                portNumber = RMIHost.RMI_DEFAULT_PORT;
+            }
         }
         return portNumber;
     }

Modified: 
tuscany/java/sca/modules/binding-rmi/src/test/resources/RMIBindingTest.composite
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-rmi/src/test/resources/RMIBindingTest.composite?rev=696531&r1=696530&r2=696531&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-rmi/src/test/resources/RMIBindingTest.composite
 (original)
+++ 
tuscany/java/sca/modules/binding-rmi/src/test/resources/RMIBindingTest.composite
 Wed Sep 17 18:33:03 2008
@@ -23,7 +23,7 @@
 
        <service name="HelloWorldRmiService" 
promote="HelloWorldServiceComponent">
         <interface.java interface="helloworld.HelloWorldService"/>
-        <tuscany:binding.rmi host="localhost" port="8099" 
serviceName="HelloWorldRemoteService"   />
+        <tuscany:binding.rmi 
uri="rmi://localhost:8099/HelloWorldRemoteService"   />
     </service>
       
     <component name="HelloWorldServiceComponent">


Reply via email to