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 2010/01/29 20:25:21 UTC
svn commit: r904602 -
/felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
Author: ccustine
Date: Fri Jan 29 19:25:20 2010
New Revision: 904602
URL: http://svn.apache.org/viewvc?rev=904602&view=rev
Log:
FELIX-2001 - Add more info to log and console when feature bundles fail to resolve
Modified:
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.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=904602&r1=904601&r2=904602&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 Jan 29 19:25:20 2010
@@ -61,6 +61,7 @@
import org.osgi.service.startlevel.StartLevel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.slf4j.helpers.MessageFormatter;
import static java.lang.String.format;
@@ -289,7 +290,17 @@
if (state.installed.contains(b)
|| (b.getState() != Bundle.STARTING && b.getState() != Bundle.ACTIVE
&& getStartLevel().isBundlePersistentlyStarted(b))) {
- b.start();
+ try {
+ b.start();
+ } catch (BundleException be) {
+ String[] msgdata = new String[]{
+ b.getLocation(),
+ getFeaturesContainingBundleList(b),
+ be.getMessage()
+ };
+ String msg = MessageFormatter.arrayFormat("Could not start bundle {} in feature(s) {}: {}", msgdata);
+ throw new Exception(msg, be);
+ }
}
}
}
@@ -883,4 +894,29 @@
}
}
+ public Set<Feature> getFeaturesContainingBundle (Bundle bundle) {
+ Set<Feature> features = new HashSet<Feature>();
+ for (Map<String, Feature> featureMap : this.features.values()) {
+ for (Feature f : featureMap.values()) {
+ if (f.getBundles().contains(bundle.getLocation())) {
+ features.add(f);
+ }
+ }
+ }
+ return features;
+ }
+
+ private String getFeaturesContainingBundleList(Bundle bundle) {
+ Set<Feature> features = getFeaturesContainingBundle(bundle);
+ StringBuilder buffer = new StringBuilder();
+ Iterator<Feature> iter = features.iterator();
+ while (iter.hasNext()) {
+ Feature feature= iter.next();
+ buffer.append(feature.getId());
+ if (iter.hasNext()) {
+ buffer.append(", ");
+ }
+ }
+ return buffer.toString();
+ }
}