Yay, never gotten around to it but always thought we should support this. ...ant
On Thu, Sep 18, 2008 at 2:33 AM, <[EMAIL PROTECTED]> wrote: > 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"> > > >
