tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rf...@apache.org
Subject svn commit: r951651 [10/13] - in /tuscany/sca-java-2.x/trunk/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ assembly/src/main/java/org/apache/tuscany/sca/assembly/ assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ b...
Date Sat, 05 Jun 2010 05:17:51 GMT
Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java?rev=951651&r1=951650&r2=951651&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java Sat Jun  5 05:17:47 2010
@@ -1,370 +1,370 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.endpoint.hazelcast;
-
-import java.io.FileNotFoundException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Logger;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.core.LifeCycleListener;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-import org.apache.tuscany.sca.runtime.BaseEndpointRegistry;
-import org.apache.tuscany.sca.runtime.EndpointRegistry;
-import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
-import org.apache.tuscany.sca.runtime.RuntimeProperties;
-import org.oasisopen.sca.ServiceRuntimeException;
-
-import com.hazelcast.config.Config;
-import com.hazelcast.config.NearCacheConfig;
-import com.hazelcast.config.TcpIpConfig;
-import com.hazelcast.config.XmlConfigBuilder;
-import com.hazelcast.core.EntryEvent;
-import com.hazelcast.core.EntryListener;
-import com.hazelcast.core.Hazelcast;
-import com.hazelcast.core.HazelcastInstance;
-import com.hazelcast.core.ILock;
-import com.hazelcast.core.IMap;
-import com.hazelcast.core.Member;
-import com.hazelcast.core.MembershipEvent;
-import com.hazelcast.core.MembershipListener;
-import com.hazelcast.core.MultiMap;
-import com.hazelcast.core.Transaction;
-import com.hazelcast.nio.Address;
-
-/**
- * An EndpointRegistry using a Hazelcast
- */
-public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements EndpointRegistry, LifeCycleListener, EntryListener<String, Endpoint>, MembershipListener {
-    private final static Logger logger = Logger.getLogger(HazelcastEndpointRegistry.class.getName());
-
-    private HazelcastInstance hazelcastInstance;
-    protected Map<Object, Object> endpointMap;
-    protected Map<String, Endpoint> localEndpoints = new ConcurrentHashMap<String, Endpoint>();
-    protected MultiMap<String, String> endpointOwners;
-    protected AssemblyFactory assemblyFactory;
-    protected Object shutdownMutex = new Object();
-    protected Properties properties;
-
-    public HazelcastEndpointRegistry(ExtensionPointRegistry registry, Properties properties, String domainURI) {
-        super(registry, null, null, domainURI);
-        this.assemblyFactory = registry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(AssemblyFactory.class);
-        this.properties = properties;
-    }
-
-    public HazelcastEndpointRegistry(ExtensionPointRegistry registry,
-                                     Map<String, String> attributes,
-                                     String domainRegistryURI,
-                                     String domainURI) {
-        super(registry, attributes, domainRegistryURI, domainURI);
-        this.assemblyFactory = registry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(AssemblyFactory.class);
-        this.properties = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(RuntimeProperties.class).getProperties();
-    }
-    
-    public HazelcastInstance getHazelcastInstance() {
-        return hazelcastInstance;
-    }
-
-    public void start() {
-        if (endpointMap != null) {
-            throw new IllegalStateException("The registry has already been started");
-        }
-//        if (configURI.toString().startsWith("tuscany:vm:")) {
-//            endpointMap = new HashMap<Object, Object>();
-//        } else {
-            initHazelcastInstance();
-            IMap imap = hazelcastInstance.getMap(domainURI + "/Endpoints");
-            imap.addEntryListener(this, true);
-            endpointMap = imap;
-            
-            endpointOwners = hazelcastInstance.getMultiMap(domainURI + "/EndpointOwners");
-
-            hazelcastInstance.getCluster().addMembershipListener(this);
-//        }
-    }
-
-    public void stop() {
-        if (hazelcastInstance != null) {
-            synchronized (shutdownMutex) {
-                hazelcastInstance.shutdown();
-                hazelcastInstance = null;
-                endpointMap = null;
-                endpointOwners = null;
-            }
-        }
-    }
-
-    private void initHazelcastInstance() {
-        Config config = getHazelcastConfig();
-
-        // do this when theres a way to have adders be the key owners
-        // config.getMapConfig(configURI.getDomainName() + "/Endpoints").setBackupCount(0);
-
-        // this caches reads locally
-        config.getMapConfig("default").setNearCacheConfig(new NearCacheConfig(0, 0, "NONE", 0, true));
-
-        // Disable the Hazelcast shutdown hook as Tuscany has its own and with both there are race conditions
-        config.setProperty("hazelcast.shutdownhook.enabled",
-                           // GroupProperties.PROP_SHUTDOWNHOOK_ENABLED, 
-                           "false");
-        
-        // By default this is 5 seconds, not sure what the implications are but dropping it down to 1 makes 
-        // things like the samples look much faster
-        config.setProperty("hazelcast.wait.seconds.before.join",
-                           // GroupProperties.PROP_WAIT_SECONDS_BEFORE_JOIN, 
-                           "1");
-
-        this.hazelcastInstance = Hazelcast.newHazelcastInstance(config);
-    }
-
-    protected Config getHazelcastConfig() {
-        Config config;
-        this.properties = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(RuntimeProperties.class).getProperties();
-        String configFile = properties.getProperty("hazelcastConfig");
-        if (configFile != null) {
-            try {
-                config = new XmlConfigBuilder(configFile).build();
-            } catch (FileNotFoundException e) {
-                throw new IllegalArgumentException(configFile, e);
-            }
-        } else {
-            config = new XmlConfigBuilder().build();
-            RegistryConfig rc = new RegistryConfig(properties);
-            config.setPort(rc.getBindPort());
-            //config.setPortAutoIncrement(false);
-
-            if (!rc.getBindAddress().equals("*")) {
-                config.getNetworkConfig().getInterfaces().setEnabled(true);
-                config.getNetworkConfig().getInterfaces().clear();
-                config.getNetworkConfig().getInterfaces().addInterface(rc.getBindAddress());
-            }
-
-            config.getGroupConfig().setName(rc.getUserid());
-            config.getGroupConfig().setPassword(rc.getPassword());
-
-            if (rc.isMulticastDisabled()) {
-                config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
-            } else {
-                config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true);
-                config.getNetworkConfig().getJoin().getMulticastConfig().setMulticastPort(rc.getMulticastPort());
-                config.getNetworkConfig().getJoin().getMulticastConfig().setMulticastGroup(rc.getMulticastAddress());
-            }
-            
-            if (rc.getWKAs().size() > 0) {
-                TcpIpConfig tcpconfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
-                tcpconfig.setEnabled(true);
-                List<Address> lsMembers = tcpconfig.getAddresses();
-                lsMembers.clear();
-                for (String addr : rc.getWKAs()) {
-                    String[] ipNPort = addr.split(":");
-                    try {
-                        lsMembers.add(new Address(ipNPort[0], Integer.parseInt(ipNPort[1])));
-                    } catch (UnknownHostException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            }
-        }
-        return config;
-    }
-
-    public void addEndpoint(Endpoint endpoint) {
-        if (findEndpoint(endpoint.getURI()).size() > 0) {
-            Member m = getOwningMember(endpoint.getURI());
-            throw new IllegalStateException("Endpoint " + endpoint.getURI() + " already exists in domain " + domainURI + " at " + m.getInetSocketAddress());
-        }
-            
-        String localMemberAddr = hazelcastInstance.getCluster().getLocalMember().getInetSocketAddress().toString();
-        String endpointURI = endpoint.getURI();
-        Transaction txn = hazelcastInstance.getTransaction();
-        txn.begin();
-        try {
-            endpointMap.put(endpointURI, endpoint);
-            endpointOwners.put(localMemberAddr, endpointURI);
-            txn.commit();
-        } catch (Throwable e) {
-            txn.rollback();
-            throw new ServiceRuntimeException(e);
-        }
-        localEndpoints.put(endpointURI, endpoint);
-        logger.info("Add endpoint - " + endpoint);
-    }
-
-    public List<Endpoint> findEndpoint(String uri) {
-        List<Endpoint> foundEndpoints = new ArrayList<Endpoint>();
-        for (Object v : endpointMap.values()) {
-            Endpoint endpoint = (Endpoint)v;
-            logger.fine("Matching against - " + endpoint);
-            if (endpoint.matches(uri)) {
-                if (!isLocal(endpoint)) {
-                    endpoint.setRemote(true);
-                    ((RuntimeEndpoint)endpoint).bind(registry, this);
-                } else {
-                    // get the local version of the endpoint
-                    // this local version won't have been serialized
-                    // won't be marked as remote and will have the 
-                    // full interface contract information
-                    endpoint = localEndpoints.get(endpoint.getURI());
-                }
-                
-                foundEndpoints.add(endpoint);
-                logger.fine("Found endpoint with matching service  - " + endpoint);
-            }
-        }
-        return foundEndpoints;
-    }
-    
-
-    private boolean isLocal(Endpoint endpoint) {
-        return localEndpoints.containsKey(endpoint.getURI());
-    }
-
-    public Endpoint getEndpoint(String uri) {
-        return (Endpoint)endpointMap.get(uri);
-    }
-
-    public List<Endpoint> getEndpoints() {
-        return new ArrayList(endpointMap.values());
-    }
-
-    public void removeEndpoint(Endpoint endpoint) {
-        if (hazelcastInstance == null) {
-            return;
-        }
-        synchronized (shutdownMutex) {
-            String localMemberAddr = hazelcastInstance.getCluster().getLocalMember().getInetSocketAddress().toString();
-            String endpointURI = endpoint.getURI();
-            
-// TODO: seems to be a txn bug in Hazelcast, see http://code.google.com/p/hazelcast/issues/detail?id=258 
-//            Transaction txn = hazelcastInstance.getTransaction();
-//            txn.begin();
-//            try {
-                endpointOwners.remove(localMemberAddr, endpointURI);
-                endpointMap.remove(endpointURI);
-//                txn.commit();
-//            } catch (Throwable e) {
-//                txn.rollback();
-//                throw new ServiceRuntimeException(e);
-//            }
-            localEndpoints.remove(endpointURI);
-            logger.info("Removed endpoint - " + endpoint);
-        }
-    }
-
-
-    public void entryAdded(EntryEvent<String, Endpoint> event) {
-        entryAdded(event.getKey(), event.getValue());
-    }
-
-    public void entryEvicted(EntryEvent<String, Endpoint> event) {
-        // Should not happen
-    }
-
-    public void entryRemoved(EntryEvent<String, Endpoint> event) {
-        entryRemoved(event.getKey(), event.getValue());
-    }
-
-    public void entryUpdated(EntryEvent<String, Endpoint> event) {
-        entryUpdated(event.getKey(), null, event.getValue());
-    }
-
-    public void entryAdded(Object key, Object value) {
-        Endpoint newEp = (Endpoint)value;
-        if (!isLocal(newEp)) {
-            logger.info(" Remote endpoint added: " + newEp);
-        } 
-        endpointAdded(newEp);
-    }
-
-    public void entryRemoved(Object key, Object value) {
-        Endpoint oldEp = (Endpoint)value;
-        if (!isLocal(oldEp)) {
-            logger.info(" Remote endpoint removed: " + value);
-        }
-        endpointRemoved(oldEp);
-    }
-
-    public void entryUpdated(Object key, Object oldValue, Object newValue) {
-        Endpoint oldEp = (Endpoint)oldValue;
-        Endpoint newEp = (Endpoint)newValue;
-        if (!isLocal(newEp)) {
-            logger.info(" Remote endpoint updated: " + newEp);
-        }
-        endpointUpdated(oldEp, newEp);
-    }
-
-    public void memberAdded(MembershipEvent event) {
-    }
-
-    public void memberRemoved(MembershipEvent event) {
-        try {
-            String memberAddr = event.getMember().getInetSocketAddress().toString();
-            if (endpointOwners.containsKey(memberAddr)) {
-                synchronized (shutdownMutex) {
-                    ILock lock = hazelcastInstance.getLock("EndpointOwners/" + memberAddr);
-                    lock.lock();
-                    try {
-                        if (endpointOwners.containsKey(memberAddr)) {
-                            Collection<String> keys = endpointOwners.remove(memberAddr);
-                            for (Object k : keys) {
-                                endpointMap.remove(k);
-                            }
-                        }
-                    } finally {
-                        lock.unlock();
-                    }
-                }
-            }
-        } catch (Exception e) {
-            if (e.getCause() != null && e.getCause().getCause() != null) {
-                // ignore hazelcast already shutdown exception
-                if (!"Hazelcast Instance is not active!".equals(e.getCause().getCause().getMessage())) {
-                    throw new ServiceRuntimeException(e);
-                }
-            }
-        }
-    }
-
-    public Member getOwningMember(String serviceURI) {
-        for (String memberAddr : endpointOwners.keySet()) {
-            for (String service : endpointOwners.get(memberAddr)) {
-                Endpoint ep = assemblyFactory.createEndpoint();
-                ep.setURI(service);
-                if (ep.matches(serviceURI)) {
-                    for (Member m : getHazelcastInstance().getCluster().getMembers()) {
-                        if (memberAddr.equals(m.getInetSocketAddress().toString())) {
-                            return m;
-                        }
-                    }
-                }
-            }
-        }
-        return null;
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.endpoint.hazelcast;
+
+import java.io.FileNotFoundException;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Logger;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.LifeCycleListener;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.runtime.BaseEndpointRegistry;
+import org.apache.tuscany.sca.runtime.EndpointRegistry;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.apache.tuscany.sca.runtime.RuntimeProperties;
+import org.oasisopen.sca.ServiceRuntimeException;
+
+import com.hazelcast.config.Config;
+import com.hazelcast.config.NearCacheConfig;
+import com.hazelcast.config.TcpIpConfig;
+import com.hazelcast.config.XmlConfigBuilder;
+import com.hazelcast.core.EntryEvent;
+import com.hazelcast.core.EntryListener;
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.ILock;
+import com.hazelcast.core.IMap;
+import com.hazelcast.core.Member;
+import com.hazelcast.core.MembershipEvent;
+import com.hazelcast.core.MembershipListener;
+import com.hazelcast.core.MultiMap;
+import com.hazelcast.core.Transaction;
+import com.hazelcast.nio.Address;
+
+/**
+ * An EndpointRegistry using a Hazelcast
+ */
+public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements EndpointRegistry, LifeCycleListener, EntryListener<String, Endpoint>, MembershipListener {
+    private final static Logger logger = Logger.getLogger(HazelcastEndpointRegistry.class.getName());
+
+    private HazelcastInstance hazelcastInstance;
+    protected Map<Object, Object> endpointMap;
+    protected Map<String, Endpoint> localEndpoints = new ConcurrentHashMap<String, Endpoint>();
+    protected MultiMap<String, String> endpointOwners;
+    protected AssemblyFactory assemblyFactory;
+    protected Object shutdownMutex = new Object();
+    protected Properties properties;
+
+    public HazelcastEndpointRegistry(ExtensionPointRegistry registry, Properties properties, String domainURI) {
+        super(registry, null, null, domainURI);
+        this.assemblyFactory = registry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(AssemblyFactory.class);
+        this.properties = properties;
+    }
+
+    public HazelcastEndpointRegistry(ExtensionPointRegistry registry,
+                                     Map<String, String> attributes,
+                                     String domainRegistryURI,
+                                     String domainURI) {
+        super(registry, attributes, domainRegistryURI, domainURI);
+        this.assemblyFactory = registry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(AssemblyFactory.class);
+        this.properties = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(RuntimeProperties.class).getProperties();
+    }
+    
+    public HazelcastInstance getHazelcastInstance() {
+        return hazelcastInstance;
+    }
+
+    public void start() {
+        if (endpointMap != null) {
+            throw new IllegalStateException("The registry has already been started");
+        }
+//        if (configURI.toString().startsWith("tuscany:vm:")) {
+//            endpointMap = new HashMap<Object, Object>();
+//        } else {
+            initHazelcastInstance();
+            IMap imap = hazelcastInstance.getMap(domainURI + "/Endpoints");
+            imap.addEntryListener(this, true);
+            endpointMap = imap;
+            
+            endpointOwners = hazelcastInstance.getMultiMap(domainURI + "/EndpointOwners");
+
+            hazelcastInstance.getCluster().addMembershipListener(this);
+//        }
+    }
+
+    public void stop() {
+        if (hazelcastInstance != null) {
+            synchronized (shutdownMutex) {
+                hazelcastInstance.shutdown();
+                hazelcastInstance = null;
+                endpointMap = null;
+                endpointOwners = null;
+            }
+        }
+    }
+
+    private void initHazelcastInstance() {
+        Config config = getHazelcastConfig();
+
+        // do this when theres a way to have adders be the key owners
+        // config.getMapConfig(configURI.getDomainName() + "/Endpoints").setBackupCount(0);
+
+        // this caches reads locally
+        config.getMapConfig("default").setNearCacheConfig(new NearCacheConfig(0, 0, "NONE", 0, true));
+
+        // Disable the Hazelcast shutdown hook as Tuscany has its own and with both there are race conditions
+        config.setProperty("hazelcast.shutdownhook.enabled",
+                           // GroupProperties.PROP_SHUTDOWNHOOK_ENABLED, 
+                           "false");
+        
+        // By default this is 5 seconds, not sure what the implications are but dropping it down to 1 makes 
+        // things like the samples look much faster
+        config.setProperty("hazelcast.wait.seconds.before.join",
+                           // GroupProperties.PROP_WAIT_SECONDS_BEFORE_JOIN, 
+                           "1");
+
+        this.hazelcastInstance = Hazelcast.newHazelcastInstance(config);
+    }
+
+    protected Config getHazelcastConfig() {
+        Config config;
+        this.properties = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(RuntimeProperties.class).getProperties();
+        String configFile = properties.getProperty("hazelcastConfig");
+        if (configFile != null) {
+            try {
+                config = new XmlConfigBuilder(configFile).build();
+            } catch (FileNotFoundException e) {
+                throw new IllegalArgumentException(configFile, e);
+            }
+        } else {
+            config = new XmlConfigBuilder().build();
+            RegistryConfig rc = new RegistryConfig(properties);
+            config.setPort(rc.getBindPort());
+            //config.setPortAutoIncrement(false);
+
+            if (!rc.getBindAddress().equals("*")) {
+                config.getNetworkConfig().getInterfaces().setEnabled(true);
+                config.getNetworkConfig().getInterfaces().clear();
+                config.getNetworkConfig().getInterfaces().addInterface(rc.getBindAddress());
+            }
+
+            config.getGroupConfig().setName(rc.getUserid());
+            config.getGroupConfig().setPassword(rc.getPassword());
+
+            if (rc.isMulticastDisabled()) {
+                config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
+            } else {
+                config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true);
+                config.getNetworkConfig().getJoin().getMulticastConfig().setMulticastPort(rc.getMulticastPort());
+                config.getNetworkConfig().getJoin().getMulticastConfig().setMulticastGroup(rc.getMulticastAddress());
+            }
+            
+            if (rc.getWKAs().size() > 0) {
+                TcpIpConfig tcpconfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
+                tcpconfig.setEnabled(true);
+                List<Address> lsMembers = tcpconfig.getAddresses();
+                lsMembers.clear();
+                for (String addr : rc.getWKAs()) {
+                    String[] ipNPort = addr.split(":");
+                    try {
+                        lsMembers.add(new Address(ipNPort[0], Integer.parseInt(ipNPort[1])));
+                    } catch (UnknownHostException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+            }
+        }
+        return config;
+    }
+
+    public void addEndpoint(Endpoint endpoint) {
+        if (findEndpoint(endpoint.getURI()).size() > 0) {
+            Member m = getOwningMember(endpoint.getURI());
+            throw new IllegalStateException("Endpoint " + endpoint.getURI() + " already exists in domain " + domainURI + " at " + m.getInetSocketAddress());
+        }
+            
+        String localMemberAddr = hazelcastInstance.getCluster().getLocalMember().getInetSocketAddress().toString();
+        String endpointURI = endpoint.getURI();
+        Transaction txn = hazelcastInstance.getTransaction();
+        txn.begin();
+        try {
+            endpointMap.put(endpointURI, endpoint);
+            endpointOwners.put(localMemberAddr, endpointURI);
+            txn.commit();
+        } catch (Throwable e) {
+            txn.rollback();
+            throw new ServiceRuntimeException(e);
+        }
+        localEndpoints.put(endpointURI, endpoint);
+        logger.info("Add endpoint - " + endpoint);
+    }
+
+    public List<Endpoint> findEndpoint(String uri) {
+        List<Endpoint> foundEndpoints = new ArrayList<Endpoint>();
+        for (Object v : endpointMap.values()) {
+            Endpoint endpoint = (Endpoint)v;
+            logger.fine("Matching against - " + endpoint);
+            if (endpoint.matches(uri)) {
+                if (!isLocal(endpoint)) {
+                    endpoint.setRemote(true);
+                    ((RuntimeEndpoint)endpoint).bind(registry, this);
+                } else {
+                    // get the local version of the endpoint
+                    // this local version won't have been serialized
+                    // won't be marked as remote and will have the 
+                    // full interface contract information
+                    endpoint = localEndpoints.get(endpoint.getURI());
+                }
+                
+                foundEndpoints.add(endpoint);
+                logger.fine("Found endpoint with matching service  - " + endpoint);
+            }
+        }
+        return foundEndpoints;
+    }
+    
+
+    private boolean isLocal(Endpoint endpoint) {
+        return localEndpoints.containsKey(endpoint.getURI());
+    }
+
+    public Endpoint getEndpoint(String uri) {
+        return (Endpoint)endpointMap.get(uri);
+    }
+
+    public List<Endpoint> getEndpoints() {
+        return new ArrayList(endpointMap.values());
+    }
+
+    public void removeEndpoint(Endpoint endpoint) {
+        if (hazelcastInstance == null) {
+            return;
+        }
+        synchronized (shutdownMutex) {
+            String localMemberAddr = hazelcastInstance.getCluster().getLocalMember().getInetSocketAddress().toString();
+            String endpointURI = endpoint.getURI();
+            
+// TODO: seems to be a txn bug in Hazelcast, see http://code.google.com/p/hazelcast/issues/detail?id=258 
+//            Transaction txn = hazelcastInstance.getTransaction();
+//            txn.begin();
+//            try {
+                endpointOwners.remove(localMemberAddr, endpointURI);
+                endpointMap.remove(endpointURI);
+//                txn.commit();
+//            } catch (Throwable e) {
+//                txn.rollback();
+//                throw new ServiceRuntimeException(e);
+//            }
+            localEndpoints.remove(endpointURI);
+            logger.info("Removed endpoint - " + endpoint);
+        }
+    }
+
+
+    public void entryAdded(EntryEvent<String, Endpoint> event) {
+        entryAdded(event.getKey(), event.getValue());
+    }
+
+    public void entryEvicted(EntryEvent<String, Endpoint> event) {
+        // Should not happen
+    }
+
+    public void entryRemoved(EntryEvent<String, Endpoint> event) {
+        entryRemoved(event.getKey(), event.getValue());
+    }
+
+    public void entryUpdated(EntryEvent<String, Endpoint> event) {
+        entryUpdated(event.getKey(), null, event.getValue());
+    }
+
+    public void entryAdded(Object key, Object value) {
+        Endpoint newEp = (Endpoint)value;
+        if (!isLocal(newEp)) {
+            logger.info(" Remote endpoint added: " + newEp);
+        } 
+        endpointAdded(newEp);
+    }
+
+    public void entryRemoved(Object key, Object value) {
+        Endpoint oldEp = (Endpoint)value;
+        if (!isLocal(oldEp)) {
+            logger.info(" Remote endpoint removed: " + value);
+        }
+        endpointRemoved(oldEp);
+    }
+
+    public void entryUpdated(Object key, Object oldValue, Object newValue) {
+        Endpoint oldEp = (Endpoint)oldValue;
+        Endpoint newEp = (Endpoint)newValue;
+        if (!isLocal(newEp)) {
+            logger.info(" Remote endpoint updated: " + newEp);
+        }
+        endpointUpdated(oldEp, newEp);
+    }
+
+    public void memberAdded(MembershipEvent event) {
+    }
+
+    public void memberRemoved(MembershipEvent event) {
+        try {
+            String memberAddr = event.getMember().getInetSocketAddress().toString();
+            if (endpointOwners.containsKey(memberAddr)) {
+                synchronized (shutdownMutex) {
+                    ILock lock = hazelcastInstance.getLock("EndpointOwners/" + memberAddr);
+                    lock.lock();
+                    try {
+                        if (endpointOwners.containsKey(memberAddr)) {
+                            Collection<String> keys = endpointOwners.remove(memberAddr);
+                            for (Object k : keys) {
+                                endpointMap.remove(k);
+                            }
+                        }
+                    } finally {
+                        lock.unlock();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            if (e.getCause() != null && e.getCause().getCause() != null) {
+                // ignore hazelcast already shutdown exception
+                if (!"Hazelcast Instance is not active!".equals(e.getCause().getCause().getMessage())) {
+                    throw new ServiceRuntimeException(e);
+                }
+            }
+        }
+    }
+
+    public Member getOwningMember(String serviceURI) {
+        for (String memberAddr : endpointOwners.keySet()) {
+            for (String service : endpointOwners.get(memberAddr)) {
+                Endpoint ep = assemblyFactory.createEndpoint();
+                ep.setURI(service);
+                if (ep.matches(serviceURI)) {
+                    for (Member m : getHazelcastInstance().getCluster().getMembers()) {
+                        if (memberAddr.equals(m.getInetSocketAddress().toString())) {
+                            return m;
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryConfig.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryConfig.java?rev=951651&r1=951650&r2=951651&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryConfig.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryConfig.java Sat Jun  5 05:17:47 2010
@@ -1,179 +1,179 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-
-package org.apache.tuscany.sca.endpoint.hazelcast;
-
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Properties;
-
-
-/**
- * Utility to parse the config properties.
- * 
- * bind - ip[:port] - defines the local bind address and port, it defaults to the network interface with the widest 
- *                    class (ie class A is wider than class B) on port 14820 and if that port in use it will try 
- *                    incrementing by one till a free port is found.
- *             
- * multicast - groupip:port | off - defines if multicast discovery is used and if so what multicast ip group and port is used 
- *             defaults to 224.5.12.10:51482. A value of off means multicast is disabled.
- *             
- * wka - ip[:port] - a comma separated list of ip address and port for remote nodes in the domain group. The port defaults to 14820.
- *             
- * userid -  is the userid other nodes must use to connect to this domain group. The default is the default domain name.
- * 
- * password -  is the password other nodes must use to connect to this domain group. The default is 'tuscany'.
- *             
- * client - true means this is an SCAClient call           
- *             
- */
-public class RegistryConfig {
-    
-    private String bindAddress = "*";
-    private int bindPort = 14820;
-    private boolean multicastDisabled = false;
-    private String multicastAddress = "224.5.12.10";
-    private int multicastPort = 51482;
-    private List<String> wkas = new ArrayList<String>();
-    private String userid;
-    private String password;
-    boolean client;
-    
-    public RegistryConfig(Properties properties) {
-        init(properties);
-    }
-
-    private void init(Properties properties) {
-   
-        String bindValue = properties.getProperty("bind");
-        if (bindValue == null) {
-            InetAddress addr = chooseLocalAddress();
-            if (addr != null) {
-                this.bindAddress = addr.getHostAddress();
-            }
-        } else {
-            if (bindValue.indexOf(":") == -1) {
-                this.bindAddress = bindValue;
-            } else {
-                String[] addr = bindValue.split(":");
-                this.bindAddress = addr[0];
-                this.bindPort = Integer.parseInt(addr[1]);
-            }
-        }
-
-        String multicastValue = properties.getProperty("multicast");
-        if (multicastValue != null) {
-            if ("off".equalsIgnoreCase(multicastValue)) {
-                this.multicastDisabled = true;
-            } else {
-                if (multicastValue.indexOf(":") == -1) {
-                    this.multicastAddress = multicastValue;
-                } else {
-                    String[] addr = multicastValue.split(":");
-                    this.multicastAddress = addr[0];
-                    this.multicastPort = Integer.parseInt(addr[1]);
-                }
-            }
-        }
-        
-        String wkaValue = properties.getProperty("wka");
-        if (wkaValue != null) {
-            String[] ips = wkaValue.split(",");
-            for (String ip : ips) {
-                if (ip.indexOf(":") == -1) {
-                    wkas.add(ip + ":14820");
-                } else {
-                    wkas.add(ip);
-                }
-            }
-        }
-
-        this.client = Boolean.parseBoolean(properties.getProperty("client", "false"));
-        this.password = properties.getProperty("password", "tuscany");
-        this.userid = properties.getProperty("userid", properties.getProperty("defaultDomainName", "default"));
-
-    }
-
-    public String getBindAddress() {
-        return bindAddress;
-    }
-
-    public int getBindPort() {
-        return bindPort;
-    }
-
-    public boolean isMulticastDisabled() {
-        return multicastDisabled;
-    }
-
-    public String getMulticastAddress() {
-        return multicastAddress;
-    }
-
-    public int getMulticastPort() {
-        return multicastPort;
-    }
-
-    public List<String> getWKAs() {
-        return wkas;
-    }
-    
-    public String getUserid() {
-        return userid;
-    }
-    public String getPassword() {
-        return password;
-    }
-
-    /**
-     * Use the NIC address with the widest class, ie class A instead of class B or C.
-     * Bit crude but in a lot of environments a class A address (eg 10.x.x.x) is likely
-     * a better choice than a class C address (eg 192.x.x.x). And the alternative to 
-     * this is to just choose the first address of the first network interface which 
-     * likely isn't a better choice than this approach.
-     */
-    protected InetAddress chooseLocalAddress() {
-        InetAddress chosen = null;
-        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();
-                    if (!addr.isLoopbackAddress()) {
-                        if (chosen == null) {
-                            chosen = addr;
-                        } else {
-                            if (((int) addr.getAddress()[0] & 0xFF) < ((int) chosen.getAddress()[0] & 0xFF)) {
-                                chosen = addr;
-                            }
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            // ignore
-        }
-        return chosen;
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.endpoint.hazelcast;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Properties;
+
+
+/**
+ * Utility to parse the config properties.
+ * 
+ * bind - ip[:port] - defines the local bind address and port, it defaults to the network interface with the widest 
+ *                    class (ie class A is wider than class B) on port 14820 and if that port in use it will try 
+ *                    incrementing by one till a free port is found.
+ *             
+ * multicast - groupip:port | off - defines if multicast discovery is used and if so what multicast ip group and port is used 
+ *             defaults to 224.5.12.10:51482. A value of off means multicast is disabled.
+ *             
+ * wka - ip[:port] - a comma separated list of ip address and port for remote nodes in the domain group. The port defaults to 14820.
+ *             
+ * userid -  is the userid other nodes must use to connect to this domain group. The default is the default domain name.
+ * 
+ * password -  is the password other nodes must use to connect to this domain group. The default is 'tuscany'.
+ *             
+ * client - true means this is an SCAClient call           
+ *             
+ */
+public class RegistryConfig {
+    
+    private String bindAddress = "*";
+    private int bindPort = 14820;
+    private boolean multicastDisabled = false;
+    private String multicastAddress = "224.5.12.10";
+    private int multicastPort = 51482;
+    private List<String> wkas = new ArrayList<String>();
+    private String userid;
+    private String password;
+    boolean client;
+    
+    public RegistryConfig(Properties properties) {
+        init(properties);
+    }
+
+    private void init(Properties properties) {
+   
+        String bindValue = properties.getProperty("bind");
+        if (bindValue == null) {
+            InetAddress addr = chooseLocalAddress();
+            if (addr != null) {
+                this.bindAddress = addr.getHostAddress();
+            }
+        } else {
+            if (bindValue.indexOf(":") == -1) {
+                this.bindAddress = bindValue;
+            } else {
+                String[] addr = bindValue.split(":");
+                this.bindAddress = addr[0];
+                this.bindPort = Integer.parseInt(addr[1]);
+            }
+        }
+
+        String multicastValue = properties.getProperty("multicast");
+        if (multicastValue != null) {
+            if ("off".equalsIgnoreCase(multicastValue)) {
+                this.multicastDisabled = true;
+            } else {
+                if (multicastValue.indexOf(":") == -1) {
+                    this.multicastAddress = multicastValue;
+                } else {
+                    String[] addr = multicastValue.split(":");
+                    this.multicastAddress = addr[0];
+                    this.multicastPort = Integer.parseInt(addr[1]);
+                }
+            }
+        }
+        
+        String wkaValue = properties.getProperty("wka");
+        if (wkaValue != null) {
+            String[] ips = wkaValue.split(",");
+            for (String ip : ips) {
+                if (ip.indexOf(":") == -1) {
+                    wkas.add(ip + ":14820");
+                } else {
+                    wkas.add(ip);
+                }
+            }
+        }
+
+        this.client = Boolean.parseBoolean(properties.getProperty("client", "false"));
+        this.password = properties.getProperty("password", "tuscany");
+        this.userid = properties.getProperty("userid", properties.getProperty("defaultDomainName", "default"));
+
+    }
+
+    public String getBindAddress() {
+        return bindAddress;
+    }
+
+    public int getBindPort() {
+        return bindPort;
+    }
+
+    public boolean isMulticastDisabled() {
+        return multicastDisabled;
+    }
+
+    public String getMulticastAddress() {
+        return multicastAddress;
+    }
+
+    public int getMulticastPort() {
+        return multicastPort;
+    }
+
+    public List<String> getWKAs() {
+        return wkas;
+    }
+    
+    public String getUserid() {
+        return userid;
+    }
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * Use the NIC address with the widest class, ie class A instead of class B or C.
+     * Bit crude but in a lot of environments a class A address (eg 10.x.x.x) is likely
+     * a better choice than a class C address (eg 192.x.x.x). And the alternative to 
+     * this is to just choose the first address of the first network interface which 
+     * likely isn't a better choice than this approach.
+     */
+    protected InetAddress chooseLocalAddress() {
+        InetAddress chosen = null;
+        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();
+                    if (!addr.isLoopbackAddress()) {
+                        if (chosen == null) {
+                            chosen = addr;
+                        } else {
+                            if (((int) addr.getAddress()[0] & 0xFF) < ((int) chosen.getAddress()[0] & 0xFF)) {
+                                chosen = addr;
+                            }
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            // ignore
+        }
+        return chosen;
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryConfig.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/test/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/test/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryTestCase.java?rev=951651&r1=951650&r2=951651&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/test/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/test/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryTestCase.java Sat Jun  5 05:17:47 2010
@@ -1,142 +1,142 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-
-package org.apache.tuscany.sca.endpoint.hazelcast;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.List;
-
-import junit.framework.Assert;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import com.hazelcast.config.Config;
-import com.hazelcast.config.TcpIpConfig;
-import com.hazelcast.config.XmlConfigBuilder;
-import com.hazelcast.core.Hazelcast;
-import com.hazelcast.core.HazelcastInstance;
-import com.hazelcast.core.IMap;
-import com.hazelcast.nio.Address;
-
-@Ignore
-public class RegistryTestCase {
-
-    @Test
-    public void test1() throws UnknownHostException {
-
-        HazelcastInstance h1 = create("54327", 9001);
-
-        IMap<Object, Object> h1map = h1.getMap("mymap");
-        h1map.put("key1", "bla1");
-        Assert.assertEquals("bla1", h1map.get("key1"));
-
-        HazelcastInstance h2 = create("false", 9002, 9001);
-        IMap<Object, Object> h2map = h2.getMap("mymap");
-        Assert.assertEquals("bla1", h2map.get("key1"));
-
-        HazelcastInstance h3 = create("false", 9003, 9002);
-        IMap<Object, Object> h3map = h3.getMap("mymap");
-        Assert.assertEquals("bla1", h3map.get("key1"));
-
-        h3map.put("k3", "v3");
-        h2map.put("k2", "v2");
-        
-        Assert.assertEquals("v2", h1map.get("k2"));
-        Assert.assertEquals("v3", h1map.get("k3"));
-        Assert.assertEquals("v2", h2map.get("k2"));
-        Assert.assertEquals("v3", h2map.get("k3"));
-        Assert.assertEquals("v2", h3map.get("k2"));
-        Assert.assertEquals("v3", h3map.get("k3"));
-        
-        HazelcastInstance h4 = create("54328", 9004, 9001);
-        IMap<Object, Object> h4map = h4.getMap("mymap");
-//        Assert.assertNull(h4map.get("k2"));
-//        Assert.assertNull(h4map.get("k3"));
-        Assert.assertEquals("v2", h4map.get("k2"));
-        Assert.assertEquals("v3", h4map.get("k3"));
-
-//        HazelcastInstance h5 = create("false", 9005, 9003, 9004);
-        HazelcastInstance h5 = create("54328", 9005);
-
-//        Assert.assertEquals("v2", h4map.get("k2"));
-//        Assert.assertEquals("v3", h4map.get("k3"));
-        
-        IMap<Object, Object> h5map = h5.getMap("mymap");
-        Assert.assertEquals("v2", h5map.get("k2"));
-        Assert.assertEquals("v3", h5map.get("k3"));
-        
-        h1.shutdown();
-        
-        Assert.assertEquals("v2", h2map.get("k2"));
-        Assert.assertEquals("v3", h2map.get("k3"));
-        Assert.assertEquals("v2", h3map.get("k2"));
-        Assert.assertEquals("v3", h3map.get("k3"));
-        Assert.assertEquals("v2", h4map.get("k2"));
-        Assert.assertEquals("v3", h4map.get("k3"));
-
-        h3map.put("key1a", "bla1a");
-        
-        Assert.assertEquals("bla1a", h2map.get("key1a"));
-        Assert.assertEquals("bla1a", h3map.get("key1a"));
-        Assert.assertEquals("bla1a", h4map.get("key1a"));
-        
-//        HazelcastInstance h4 = create(true, 9004, 9003);
-//        HazelcastInstance h5 = create(true, 9005);
-//        IMap<Object, Object> h5map = h5.getMap("mymap");
-//        Assert.assertEquals("bla1", h5map.get("key1"));
-
-//        HazelcastInstance h6 = create(false, 9006, 9005);
-//        IMap<Object, Object> h6map = h6.getMap("mymap");
-//        Assert.assertEquals("bla1", h6map.get("key1"));
-
-    }
-
-    private HazelcastInstance create(String multicast, int listenPort, int... connectPorts) throws UnknownHostException {
-        Config config = new XmlConfigBuilder().build();
-        config.setPort(listenPort);
-        config.setPortAutoIncrement(false);
-
-        // declare the interface Hazelcast should bind to
-        config.getNetworkConfig().getInterfaces().clear();
-        config.getNetworkConfig().getInterfaces().addInterface(InetAddress.getLocalHost().getHostAddress());
-        config.getNetworkConfig().getInterfaces().setEnabled(true);
-
-        if ("false".equals(multicast)) {
-            config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
-        } else {
-            config.getNetworkConfig().getJoin().getMulticastConfig().setMulticastPort(Integer.parseInt(multicast));
-        }
-        
-        if (connectPorts.length > 0) {
-            TcpIpConfig tcpconfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
-            tcpconfig.setEnabled(true);
-
-            List<Address> lsMembers = tcpconfig.getAddresses();
-            lsMembers.clear();
-            for (int p : connectPorts) {
-                lsMembers.add(new Address(InetAddress.getLocalHost(), p));
-            }
-        }
-
-        return Hazelcast.newHazelcastInstance(config);
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.endpoint.hazelcast;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import com.hazelcast.config.Config;
+import com.hazelcast.config.TcpIpConfig;
+import com.hazelcast.config.XmlConfigBuilder;
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IMap;
+import com.hazelcast.nio.Address;
+
+@Ignore
+public class RegistryTestCase {
+
+    @Test
+    public void test1() throws UnknownHostException {
+
+        HazelcastInstance h1 = create("54327", 9001);
+
+        IMap<Object, Object> h1map = h1.getMap("mymap");
+        h1map.put("key1", "bla1");
+        Assert.assertEquals("bla1", h1map.get("key1"));
+
+        HazelcastInstance h2 = create("false", 9002, 9001);
+        IMap<Object, Object> h2map = h2.getMap("mymap");
+        Assert.assertEquals("bla1", h2map.get("key1"));
+
+        HazelcastInstance h3 = create("false", 9003, 9002);
+        IMap<Object, Object> h3map = h3.getMap("mymap");
+        Assert.assertEquals("bla1", h3map.get("key1"));
+
+        h3map.put("k3", "v3");
+        h2map.put("k2", "v2");
+        
+        Assert.assertEquals("v2", h1map.get("k2"));
+        Assert.assertEquals("v3", h1map.get("k3"));
+        Assert.assertEquals("v2", h2map.get("k2"));
+        Assert.assertEquals("v3", h2map.get("k3"));
+        Assert.assertEquals("v2", h3map.get("k2"));
+        Assert.assertEquals("v3", h3map.get("k3"));
+        
+        HazelcastInstance h4 = create("54328", 9004, 9001);
+        IMap<Object, Object> h4map = h4.getMap("mymap");
+//        Assert.assertNull(h4map.get("k2"));
+//        Assert.assertNull(h4map.get("k3"));
+        Assert.assertEquals("v2", h4map.get("k2"));
+        Assert.assertEquals("v3", h4map.get("k3"));
+
+//        HazelcastInstance h5 = create("false", 9005, 9003, 9004);
+        HazelcastInstance h5 = create("54328", 9005);
+
+//        Assert.assertEquals("v2", h4map.get("k2"));
+//        Assert.assertEquals("v3", h4map.get("k3"));
+        
+        IMap<Object, Object> h5map = h5.getMap("mymap");
+        Assert.assertEquals("v2", h5map.get("k2"));
+        Assert.assertEquals("v3", h5map.get("k3"));
+        
+        h1.shutdown();
+        
+        Assert.assertEquals("v2", h2map.get("k2"));
+        Assert.assertEquals("v3", h2map.get("k3"));
+        Assert.assertEquals("v2", h3map.get("k2"));
+        Assert.assertEquals("v3", h3map.get("k3"));
+        Assert.assertEquals("v2", h4map.get("k2"));
+        Assert.assertEquals("v3", h4map.get("k3"));
+
+        h3map.put("key1a", "bla1a");
+        
+        Assert.assertEquals("bla1a", h2map.get("key1a"));
+        Assert.assertEquals("bla1a", h3map.get("key1a"));
+        Assert.assertEquals("bla1a", h4map.get("key1a"));
+        
+//        HazelcastInstance h4 = create(true, 9004, 9003);
+//        HazelcastInstance h5 = create(true, 9005);
+//        IMap<Object, Object> h5map = h5.getMap("mymap");
+//        Assert.assertEquals("bla1", h5map.get("key1"));
+
+//        HazelcastInstance h6 = create(false, 9006, 9005);
+//        IMap<Object, Object> h6map = h6.getMap("mymap");
+//        Assert.assertEquals("bla1", h6map.get("key1"));
+
+    }
+
+    private HazelcastInstance create(String multicast, int listenPort, int... connectPorts) throws UnknownHostException {
+        Config config = new XmlConfigBuilder().build();
+        config.setPort(listenPort);
+        config.setPortAutoIncrement(false);
+
+        // declare the interface Hazelcast should bind to
+        config.getNetworkConfig().getInterfaces().clear();
+        config.getNetworkConfig().getInterfaces().addInterface(InetAddress.getLocalHost().getHostAddress());
+        config.getNetworkConfig().getInterfaces().setEnabled(true);
+
+        if ("false".equals(multicast)) {
+            config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
+        } else {
+            config.getNetworkConfig().getJoin().getMulticastConfig().setMulticastPort(Integer.parseInt(multicast));
+        }
+        
+        if (connectPorts.length > 0) {
+            TcpIpConfig tcpconfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
+            tcpconfig.setEnabled(true);
+
+            List<Address> lsMembers = tcpconfig.getAddresses();
+            lsMembers.clear();
+            for (int p : connectPorts) {
+                lsMembers.add(new Address(InetAddress.getLocalHost(), p));
+            }
+        }
+
+        return Hazelcast.newHazelcastInstance(config);
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/test/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-hazelcast/src/test/java/org/apache/tuscany/sca/endpoint/hazelcast/RegistryTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/DisableMcastInterceptor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/DisableMcastInterceptor.java?rev=951651&r1=951650&r2=951651&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/DisableMcastInterceptor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/DisableMcastInterceptor.java Sat Jun  5 05:17:47 2010
@@ -1,41 +1,41 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-
-package org.apache.tuscany.sca.endpoint.tribes;
-
-import org.apache.catalina.tribes.Channel;
-import org.apache.catalina.tribes.ChannelException;
-import org.apache.catalina.tribes.group.ChannelInterceptorBase;
-
-/**
- * A static interceptor to disables multicast.
- * Can be removed when/if the function gets added to Tribes.
- * See Tomcat email http://markmail.org/message/doqu7pfl2hvvdfcl
- */
-public class DisableMcastInterceptor extends ChannelInterceptorBase {
-
-    public DisableMcastInterceptor() {
-        super();
-    }
-
-    public void start(int svc) throws ChannelException {
-        svc = (svc & (~Channel.MBR_TX_SEQ));
-        super.start(svc);
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.endpoint.tribes;
+
+import org.apache.catalina.tribes.Channel;
+import org.apache.catalina.tribes.ChannelException;
+import org.apache.catalina.tribes.group.ChannelInterceptorBase;
+
+/**
+ * A static interceptor to disables multicast.
+ * Can be removed when/if the function gets added to Tribes.
+ * See Tomcat email http://markmail.org/message/doqu7pfl2hvvdfcl
+ */
+public class DisableMcastInterceptor extends ChannelInterceptorBase {
+
+    public DisableMcastInterceptor() {
+        super();
+    }
+
+    public void start(int svc) throws ChannelException {
+        svc = (svc & (~Channel.MBR_TX_SEQ));
+        super.start(svc);
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/DisableMcastInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/DisableMcastInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/MultiRegTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/MultiRegTestCase.java?rev=951651&r1=951650&r2=951651&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/MultiRegTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/MultiRegTestCase.java Sat Jun  5 05:17:47 2010
@@ -1,169 +1,169 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-
-package org.apache.tuscany.sca.endpoint.tribes;
-
-import java.net.InetAddress;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
-import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.runtime.EndpointListener;
-import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-// Ignore so its not run in the build yet till its working
-public class MultiRegTestCase implements EndpointListener {
-    private static ExtensionPointRegistry extensionPoints;
-    private static AssemblyFactory assemblyFactory;
-    private static SCABindingFactory scaBindingFactory;
-
-    @BeforeClass
-    public static void init() {
-        extensionPoints = new DefaultExtensionPointRegistry();
-        FactoryExtensionPoint factories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
-        assemblyFactory = factories.getFactory(AssemblyFactory.class);
-        scaBindingFactory = factories.getFactory(SCABindingFactory.class);
-    }
-
-    @Test
-    public void testReplication() throws Exception {
-        RuntimeEndpoint ep1 = createEndpoint("ep1uri");
-
-        String host = InetAddress.getLocalHost().getHostAddress();
-        String bind = null; // "9.65.158.31";
-        String port1 = "8085";
-        String port2 = "8086";
-        String port3 = "8087";
-        String range = "1";
-
-        Map<String, String> attrs1 = new HashMap<String, String>();
-        // attrs1.put("nomcast", "true");
-        attrs1.put("bind", bind);
-        attrs1.put("receiverPort", port1);
-        attrs1.put("receiverAutoBind", range);
-        // attrs1.put("routes", host + ":" + port2 + " " + host + ":" + port3);
-        ReplicatedEndpointRegistry reg1 = new ReplicatedEndpointRegistry(extensionPoints, attrs1, "foo", "bar");
-        reg1.addListener(this);
-        reg1.start();
-
-        Map<String, String> attrs2 = new HashMap<String, String>();
-        // attrs2.put("nomcast", "true");
-        attrs1.put("bind", bind);
-        attrs2.put("receiverPort", port2);
-        attrs2.put("receiverAutoBind", range);
-        // attrs2.put("routes", host + ":"+port1);
-        ReplicatedEndpointRegistry reg2 = new ReplicatedEndpointRegistry(extensionPoints, attrs2, "foo", "bar");
-        reg2.addListener(this);
-        reg2.start();
-
-        Map<String, String> attrs3 = new HashMap<String, String>();
-        // attrs3.put("nomcast", "true");
-        attrs1.put("bind", bind);
-        attrs3.put("receiverPort", port3);
-        attrs3.put("receiverAutoBind", range);
-        // attrs3.put("routes", host + ":"+port1);
-        ReplicatedEndpointRegistry reg3 = new ReplicatedEndpointRegistry(extensionPoints, attrs3, "foo", "bar");
-        reg3.addListener(this);
-        reg3.start();
-
-        ep1.bind(extensionPoints, reg1);
-        reg1.addEndpoint(ep1);
-        assertExists(reg1, "ep1uri");
-        assertExists(reg2, "ep1uri");
-        assertExists(reg3, "ep1uri");
-
-        RuntimeEndpoint ep2 = createEndpoint("ep2uri");
-        ep2.bind(extensionPoints, reg2);
-        reg2.addEndpoint(ep2);
-        assertExists(reg2, "ep2uri");
-        assertExists(reg1, "ep2uri");
-        assertExists(reg3, "ep2uri");
-
-        reg1.stop();
-        Thread.sleep(6000);
-        Assert.assertNull(reg2.getEndpoint("ep1uri"));
-        Assert.assertNull(reg3.getEndpoint("ep1uri"));
-        assertExists(reg2, "ep2uri");
-        assertExists(reg3, "ep2uri");
-        
-        reg1.start();
-        ep1.bind(extensionPoints, reg1);
-        reg1.addEndpoint(ep1);
-        assertExists(reg1, "ep1uri");
-        assertExists(reg2, "ep1uri");
-        assertExists(reg3, "ep1uri");
-        
-        reg1.stop();
-        reg2.stop();
-        reg3.stop();
-        System.out.println(); // closed
-    }
-
-    private Endpoint assertExists(ReplicatedEndpointRegistry reg, String uri) throws InterruptedException {
-        Endpoint ep = null;
-        int count = 0;
-        while (ep == null && count < 15) {
-            ep = reg.getEndpoint(uri);
-            Thread.sleep(1000);
-            count++;
-            System.out.println(reg + ": tries=" + count);
-        }
-        Assert.assertNotNull(ep);
-        Assert.assertEquals(uri, ep.getURI());
-        return ep;
-    }
-
-    private RuntimeEndpoint createEndpoint(String uri) {
-        RuntimeEndpoint ep = (RuntimeEndpoint) assemblyFactory.createEndpoint();
-        Component comp = assemblyFactory.createComponent();
-        ep.setComponent(comp);
-        ep.setService(assemblyFactory.createComponentService());
-        Binding b = scaBindingFactory.createSCABinding();
-        ep.setBinding(b);
-        ep.setURI(uri);
-        return ep;
-    }
-    
-    private void print(String prefix, Endpoint ep) {
-        System.out.println(prefix + ": "+ep);
-    }
-
-    public void endpointAdded(Endpoint endpoint) {
-        print("Added", endpoint);
-    }
-
-    public void endpointRemoved(Endpoint endpoint) {
-        print("Removed", endpoint);
-    }
-
-    public void endpointUpdated(Endpoint oldEndpoint, Endpoint newEndpoint) {
-        print("Updated", newEndpoint);
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.endpoint.tribes;
+
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.runtime.EndpointListener;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+// Ignore so its not run in the build yet till its working
+public class MultiRegTestCase implements EndpointListener {
+    private static ExtensionPointRegistry extensionPoints;
+    private static AssemblyFactory assemblyFactory;
+    private static SCABindingFactory scaBindingFactory;
+
+    @BeforeClass
+    public static void init() {
+        extensionPoints = new DefaultExtensionPointRegistry();
+        FactoryExtensionPoint factories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+        assemblyFactory = factories.getFactory(AssemblyFactory.class);
+        scaBindingFactory = factories.getFactory(SCABindingFactory.class);
+    }
+
+    @Test
+    public void testReplication() throws Exception {
+        RuntimeEndpoint ep1 = createEndpoint("ep1uri");
+
+        String host = InetAddress.getLocalHost().getHostAddress();
+        String bind = null; // "9.65.158.31";
+        String port1 = "8085";
+        String port2 = "8086";
+        String port3 = "8087";
+        String range = "1";
+
+        Map<String, String> attrs1 = new HashMap<String, String>();
+        // attrs1.put("nomcast", "true");
+        attrs1.put("bind", bind);
+        attrs1.put("receiverPort", port1);
+        attrs1.put("receiverAutoBind", range);
+        // attrs1.put("routes", host + ":" + port2 + " " + host + ":" + port3);
+        ReplicatedEndpointRegistry reg1 = new ReplicatedEndpointRegistry(extensionPoints, attrs1, "foo", "bar");
+        reg1.addListener(this);
+        reg1.start();
+
+        Map<String, String> attrs2 = new HashMap<String, String>();
+        // attrs2.put("nomcast", "true");
+        attrs1.put("bind", bind);
+        attrs2.put("receiverPort", port2);
+        attrs2.put("receiverAutoBind", range);
+        // attrs2.put("routes", host + ":"+port1);
+        ReplicatedEndpointRegistry reg2 = new ReplicatedEndpointRegistry(extensionPoints, attrs2, "foo", "bar");
+        reg2.addListener(this);
+        reg2.start();
+
+        Map<String, String> attrs3 = new HashMap<String, String>();
+        // attrs3.put("nomcast", "true");
+        attrs1.put("bind", bind);
+        attrs3.put("receiverPort", port3);
+        attrs3.put("receiverAutoBind", range);
+        // attrs3.put("routes", host + ":"+port1);
+        ReplicatedEndpointRegistry reg3 = new ReplicatedEndpointRegistry(extensionPoints, attrs3, "foo", "bar");
+        reg3.addListener(this);
+        reg3.start();
+
+        ep1.bind(extensionPoints, reg1);
+        reg1.addEndpoint(ep1);
+        assertExists(reg1, "ep1uri");
+        assertExists(reg2, "ep1uri");
+        assertExists(reg3, "ep1uri");
+
+        RuntimeEndpoint ep2 = createEndpoint("ep2uri");
+        ep2.bind(extensionPoints, reg2);
+        reg2.addEndpoint(ep2);
+        assertExists(reg2, "ep2uri");
+        assertExists(reg1, "ep2uri");
+        assertExists(reg3, "ep2uri");
+
+        reg1.stop();
+        Thread.sleep(6000);
+        Assert.assertNull(reg2.getEndpoint("ep1uri"));
+        Assert.assertNull(reg3.getEndpoint("ep1uri"));
+        assertExists(reg2, "ep2uri");
+        assertExists(reg3, "ep2uri");
+        
+        reg1.start();
+        ep1.bind(extensionPoints, reg1);
+        reg1.addEndpoint(ep1);
+        assertExists(reg1, "ep1uri");
+        assertExists(reg2, "ep1uri");
+        assertExists(reg3, "ep1uri");
+        
+        reg1.stop();
+        reg2.stop();
+        reg3.stop();
+        System.out.println(); // closed
+    }
+
+    private Endpoint assertExists(ReplicatedEndpointRegistry reg, String uri) throws InterruptedException {
+        Endpoint ep = null;
+        int count = 0;
+        while (ep == null && count < 15) {
+            ep = reg.getEndpoint(uri);
+            Thread.sleep(1000);
+            count++;
+            System.out.println(reg + ": tries=" + count);
+        }
+        Assert.assertNotNull(ep);
+        Assert.assertEquals(uri, ep.getURI());
+        return ep;
+    }
+
+    private RuntimeEndpoint createEndpoint(String uri) {
+        RuntimeEndpoint ep = (RuntimeEndpoint) assemblyFactory.createEndpoint();
+        Component comp = assemblyFactory.createComponent();
+        ep.setComponent(comp);
+        ep.setService(assemblyFactory.createComponentService());
+        Binding b = scaBindingFactory.createSCABinding();
+        ep.setBinding(b);
+        ep.setURI(uri);
+        return ep;
+    }
+    
+    private void print(String prefix, Endpoint ep) {
+        System.out.println(prefix + ": "+ep);
+    }
+
+    public void endpointAdded(Endpoint endpoint) {
+        print("Added", endpoint);
+    }
+
+    public void endpointRemoved(Endpoint endpoint) {
+        print("Removed", endpoint);
+    }
+
+    public void endpointUpdated(Endpoint oldEndpoint, Endpoint newEndpoint) {
+        print("Updated", newEndpoint);
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/MultiRegTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/MultiRegTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistryTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistryTestCase.java?rev=951651&r1=951650&r2=951651&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistryTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistryTestCase.java Sat Jun  5 05:17:47 2010
@@ -1,79 +1,79 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.    
- */
-
-package org.apache.tuscany.sca.endpoint.tribes;
-
-import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class ReplicatedEndpointRegistryTestCase {
-
-    @Test
-    @Ignore("Ignore this test case for now as it might be sensitive to the multicast settings for a multi-homed machine")
-    public void testReplicate() throws InterruptedException {
-        DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
-        FactoryExtensionPoint factories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
-        AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
-
-        ReplicatedEndpointRegistry ep1 = new ReplicatedEndpointRegistry(extensionPoints, null, "foo", "bar");
-        System.out.println("ep1 is: " + ep1);
-        ep1.start();
-
-        Endpoint e1 = assemblyFactory.createEndpoint();
-        e1.setURI("e1uri");
-        ((RuntimeEndpoint) e1).bind(extensionPoints, ep1);
-        ep1.addEndpoint(e1);
-
-        Endpoint e1p = ep1.getEndpoint("e1uri");
-        System.out.println("EP1 in Registry 1: " + e1p);
-        Assert.assertNotNull(e1p);
-
-        ReplicatedEndpointRegistry ep2 = new ReplicatedEndpointRegistry(extensionPoints, null, "foo", "bar");
-        System.out.println("ep2 is: " + ep2);
-        ep2.start();
-        Thread.sleep(5000);
-
-        Endpoint e1p2 = ep2.getEndpoint("e1uri");
-        System.out.println("EP1 in Registry 2: " + e1p2);
-        Assert.assertNotNull(e1p2);
-
-        ReplicatedEndpointRegistry ep3 = new ReplicatedEndpointRegistry(extensionPoints, null, "foo", "bar");
-        System.out.println("ep3 is: " + ep3);
-        ep3.start();
-        Thread.sleep(5000);
-
-        Endpoint e1p3 = ep3.getEndpoint("e1uri");
-        System.out.println("EP1 in Registry 3: " + e1p3);
-        Assert.assertNotNull(e1p3);
-
-        ep1.stop();
-        ep2.stop();
-        ep3.stop();
-    }
-
-    public static void main(String[] args) throws Exception {
-        new ReplicatedEndpointRegistryTestCase().testReplicate();
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.endpoint.tribes;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Endpoint;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class ReplicatedEndpointRegistryTestCase {
+
+    @Test
+    @Ignore("Ignore this test case for now as it might be sensitive to the multicast settings for a multi-homed machine")
+    public void testReplicate() throws InterruptedException {
+        DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry();
+        FactoryExtensionPoint factories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+        AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class);
+
+        ReplicatedEndpointRegistry ep1 = new ReplicatedEndpointRegistry(extensionPoints, null, "foo", "bar");
+        System.out.println("ep1 is: " + ep1);
+        ep1.start();
+
+        Endpoint e1 = assemblyFactory.createEndpoint();
+        e1.setURI("e1uri");
+        ((RuntimeEndpoint) e1).bind(extensionPoints, ep1);
+        ep1.addEndpoint(e1);
+
+        Endpoint e1p = ep1.getEndpoint("e1uri");
+        System.out.println("EP1 in Registry 1: " + e1p);
+        Assert.assertNotNull(e1p);
+
+        ReplicatedEndpointRegistry ep2 = new ReplicatedEndpointRegistry(extensionPoints, null, "foo", "bar");
+        System.out.println("ep2 is: " + ep2);
+        ep2.start();
+        Thread.sleep(5000);
+
+        Endpoint e1p2 = ep2.getEndpoint("e1uri");
+        System.out.println("EP1 in Registry 2: " + e1p2);
+        Assert.assertNotNull(e1p2);
+
+        ReplicatedEndpointRegistry ep3 = new ReplicatedEndpointRegistry(extensionPoints, null, "foo", "bar");
+        System.out.println("ep3 is: " + ep3);
+        ep3.start();
+        Thread.sleep(5000);
+
+        Endpoint e1p3 = ep3.getEndpoint("e1uri");
+        System.out.println("EP1 in Registry 3: " + e1p3);
+        Assert.assertNotNull(e1p3);
+
+        ep1.stop();
+        ep2.stop();
+        ep3.stop();
+    }
+
+    public static void main(String[] args) throws Exception {
+        new ReplicatedEndpointRegistryTestCase().testReplicate();
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistryTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/test/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistryTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba-jse-tns/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba-jse-tns/src/main/java/org/apache/tuscany/sca/host/corba/jse/tns/TnsDefaultCorbaHost.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba-jse-tns/src/main/java/org/apache/tuscany/sca/host/corba/jse/tns/TnsDefaultCorbaHost.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba-jse-tns/src/test/java/org/apache/tuscany/sca/host/corba/testing/TnsDefaultCorbaHostTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba-jse-tns/src/test/java/org/apache/tuscany/sca/host/corba/testing/TnsDefaultCorbaHostTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba/src/main/java/org/apache/tuscany/sca/host/corba/SocketUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/host-corba/src/main/java/org/apache/tuscany/sca/host/corba/SocketUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



Mime
View raw message