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/04/25 23:41:38 UTC

svn commit: r937891 - /tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java

Author: antelder
Date: Sun Apr 25 21:41:38 2010
New Revision: 937891

URL: http://svn.apache.org/viewvc?rev=937891&view=rev
Log:
Update hazelcast registry to use runtime properties

Modified:
    tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java

Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java?rev=937891&r1=937890&r2=937891&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast-client/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/client/HazelcastClientEndpointRegistry.java Sun Apr 25 21:41:38 2010
@@ -19,10 +19,18 @@
 
 package org.apache.tuscany.sca.endpoint.hazelcast.client;
 
+import java.net.BindException;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.ServerSocket;
+import java.util.Enumeration;
 import java.util.Map;
 
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
 import org.apache.tuscany.sca.endpoint.hazelcast.HazelcastEndpointRegistry;
+import org.apache.tuscany.sca.endpoint.hazelcast.RegistryConfig;
+import org.apache.tuscany.sca.runtime.RuntimeProperties;
 
 import com.hazelcast.client.HazelcastClient;
 import com.hazelcast.core.HazelcastInstance;
@@ -47,8 +55,8 @@ public class HazelcastClientEndpointRegi
             throw new IllegalStateException("The registry has already been started");
         }
         initHazelcastClientInstance();
-        endpointMap = hazelcastClient.getMap(configURI.getDomainName() + "/Endpoints");
-        endpointOwners = hazelcastClient.getMultiMap(configURI.getDomainName() + "/EndpointOwners");
+        endpointMap = hazelcastClient.getMap(domainURI + "/Endpoints");
+        endpointOwners = hazelcastClient.getMultiMap(domainURI + "/EndpointOwners");
     }
 
     @Override
@@ -61,10 +69,18 @@ public class HazelcastClientEndpointRegi
     }
 
     private void initHazelcastClientInstance() {
-        if (configURI.getRemotes().size() < 1) {
+        this.properties = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(RuntimeProperties.class).getProperties();
+        RegistryConfig rc = new RegistryConfig(properties);
+        if (rc.getWKAs().size() < 1) {
+            String ip = getDefaultWKA();
+            if (ip != null) {
+                rc.getWKAs().add(ip);
+            }
+        }
+        if (rc.getWKAs().size() < 1) {
             throw new IllegalArgumentException("Must specify remote IP address(es) for domain");
         }
-        this.hazelcastClient = HazelcastClient.newHazelcastClient(configURI.getDomainName(), configURI.getPassword(), configURI.getRemotes().toArray(new String[0]));
+        this.hazelcastClient = HazelcastClient.newHazelcastClient(rc.getUserid(), rc.getPassword(), rc.getWKAs().toArray(new String[0]));
     }
 
     @Override
@@ -72,4 +88,32 @@ public class HazelcastClientEndpointRegi
         return hazelcastClient;
     }
 
+    /**
+     * See if there's a local IP listening on port 14820
+     */
+    protected static String getDefaultWKA() {
+        try {
+            Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
+            while (nis.hasMoreElements()) {
+                NetworkInterface ni = nis.nextElement();
+                Enumeration<InetAddress> ips = ni.getInetAddresses();
+                while (ips.hasMoreElements()) {
+                    InetAddress addr = ips.nextElement();
+                    ServerSocket ss = null;
+                    try {
+                        ss = new ServerSocket(14820, 0, addr);
+                    } catch (BindException e) {
+                        return addr.getHostAddress() + ":14820";
+                    } finally {
+                        if (ss != null) {
+                            ss.close();
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+        }
+        return null;
+    }    
+    
 }