in gshell/gshell-features/src/main/java/org/apache/servicemix/kernel/gshell/features/internal/FeatureDeploymentListener.java [160:187]
public void bundleChanged(BundleEvent bundleEvent) {
try {
Bundle bundle = bundleEvent.getBundle();
if (bundleEvent.getType() == BundleEvent.INSTALLED) {
Enumeration featuresUrlEnumeration = bundle.findEntries("/META-INF/" + FEATURE_PATH + "/", "*.xml", false);
while (featuresUrlEnumeration != null && featuresUrlEnumeration.hasMoreElements()) {
URL url = (URL) featuresUrlEnumeration.nextElement();
RepositoryImpl repo = featuresService.internalAddRepository(url.toURI());
for (Feature f : repo.getFeatures()) {
featuresService.installFeature(f.getName(), f.getVersion());
}
featuresService.internalRemoveRepository(url.toURI());
}
} else if (bundleEvent.getType() == BundleEvent.UNINSTALLED) {
Enumeration featuresUrlEnumeration = bundle.findEntries("/META-INF/" + FEATURE_PATH + "/", "*.xml", false);
while (featuresUrlEnumeration != null && featuresUrlEnumeration.hasMoreElements()) {
URL url = (URL) featuresUrlEnumeration.nextElement();
RepositoryImpl repo = featuresService.internalAddRepository(url.toURI());
for (Feature f : repo.getFeatures()) {
featuresService.uninstallFeature(f.getName(), f.getVersion());
}
featuresService.internalRemoveRepository(url.toURI());
}
}
} catch (Exception e) {
LOGGER.error("Unable to install / uninstall feature", e);
}
}