summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/domain-node/src/main/java/org
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2011-06-19 07:25:03 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2011-06-19 07:25:03 +0000
commit82d2e8d40f5b562b13faba064cf2b5323343e2ae (patch)
treed94a99ff6061f47eced60e55ddcbb6cefc437c8f /sca-java-2.x/trunk/modules/domain-node/src/main/java/org
parentf78a216e05c75a2e708c26efb7c616b6f1bdf2ba (diff)
Add an impl to the update contribution method and a testcase
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1137308 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/domain-node/src/main/java/org')
-rw-r--r--sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java24
1 files changed, 21 insertions, 3 deletions
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 2d7c371975..619ec985ab 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
@@ -103,22 +103,40 @@ public class NodeImpl implements Node {
return installContribution(uri, contributionURL, null, null);
}
- public boolean updateContribution(String uri, String contributionURL, String metaDataURL, List<String> dependentContributionURIs) throws ContributionReadException, ValidationException {
+ public boolean updateContribution(String uri, String contributionURL, String metaDataURL, List<String> dependentContributionURIs) throws ContributionReadException, ValidationException, ActivationException {
ContributionDescription ic = getInstalledContribution(uri);
if (ic == null) {
installContribution(uri, contributionURL, metaDataURL, dependentContributionURIs);
return true;
}
+ // do this if only updating if the contribution has been modified:
// if url equal and a file and last modified not changed
// if metadata url equal and a file and laqst modified not changed
// if (dependent contributions uris not changed)
// return false
- // uninstall contribution
- // install contribution
+ uninstallContribution(uri);
+
+ installContribution(uri, contributionURL, metaDataURL, dependentContributionURIs);
+
// stop/start all started composites using the contribution
+ for (DeployedComposite dc : new ArrayList<DeployedComposite>(startedComposites.values())) {
+ if (dc.getContributionURIs().contains(uri)) {
+ String dcCompositeURI = dc.getURI();
+ stopComposite(uri, dcCompositeURI);
+ String key = uri + "/" + dcCompositeURI;
+ stoppedComposites.remove(key);
+ startComposite(uri, dcCompositeURI);
+ }
+ }
+
// remove all stopped composites using the contribution
+ for (DeployedComposite dc : new ArrayList<DeployedComposite>(stoppedComposites.values())) {
+ if (dc.getContributionURIs().contains(uri)) {
+ stoppedComposites.remove(uri + "/" + dc.getURI());
+ }
+ }
return true;
}