Author: gnodet Date: Wed Oct 14 11:44:55 2009 New Revision: 825092 URL: http://svn.apache.org/viewvc?rev=825092&view=rev Log: FELIX-1689: improve the features deployer to leverage batch installation too
Modified: felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java felix/trunk/karaf/deployer/features/src/main/resources/OSGI-INF/blueprint/features-deployer.xml felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/FeaturesService.java Modified: felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java URL: http://svn.apache.org/viewvc/felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java?rev=825092&r1=825091&r2=825092&view=diff ============================================================================== --- felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java (original) +++ felix/trunk/karaf/deployer/features/src/main/java/org/apache/felix/karaf/deployer/features/FeatureDeploymentListener.java Wed Oct 14 11:44:55 2009 @@ -25,7 +25,12 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URL; +import java.util.Arrays; +import java.util.Collections; +import java.util.EnumSet; import java.util.Enumeration; +import java.util.HashSet; +import java.util.Set; import java.util.jar.JarFile; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; @@ -168,12 +173,11 @@ featuresService.addRepository(url.toURI()); for (Repository repo : featuresService.listRepositories()) { if (repo.getURI().equals(url.toURI())) { - for (Feature f : repo.getFeatures()) { - try { - featuresService.installFeature(f.getName(), f.getVersion()); - } catch (Exception e) { - LOGGER.error("Unable to install feature: " + f.getName(), e); - } + Set<Feature> features = new HashSet<Feature>(Arrays.asList(repo.getFeatures())); + try { + featuresService.installFeatures(features, EnumSet.noneOf(FeaturesService.Option.class)); + } catch (Exception e) { + LOGGER.error("Unable to install features", e); } } } Modified: felix/trunk/karaf/deployer/features/src/main/resources/OSGI-INF/blueprint/features-deployer.xml URL: http://svn.apache.org/viewvc/felix/trunk/karaf/deployer/features/src/main/resources/OSGI-INF/blueprint/features-deployer.xml?rev=825092&r1=825091&r2=825092&view=diff ============================================================================== --- felix/trunk/karaf/deployer/features/src/main/resources/OSGI-INF/blueprint/features-deployer.xml (original) +++ felix/trunk/karaf/deployer/features/src/main/resources/OSGI-INF/blueprint/features-deployer.xml Wed Oct 14 11:44:55 2009 @@ -18,7 +18,6 @@ --> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" - xmlns:cm="http://geronimo.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" default-activation="lazy"> <service ref="featureDeploymentListener" auto-export="interfaces"/> Modified: felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/FeaturesService.java URL: http://svn.apache.org/viewvc/felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/FeaturesService.java?rev=825092&r1=825091&r2=825092&view=diff ============================================================================== --- felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/FeaturesService.java (original) +++ felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/FeaturesService.java Wed Oct 14 11:44:55 2009 @@ -18,6 +18,7 @@ import java.net.URI; import java.util.EnumSet; +import java.util.Set; /** * The service managing features repositories. @@ -42,6 +43,10 @@ void installFeature(String name, String version, EnumSet<Option> options) throws Exception; + void installFeature(Feature f, EnumSet<Option> options) throws Exception; + + void installFeatures(Set<Feature> features, EnumSet<Option> options) throws Exception; + void uninstallFeature(String name) throws Exception; void uninstallFeature(String name, String version) throws Exception;