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">
>
>
>

Reply via email to