You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cc...@apache.org on 2009/12/11 19:21:39 UTC

svn commit: r889745 - in /felix/trunk/karaf/features/core/src: main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java test/java/org/apache/felix/karaf/features/internal/FeaturesServiceImplTest.java

Author: ccustine
Date: Fri Dec 11 18:21:38 2009
New Revision: 889745

URL: http://svn.apache.org/viewvc?rev=889745&view=rev
Log:
FELIX-1768 - should catch exception for FeaturesServiceImpl.internalAddRepository per uri
- Fix for FELIX-1869 broke this again.

Modified:
    felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
    felix/trunk/karaf/features/core/src/test/java/org/apache/felix/karaf/features/internal/FeaturesServiceImplTest.java

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=889745&r1=889744&r2=889745&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 Fri Dec 11 18:21:38 2009
@@ -62,6 +62,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.lang.String.format;
+
 /**
  * The Features service implementation.
  * Adding a repository url will load the features contained in this repository and
@@ -630,7 +632,11 @@
         if (!loadState()) {
             if (uris != null) {
                 for (URI uri : uris) {
-                    internalAddRepository(uri);
+                    try {
+                        internalAddRepository(uri);
+                    } catch (Exception e) {
+                        LOGGER.warn(format("Unable to add features repository %s at startup", uri), e);    
+                    }
                 }
             }
             saveState();

Modified: felix/trunk/karaf/features/core/src/test/java/org/apache/felix/karaf/features/internal/FeaturesServiceImplTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/karaf/features/core/src/test/java/org/apache/felix/karaf/features/internal/FeaturesServiceImplTest.java?rev=889745&r1=889744&r2=889745&view=diff
==============================================================================
--- felix/trunk/karaf/features/core/src/test/java/org/apache/felix/karaf/features/internal/FeaturesServiceImplTest.java (original)
+++ felix/trunk/karaf/features/core/src/test/java/org/apache/felix/karaf/features/internal/FeaturesServiceImplTest.java Fri Dec 11 18:21:38 2009
@@ -21,6 +21,14 @@
 
 import junit.framework.TestCase;
 import org.apache.felix.karaf.features.Feature;
+import org.easymock.EasyMock;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+import org.osgi.service.prefs.PreferencesService;
+
+import static org.easymock.EasyMock.*;
 
 /**
  * Test cases for {@link FeaturesServiceImpl}
@@ -85,4 +93,25 @@
         assertSame("2.0.0", impl.getFeature("transaction", FeatureImpl.DEFAULT_VERSION).getVersion());
     }
 
+    public void testStartDoesNotFailWithOneInvalidUri() throws BackingStoreException {
+        PreferencesService preferencesService = createNiceMock(PreferencesService.class);
+        Preferences prefs = createNiceMock(Preferences.class);
+        Preferences emptyPrefs = createNiceMock(Preferences.class);
+        expect(preferencesService.getUserPreferences("FeaturesServiceState")).andStubReturn(prefs);
+        replay(preferencesService);
+
+        expect(prefs.node("repositories")).andReturn(emptyPrefs);
+        expect(prefs.node("features")).andReturn(emptyPrefs);
+        replay(prefs);
+
+        FeaturesServiceImpl service = new FeaturesServiceImpl();
+        service.setPreferences(preferencesService);
+
+        try {
+            service.setUrls("mvn:inexistent/features/1.0/xml/features");
+            service.start();
+        } catch (Exception e) {
+            fail(String.format("Service should not throw start-up exception but log the error instead: %s", e));
+        }
+    }
 }