Author: antelder
Date: Mon Jun 20 08:50:59 2011
New Revision: 1137546

URL: http://svn.apache.org/viewvc?rev=1137546&view=rev
Log:
Avoid exception in updateCOntribution if the contribution doesn't exist for 
some reason, and add a new method to uninstall a contribution and stop any 
started composites that were using it

Modified:
    
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java?rev=1137546&r1=1137545&r2=1137546&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
 Mon Jun 20 08:50:59 2011
@@ -104,7 +104,7 @@ public class NodeImpl implements Node {
     }
 
     public boolean updateContribution(String uri, String contributionURL, 
String metaDataURL, List<String> dependentContributionURIs) throws 
ContributionReadException, ValidationException, ActivationException {
-        ContributionDescription ic = getInstalledContribution(uri);
+        ContributionDescription ic = 
domainRegistry.getInstalledContribution(uri);
         if (ic == null) {
             installContribution(uri, contributionURL, metaDataURL, 
dependentContributionURIs);
             return true;
@@ -503,4 +503,29 @@ public class NodeImpl implements Node {
         }
         return updated;
     }
+
+    public void uninstallContribution(String contributionURI, boolean b) 
throws ActivationException {
+        uninstallContribution(contributionURI);
+        if (!b) {
+            return;
+        }
+
+        // stop all started composites using the contribution
+        for (DeployedComposite dc : new 
ArrayList<DeployedComposite>(startedComposites.values())) {
+            if (dc.getContributionURIs().contains(contributionURI)) {
+                String dcContributionURI = dc.getContributionURIs().get(0);
+                String dcCompositeURI = dc.getURI();
+                stopComposite(dcContributionURI, dcCompositeURI);
+                String key = dcContributionURI + "/" + dcCompositeURI;
+                stoppedComposites.remove(key);
+            }
+        }
+
+        // remove all stopped composites using the contribution
+        for (DeployedComposite dc : new 
ArrayList<DeployedComposite>(stoppedComposites.values())) {
+            if (dc.getContributionURIs().contains(contributionURI)) {
+                stoppedComposites.remove(contributionURI + "/" + dc.getURI());
+            }
+        }
+    }
 }


Reply via email to