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 --- .../tuscany/sca/runtime/EndpointRegistry.java | 3 +- .../core/assembly/impl/EndpointRegistryImpl.java | 13 ++++- .../tuscany/sca/deployment/impl/DeployerImpl.java | 7 ++- .../hazelcast/HazelcastEndpointRegistry.java | 60 ++++++++++++++++++---- .../java/org/apache/tuscany/sca/impl/NodeImpl.java | 4 +- .../tribes/ReplicatedEndpointRegistry.java | 8 ++- 6 files changed, 77 insertions(+), 18 deletions(-) (limited to 'sca-java-2.x/trunk') diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointRegistry.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointRegistry.java index a2ceeda5a7..4965b7c15a 100644 --- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointRegistry.java +++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/EndpointRegistry.java @@ -82,5 +82,6 @@ public interface EndpointRegistry { void addRunningComposite(Composite composite); void removeRunningComposite(QName name); - List getRunningComposites(); + Composite getRunningComposite(QName name); + List getRunningCompositeNames(); } diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointRegistryImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointRegistryImpl.java index 1f03395040..6badcd74ef 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointRegistryImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/EndpointRegistryImpl.java @@ -172,8 +172,17 @@ public class EndpointRegistryImpl extends BaseEndpointRegistry implements Endpoi } @Override - public List getRunningComposites() { - return new ArrayList(runningComposites.values()); + public Composite getRunningComposite(QName name) { + return runningComposites.get(name); + } + + @Override + public List getRunningCompositeNames() { + List compositeNames = new ArrayList(); + for (Composite composite : runningComposites.values()) { + compositeNames.add(composite.getName()); + } + return compositeNames; } } diff --git a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java index 1781e75d45..ed903134a7 100644 --- a/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java +++ b/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java @@ -846,7 +846,12 @@ public class DeployerImpl implements Deployer { } @Override - public List getRunningComposites() { + public Composite getRunningComposite(QName name) { + return null; + } + + @Override + public List getRunningCompositeNames() { return null; } 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()); } } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java index c49f2f68fd..c7a8a6087e 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java @@ -222,8 +222,8 @@ public class NodeImpl implements Node { domainComposite.setAutowire(false); domainComposite.setLocal(false); List domainIncludes = domainComposite.getIncludes(); - for (Composite composite : endpointRegistry.getRunningComposites()) { - domainIncludes.add(composite); + for (QName compositeName : endpointRegistry.getRunningCompositeNames()) { + domainIncludes.add(endpointRegistry.getRunningComposite(compositeName)); } return domainComposite; } diff --git a/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistry.java b/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistry.java index 035418545f..d5e99132f1 100644 --- a/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistry.java +++ b/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedEndpointRegistry.java @@ -433,7 +433,13 @@ public class ReplicatedEndpointRegistry extends BaseEndpointRegistry implements } @Override - public List getRunningComposites() { + public Composite getRunningComposite(QName name) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getRunningCompositeNames() { // TODO Auto-generated method stub return null; } -- cgit v1.2.3