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));
+ }
+ }
}