public void bundleChanged()

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