diff options
Diffstat (limited to '')
3 files changed, 54 insertions, 31 deletions
diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DeployedComposite.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DeployedComposite.java index 6788f29ca5..c82fc3a81c 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DeployedComposite.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/DeployedComposite.java @@ -52,6 +52,7 @@ public class DeployedComposite { private Deployer deployer; private EndpointRegistry endpointRegistry; private ExtensionPointRegistry extensionPointRegistry; + private Contribution systemContribution; public DeployedComposite(Composite composite, InstalledContribution ic, @@ -83,18 +84,14 @@ public class DeployedComposite { contribution.get(0).getDeployables().clear(); contribution.get(0).getDeployables().add(composite); + Monitor monitor = deployer.createMonitor(); -// TODO: is the ContextMonitor neccessary here? -// Monitor tcm = monitorFactory.setContextMonitor(monitor); -// try { - - domainComposite = deployer.build(contribution, dependedOnContributions, new HashMap<QName, List<String>>(), monitor); - monitor.analyzeProblems(); + if (systemContribution == null) { + this.systemContribution = deployer.cloneSystemContribution(monitor); + } + domainComposite = deployer.build(contribution, dependedOnContributions, systemContribution, new HashMap<QName, List<String>>(), monitor); + monitor.analyzeProblems(); -// } finally { -// monitorFactory.setContextMonitor(tcm); -// } - compositeContext = new CompositeContext(extensionPointRegistry, endpointRegistry, domainComposite, @@ -102,13 +99,17 @@ public class DeployedComposite { null, // don't need node uri deployer.getSystemDefinitions()); - compositeActivator.activate(compositeContext, domainComposite); - compositeActivator.start(compositeContext, domainComposite); + start(); this.uri = getCompositeURI(composite, installedContribution); } - public void unDeploy() throws ActivationException { + public void start() throws ActivationException { + compositeActivator.activate(compositeContext, domainComposite); + compositeActivator.start(compositeContext, domainComposite); + } + + public void stop() throws ActivationException { compositeActivator.stop(compositeContext, domainComposite); compositeActivator.deactivate(domainComposite); } diff --git a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/InstalledContribution.java b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/InstalledContribution.java index 5137605067..750a13f81a 100644 --- a/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/InstalledContribution.java +++ b/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/InstalledContribution.java @@ -20,10 +20,13 @@ package org.apache.tuscany.sca.impl; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.tuscany.sca.assembly.Composite; import org.apache.tuscany.sca.contribution.Contribution; +import org.apache.tuscany.sca.runtime.ActivationException; public class InstalledContribution { @@ -31,7 +34,8 @@ public class InstalledContribution { private String url; private Contribution contribution; private List<Composite> defaultDeployables = new ArrayList<Composite>(); - private List<DeployedComposite> deployedComposites = new ArrayList<DeployedComposite>(); + private List<DeployedComposite> startededComposites = new ArrayList<DeployedComposite>(); + private Map<String, DeployedComposite> stoppedComposites = new HashMap<String, DeployedComposite>(); private List<String> dependentContributionURIs; public InstalledContribution(String uri, String url, Contribution contribution, List<String> dependentContributionURIs) { @@ -57,9 +61,33 @@ public class InstalledContribution { return defaultDeployables; } public List<DeployedComposite> getDeployedComposites() { - return deployedComposites; + return startededComposites; } public List<String> getDependentContributionURIs() { return dependentContributionURIs; } + public void stop(String compositeURI) throws ActivationException { + for (DeployedComposite dc : getDeployedComposites()) { + if (compositeURI.equals(dc.getURI())) { + getDeployedComposites().remove(dc); + dc.stop(); + stoppedComposites.put(compositeURI, dc); + return; + } + } + throw new IllegalStateException("composite not deployed: " + compositeURI); + } + + public void start(DeployedComposite composite) { + startededComposites.add(composite); + } + + public boolean restart(String compositeURI) throws ActivationException { + DeployedComposite dc = stoppedComposites.remove(compositeURI); + if (dc != null) { + dc.start(); + startededComposites.add(dc); + } + return dc != null; + } } 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 c3b6739ca8..2e0c4fea02 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 @@ -188,13 +188,15 @@ public class NodeImpl implements Node { if (ic == null) { throw new IllegalArgumentException("Contribution not installed: " + contributionURI); } - for (Artifact a : ic.getContribution().getArtifacts()) { - if (a.getURI().equals(compositeURI)) { - startComposite((Composite) a.getModel(), ic); - return; + if (!ic.restart(compositeURI)) { + for (Artifact a : ic.getContribution().getArtifacts()) { + if (a.getURI().equals(compositeURI)) { + startComposite((Composite) a.getModel(), ic); + return; + } } + throw new IllegalArgumentException("composite not found: " + compositeURI); } - throw new IllegalArgumentException("composite not found: " + compositeURI); } @Override @@ -203,14 +205,7 @@ public class NodeImpl implements Node { if (ic == null) { throw new IllegalArgumentException("Contribution not installed: " + contributionURI); } - for (DeployedComposite dc : ic.getDeployedComposites()) { - if (compositeURI.equals(dc.getURI())) { - ic.getDeployedComposites().remove(dc); - dc.unDeploy(); - return; - } - } - throw new IllegalStateException("composite not deployed: " + compositeURI); + ic.stop(compositeURI); } public Composite getDomainLevelComposite() { @@ -238,7 +233,7 @@ public class NodeImpl implements Node { } installedContributions.remove(contributionURI); for (DeployedComposite dc : ic.getDeployedComposites()) { - dc.unDeploy(); + dc.stop(); } ic.getDeployedComposites().clear(); } @@ -447,9 +442,8 @@ public class NodeImpl implements Node { protected void startComposite(Composite c, InstalledContribution ic) throws ActivationException, ValidationException { List<Contribution> dependentContributions = calculateDependentContributions(ic); - DeployedComposite dc = new DeployedComposite(c, ic, dependentContributions, deployer, compositeActivator, endpointRegistry, extensionPointRegistry); - ic.getDeployedComposites().add(dc); + ic.start(dc); } public Set<String> getDependentContributions(String contributionURI) { |