From 383ff6bf4c96aed0bcad3d3b1517dfdd5ad67046 Mon Sep 17 00:00:00 2001 From: antelder Date: Tue, 10 May 2011 08:59:41 +0000 Subject: Update the registry to support getting the QName and Composite, and use that in teh hazelcast registry to manage the running composites git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1101369 13f79535-47bb-0310-9956-ffa450edef68 --- .../hazelcast/HazelcastEndpointRegistry.java | 60 ++++++++++++++++++---- 1 file changed, 49 insertions(+), 11 deletions(-) (limited to 'sca-java-2.x/trunk/modules/domain-hazelcast/src/main') diff --git a/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java b/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java index aa9abdf45f..7e22ceab2c 100644 --- a/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java +++ b/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/endpoint/hazelcast/HazelcastEndpointRegistry.java @@ -25,7 +25,6 @@ import java.io.StringReader; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; @@ -82,12 +81,16 @@ public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements E private final static Logger logger = Logger.getLogger(HazelcastEndpointRegistry.class.getName()); private HazelcastInstance hazelcastInstance; + protected Map endpointMap; - protected Map endpointWsdls; - protected Map runningComposites; - protected Map localEndpoints = new ConcurrentHashMap(); protected MultiMap endpointOwners; + protected Map runningComposites; + protected MultiMap runningCompositeOwners; + + protected Map endpointWsdls; + protected Map localEndpoints = new ConcurrentHashMap(); + protected AssemblyFactory assemblyFactory; protected Object shutdownMutex = new Object(); protected Properties properties; @@ -126,9 +129,8 @@ public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements E endpointOwners = hazelcastInstance.getMultiMap(domainURI + "/EndpointOwners"); endpointWsdls = hazelcastInstance.getMap(domainURI + "/EndpointWsdls"); - // TODO: get going in-JVM first then fix this which needs to serialize/deserialize the composite - // runningComposites = hazelcastInstance.getMap(domainURI + "/composites"); - runningComposites = new HashMap(); + runningComposites = hazelcastInstance.getMap(domainURI + "/CompositeOwners"); + runningCompositeOwners = hazelcastInstance.getMultiMap(domainURI + "/CompositeOwners"); hazelcastInstance.getCluster().addMembershipListener(this); // } @@ -142,6 +144,8 @@ public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements E endpointMap = null; endpointOwners = null; endpointWsdls = null; + runningComposites = null; + runningCompositeOwners = null; } } } @@ -434,6 +438,12 @@ public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements E endpointWsdls.remove(k); } } + if (runningCompositeOwners.containsKey(memberAddr)) { + Collection keys = runningCompositeOwners.remove(memberAddr); + for (QName k : keys) { + runningComposites.remove(k); + } + } } finally { lock.unlock(); } @@ -465,18 +475,46 @@ public class HazelcastEndpointRegistry extends BaseEndpointRegistry implements E } return null; } + @Override public void addRunningComposite(Composite composite) { - runningComposites.put(composite.getName(), composite); + String localMemberAddr = hazelcastInstance.getCluster().getLocalMember().getInetSocketAddress().toString(); + String compositeXML = ""; // TODO: serialize composite + Transaction txn = hazelcastInstance.getTransaction(); + txn.begin(); + try { + runningComposites.put(composite.getName(), compositeXML); + runningCompositeOwners.put(localMemberAddr, composite.getName()); + txn.commit(); + } catch (Throwable e) { + txn.rollback(); + throw new ServiceRuntimeException(e); + } } @Override public void removeRunningComposite(QName name) { - runningComposites.remove(name); + String localMemberAddr = hazelcastInstance.getCluster().getLocalMember().getInetSocketAddress().toString(); + Transaction txn = hazelcastInstance.getTransaction(); + txn.begin(); + try { + runningComposites.remove(name); + runningCompositeOwners.remove(localMemberAddr, name); + txn.commit(); + } catch (Throwable e) { + txn.rollback(); + throw new ServiceRuntimeException(e); + } + } + + @Override + public Composite getRunningComposite(QName name) { + String compositeXML = runningComposites.get(name); + return null; // TODO: unserialize composite xml } @Override - public List getRunningComposites() { - return new ArrayList(runningComposites.values()); + public List getRunningCompositeNames() { + return new ArrayList(runningCompositeOwners.values()); } } -- cgit v1.2.3