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 2010/03/16 08:57:59 UTC

svn commit: r923614 - in /tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly: Endpoint.java impl/EndpointImpl.java

Author: antelder
Date: Tue Mar 16 07:57:59 2010
New Revision: 923614

URL: http://svn.apache.org/viewvc?rev=923614&view=rev
Log:
Add a matches method to Endpoint to find servic uris that match the endpoint uri

Modified:
    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Endpoint.java
    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointImpl.java

Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Endpoint.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Endpoint.java?rev=923614&r1=923613&r2=923614&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Endpoint.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Endpoint.java Tue Mar 16 07:57:59 2010
@@ -128,4 +128,11 @@ public interface Endpoint extends Base, 
      */
     Object clone() throws CloneNotSupportedException;
 
+    /**
+     * Tests if the URI of this endpoint matches the service URI
+     * @param serviceName the service URI to test
+     * @return true if the endpoint URI matches the service URI
+     */
+    boolean matches(String serviceURI);
+    
 }

Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointImpl.java?rev=923614&r1=923613&r2=923614&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/EndpointImpl.java Tue Mar 16 07:57:59 2010
@@ -203,4 +203,71 @@ public class EndpointImpl implements End
     public void setRemote(boolean remote) {
         this.remote = remote;
     }
+
+    public boolean matches(String serviceURI) {
+        String[] parts1 = parseServiceURI(serviceURI);
+        String[] parts2 = parseStructuralURI(getURI());
+        for (int i = 0; i < parts1.length; i++) {
+            if (parts1[i] == null || parts1[i].equals(parts2[i])) {
+                continue;
+            } else {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Parse the service URI into an array of names. The service URI is in one of the following formats:
+     * <ul>
+     * <li>componentName
+     * <li>componentName/serviceName
+     * <li>componentName/serviceName/bindingName
+     * </ul> 
+     * @param serviceURI
+     * @return
+     */
+    private static String[] parseServiceURI(String serviceURI) {
+        if (serviceURI.contains("#")) {
+            return parseStructuralURI(serviceURI);
+        }
+        String[] names = new String[3];
+        String[] segments = serviceURI.split("/");
+        for (int i = 0; i < names.length && i < segments.length; i++) {
+            names[i] = segments[i];
+        }
+        return names;
+    }
+
+    /**
+     * Parse the structural URI into an array of parts (componentURI, serviceName, bindingName)
+     * @param structuralURI
+     * @return [0]: componentURI [1]: serviceName [2]: bindingName
+     */
+    private static String[] parseStructuralURI(String structuralURI) {
+        String[] names = new String[3];
+        int index = structuralURI.lastIndexOf('#');
+        if (index == -1) {
+            names[0] = structuralURI;
+        } else {
+            names[0] = structuralURI.substring(0, index);
+            String str = structuralURI.substring(index + 1);
+            if (str.startsWith("service-binding(") && str.endsWith(")")) {
+                str = str.substring("service-binding(".length(), str.length() - 1);
+                String[] parts = str.split("/");
+                if (parts.length != 2) {
+                    throw new IllegalArgumentException("Invalid service-binding URI: " + structuralURI);
+                }
+                names[1] = parts[0];
+                names[2] = parts[1];
+            } else if (str.startsWith("service(") && str.endsWith(")")) {
+                str = str.substring("service(".length(), str.length() - 1);
+                names[1] = str;
+            } else {
+                throw new IllegalArgumentException("Invalid structural URI: " + structuralURI);
+            }
+        }
+        return names;
+    }
+
 }