From 82d2e8d40f5b562b13faba064cf2b5323343e2ae Mon Sep 17 00:00:00 2001 From: antelder Date: Sun, 19 Jun 2011 07:25:03 +0000 Subject: 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 --- .../java/org/apache/tuscany/sca/impl/NodeImpl.java | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'sca-java-2.x/trunk/modules/domain-node/src/main/java') 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 dependentContributionURIs) throws ContributionReadException, ValidationException { + public boolean updateContribution(String uri, String contributionURL, String metaDataURL, List 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(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(stoppedComposites.values())) { + if (dc.getContributionURIs().contains(uri)) { + stoppedComposites.remove(uri + "/" + dc.getURI()); + } + } return true; } -- cgit v1.2.3