Author: ccustine
Date: Mon Nov 16 07:27:37 2009
New Revision: 880637

URL: http://svn.apache.org/viewvc?rev=880637&view=rev
Log:
FELIX-1869 - Need better UI feedback when features commands fail

Modified:
    
felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java
    
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/AddUrlCommand.java
    
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/RefreshUrlCommand.java
    
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
    
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/RepositoryImpl.java

Modified: 
felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java?rev=880637&r1=880636&r2=880637&view=diff
==============================================================================
--- 
felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java
 (original)
+++ 
felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java
 Mon Nov 16 07:27:37 2009
@@ -17,6 +17,7 @@
 package org.apache.felix.karaf.deployer.features;
 
 import java.io.File;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Arrays;
 import java.util.EnumSet;
@@ -115,22 +116,21 @@
     }
 
     public void bundleChanged(BundleEvent bundleEvent) {
-        try {
             Bundle bundle = bundleEvent.getBundle();
             if (bundleEvent.getType() == BundleEvent.RESOLVED) {
                 Enumeration featuresUrlEnumeration = 
bundle.findEntries("/META-INF/" + FEATURE_PATH + "/", "*.xml", false);
                 while (featuresUrlEnumeration != null && 
featuresUrlEnumeration.hasMoreElements()) {
                     URL url = (URL) featuresUrlEnumeration.nextElement();
-                    featuresService.addRepository(url.toURI());
-                    for (Repository repo : featuresService.listRepositories()) 
{
-                        if (repo.getURI().equals(url.toURI())) {
-                            Set<Feature> features = new 
HashSet<Feature>(Arrays.asList(repo.getFeatures()));
-                            try {
-                                featuresService.installFeatures(features, 
EnumSet.noneOf(FeaturesService.Option.class));
-                            } catch (Exception e) {
-                                LOGGER.error("Unable to install features", e);
+                    try {
+                        featuresService.addRepository(url.toURI());
+                        for (Repository repo : 
featuresService.listRepositories()) {
+                            if (repo.getURI().equals(url.toURI())) {
+                                Set<Feature> features = new 
HashSet<Feature>(Arrays.asList(repo.getFeatures()));
+                                    featuresService.installFeatures(features, 
EnumSet.noneOf(FeaturesService.Option.class));
                             }
                         }
+                    } catch (Exception e) {
+                        LOGGER.error("Unable to install features", e);
                     }
                 }
             } else if (bundleEvent.getType() == BundleEvent.UNINSTALLED) {
@@ -138,22 +138,27 @@
                 while (featuresUrlEnumeration != null && 
featuresUrlEnumeration.hasMoreElements()) {
                     URL url = (URL) featuresUrlEnumeration.nextElement();
                     for (Repository repo : featuresService.listRepositories()) 
{
-                        if (repo.getURI().equals(url.toURI())) {
-                            for (Feature f : repo.getFeatures()) {
-                                try {
-                                    
featuresService.uninstallFeature(f.getName(), f.getVersion());
-                                } catch (Exception e) {
-                                    LOGGER.error("Unable to uninstall feature: 
" + f.getName(), e);
+                        try {
+                            if (repo.getURI().equals(url.toURI())) {
+                                for (Feature f : repo.getFeatures()) {
+                                    try {
+                                        
featuresService.uninstallFeature(f.getName(), f.getVersion());
+                                    } catch (Exception e) {
+                                        LOGGER.error("Unable to uninstall 
feature: " + f.getName(), e);
+                                    }
                                 }
                             }
+                        } catch (Exception e) {
+                            LOGGER.error("Unable to uninstall features: " + 
url, e);
                         }
                     }
-                    featuresService.removeRepository(url.toURI());
+                    try {
+                        featuresService.removeRepository(url.toURI());
+                    } catch (URISyntaxException e) {
+                        LOGGER.error("Unable to remove repository: " + url, e);
+                    }
                 }
             }
-        } catch (Exception e) {
-            LOGGER.error("Unable to install / uninstall feature", e);
-        }
     }
 
     protected Document parse(File artifact) throws Exception {

Modified: 
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/AddUrlCommand.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/AddUrlCommand.java?rev=880637&r1=880636&r2=880637&view=diff
==============================================================================
--- 
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/AddUrlCommand.java
 (original)
+++ 
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/AddUrlCommand.java
 Mon Nov 16 07:27:37 2009
@@ -31,7 +31,11 @@
 
     protected void doExecute(FeaturesService admin) throws Exception {
         for (String url : urls) {
-            admin.addRepository(new URI(url));
+            try {
+                admin.addRepository(new URI(url));
+            } catch (Exception e) {
+                System.out.println("Could not add Feature Repository:\n" + e 
);  
+            }
         }
     }
 }

Modified: 
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/RefreshUrlCommand.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/RefreshUrlCommand.java?rev=880637&r1=880636&r2=880637&view=diff
==============================================================================
--- 
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/RefreshUrlCommand.java
 (original)
+++ 
felix/trunk/karaf/features/command/src/main/java/org/apache/felix/karaf/features/command/RefreshUrlCommand.java
 Mon Nov 16 07:27:37 2009
@@ -39,9 +39,13 @@
             }
         }
         for (String strUri : urls) {
-            URI uri = new URI(strUri);
-            admin.removeRepository(uri);
-            admin.addRepository(uri);
+            try {
+                URI uri = new URI(strUri);
+                admin.removeRepository(uri);
+                admin.addRepository(uri);
+            } catch (Exception e) {
+                System.out.println("Could not refresh Feature Repository:\n" + 
e.getMessage() );
+            }
         }
     }
 }

Modified: 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java?rev=880637&r1=880636&r2=880637&view=diff
==============================================================================
--- 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
 (original)
+++ 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
 Mon Nov 16 07:27:37 2009
@@ -163,16 +163,11 @@
 
     protected RepositoryImpl internalAddRepository(URI uri) throws Exception {
        RepositoryImpl repo = null;
-        try {
-            repo = new RepositoryImpl(uri);
-            repo.load();
-            repositories.put(uri, repo);
-            callListeners(new RepositoryEvent(repo, 
RepositoryEvent.EventType.RepositoryAdded, false));
-            features = null;
-            
-        } catch (Exception e) {
-            LOGGER.warn(e.getMessage());
-        }
+        repo = new RepositoryImpl(uri);
+        repo.load();
+        repositories.put(uri, repo);
+        callListeners(new RepositoryEvent(repo, 
RepositoryEvent.EventType.RepositoryAdded, false));
+        features = null;
         return repo;
         
     }

Modified: 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/RepositoryImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/RepositoryImpl.java?rev=880637&r1=880636&r2=880637&view=diff
==============================================================================
--- 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/RepositoryImpl.java
 (original)
+++ 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/RepositoryImpl.java
 Mon Nov 16 07:27:37 2009
@@ -21,6 +21,7 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URLConnection;
+import java.rmi.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -33,6 +34,8 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -47,6 +50,7 @@
  */
 public class RepositoryImpl implements Repository {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(RepositoryImpl.class);
     private int unnamedRepoId = 0;
     private String name;
     private URI uri;
@@ -106,7 +110,12 @@
                 }
                 if ("repository".equals(node.getNodeName())) {
                     Element e = (Element) nodes.item(i);
-                    repositories.add(new URI(e.getTextContent()));
+                    try {
+                        URI newrepo = new URI(e.getTextContent());
+                        repositories.add(newrepo);
+                    } catch (URISyntaxException ex) {
+                        LOGGER.error("Could not load feature repository: " + 
ex.getMessage() + " in feature repository " + uri);
+                    }
                 } else if ("feature".equals(node.getNodeName())) {
                     Element e = (Element) nodes.item(i);
                     String name = e.getAttribute("name");
@@ -155,10 +164,10 @@
             throw (IOException) new IOException().initCause(e);
         } catch (ParserConfigurationException e) {
             throw (IOException) new IOException().initCause(e);
-        } catch (URISyntaxException e) {
-            throw (IOException) new IOException(e.getMessage() + " : " + 
uri).initCause(e);
         } catch (IllegalArgumentException e) {
             throw (IOException) new IOException(e.getMessage() + " : " + 
uri).initCause(e);
+        } catch (Exception e) {
+            throw (IOException) new IOException(e.getMessage() + " : " + 
uri).initCause(e);
         }
     }
 


Reply via email to