You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2014/03/21 13:55:16 UTC
[1/3] git commit: [KARAF-2841]
FeaturesService#listInstalledFeatures() should not return conditional
features
Repository: karaf
Updated Branches:
refs/heads/master ebe7b06a6 -> f14efe123
[KARAF-2841] FeaturesService#listInstalledFeatures() should not return conditional features
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/f14efe12
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/f14efe12
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/f14efe12
Branch: refs/heads/master
Commit: f14efe123e3ec18af587f374cb77579d20bfca15
Parents: 7aefb62
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Mar 21 13:54:36 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Mar 21 13:54:57 2014 +0100
----------------------------------------------------------------------
.../apache/karaf/features/FeaturesService.java | 2 +-
.../internal/BootFeaturesInstaller.java | 8 +++---
.../features/internal/FeaturesServiceImpl.java | 29 ++++++++++++++------
.../apache/karaf/itests/KarafTestSupport.java | 4 +--
4 files changed, 27 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/f14efe12/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java b/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
index 9e9b08f..2a1a3fa 100644
--- a/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
+++ b/features/core/src/main/java/org/apache/karaf/features/FeaturesService.java
@@ -77,7 +77,7 @@ public interface FeaturesService {
Feature[] listFeatures() throws Exception;
- Feature[] listInstalledFeatures();
+ Feature[] listInstalledFeatures() throws Exception;
boolean isInstalled(Feature f);
http://git-wip-us.apache.org/repos/asf/karaf/blob/f14efe12/features/core/src/main/java/org/apache/karaf/features/internal/BootFeaturesInstaller.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/BootFeaturesInstaller.java b/features/core/src/main/java/org/apache/karaf/features/internal/BootFeaturesInstaller.java
index 8fed435..f32d2ea 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/BootFeaturesInstaller.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/BootFeaturesInstaller.java
@@ -82,11 +82,11 @@ public class BootFeaturesInstaller {
}
void installBootFeatures() {
- List<Feature> installedFeatures = Arrays.asList(featuresService.listInstalledFeatures());
- List<Set<String>> stagedFeatureNames = parseBootFeatures(boot);
- List<Set<Feature>> stagedFeatures = toFeatureSetList(stagedFeatureNames);
-
try {
+ List<Feature> installedFeatures = Arrays.asList(featuresService.listInstalledFeatures());
+ List<Set<String>> stagedFeatureNames = parseBootFeatures(boot);
+ List<Set<Feature>> stagedFeatures = toFeatureSetList(stagedFeatureNames);
+
for (Set<Feature> features : stagedFeatures) {
features.removeAll(installedFeatures);
featuresService.installFeatures(features, EnumSet.of(Option.NoCleanIfFailure, Option.ContinueBatchOnFailure));
http://git-wip-us.apache.org/repos/asf/karaf/blob/f14efe12/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
index a938f42..17c91ba 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
@@ -137,11 +137,15 @@ public class FeaturesServiceImpl implements FeaturesService {
public void registerListener(FeaturesListener listener) {
listeners.add(listener);
- for (Repository repository : listRepositories()) {
- listener.repositoryEvent(new RepositoryEvent(repository, RepositoryEvent.EventType.RepositoryAdded, true));
- }
- for (Feature feature : listInstalledFeatures()) {
- listener.featureEvent(new FeatureEvent(feature, FeatureEvent.EventType.FeatureInstalled, true));
+ try {
+ for (Repository repository : listRepositories()) {
+ listener.repositoryEvent(new RepositoryEvent(repository, RepositoryEvent.EventType.RepositoryAdded, true));
+ }
+ for (Feature feature : listInstalledFeatures()) {
+ listener.featureEvent(new FeatureEvent(feature, FeatureEvent.EventType.FeatureInstalled, true));
+ }
+ } catch (Exception e) {
+ LOGGER.error("Error notifying listener about the current state", e);
}
}
@@ -747,7 +751,7 @@ public class FeaturesServiceImpl implements FeaturesService {
}
public Feature[] listFeatures() throws Exception {
- Collection<Feature> features = new ArrayList<Feature>();
+ Set<Feature> features = new HashSet<Feature>();
for (Map<String, Feature> featureWithDifferentVersion : getFeatures().values()) {
for (Feature f : featureWithDifferentVersion.values()) {
features.add(f);
@@ -756,9 +760,16 @@ public class FeaturesServiceImpl implements FeaturesService {
return features.toArray(new Feature[features.size()]);
}
- public Feature[] listInstalledFeatures() {
- Set<Feature> result = installed.keySet();
- return result.toArray(new Feature[result.size()]);
+ public Feature[] listInstalledFeatures() throws Exception {
+ Set<Feature> features = new HashSet<Feature>();
+ for (Map<String, Feature> featureWithDifferentVersion : getFeatures().values()) {
+ for (Feature f : featureWithDifferentVersion.values()) {
+ if (installed.containsKey(f)) {
+ features.add(f);
+ }
+ }
+ }
+ return features.toArray(new Feature[features.size()]);
}
public boolean isInstalled(Feature f) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/f14efe12/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java b/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
index 4507d5f..7fa2146 100644
--- a/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
+++ b/itests/src/test/java/org/apache/karaf/itests/KarafTestSupport.java
@@ -342,7 +342,7 @@ public class KarafTestSupport {
return connector;
}
- public void assertFeatureInstalled(String featureName) {
+ public void assertFeatureInstalled(String featureName) throws Exception {
Feature[] features = featureService.listInstalledFeatures();
for (Feature feature : features) {
if (featureName.equals(feature.getName())) {
@@ -352,7 +352,7 @@ public class KarafTestSupport {
Assert.fail("Feature " + featureName + " should be installed but is not");
}
- public void assertFeaturesInstalled(String ... expectedFeatures) {
+ public void assertFeaturesInstalled(String ... expectedFeatures) throws Exception {
Set<String> expectedFeaturesSet = new HashSet<String>(Arrays.asList(expectedFeatures));
Feature[] features = featureService.listInstalledFeatures();
Set<String> installedFeatures = new HashSet<String>();
[2/3] git commit: [KARAF-2839] Conditional features are not verified
correctly after installing / uninstalling a feature
Posted by gn...@apache.org.
[KARAF-2839] Conditional features are not verified correctly after installing / uninstalling a feature
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/7aefb628
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/7aefb628
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/7aefb628
Branch: refs/heads/master
Commit: 7aefb628090b98f913f225a32e3b4985eefffe22
Parents: 5ad2bf1
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Mar 21 13:53:46 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Mar 21 13:54:57 2014 +0100
----------------------------------------------------------------------
.../features/internal/FeaturesServiceImpl.java | 69 ++++++++++++++------
.../karaf/itests/ConditionalFeaturesTest.java | 4 ++
2 files changed, 52 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/7aefb628/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
index be37db6..a938f42 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
@@ -401,20 +401,14 @@ public class FeaturesServiceImpl implements FeaturesService {
try {
doInstallFeature(s, f, verbose);
doInstallFeatureConditionals(s, f, verbose);
- state.bundleInfos.putAll(s.bundleInfos);
- state.bundles.addAll(s.bundles);
- state.features.putAll(s.features);
- state.installed.addAll(s.installed);
- state.bundleStartLevels.putAll(s.bundleStartLevels);
-
//Check if current feature satisfies the conditionals of existing features
for (Feature installedFeature : listInstalledFeatures()) {
- for (Conditional conditional : installedFeature.getConditional()) {
- if (dependenciesSatisfied(conditional.getCondition(), state)) {
- doInstallFeatureConditionals(s, installedFeature, verbose);
- }
- }
+ doInstallFeatureConditionals(s, installedFeature, verbose);
+ }
+ for (Feature installedFeature : state.features.keySet()) {
+ doInstallFeatureConditionals(s, installedFeature, verbose);
}
+
state.bundleInfos.putAll(s.bundleInfos);
state.bundles.addAll(s.bundles);
state.features.putAll(s.features);
@@ -568,16 +562,19 @@ public class FeaturesServiceImpl implements FeaturesService {
protected void doInstallFeatureConditionals(InstallationState state, Feature feature, boolean verbose) throws Exception {
//Check conditions of the current feature.
- for (Conditional conditional : feature.getConditional()) {
+ feature = getFeature(feature.getName(), feature.getVersion());
+ if (feature != null) {
+ for (Conditional conditional : feature.getConditional()) {
- if (dependenciesSatisfied(conditional.getCondition(), state)) {
- InstallationState s = new InstallationState();
- doInstallFeature(s, conditional.asFeature(feature.getName(), feature.getVersion()), verbose);
- state.bundleInfos.putAll(s.bundleInfos);
- state.bundles.addAll(s.bundles);
- state.features.putAll(s.features);
- state.installed.addAll(s.installed);
- state.bundleStartLevels.putAll(s.bundleStartLevels);
+ if (dependenciesSatisfied(conditional.getCondition(), state)) {
+ InstallationState s = new InstallationState();
+ doInstallFeature(s, conditional.asFeature(feature.getName(), feature.getVersion()), verbose);
+ state.bundleInfos.putAll(s.bundleInfos);
+ state.bundles.addAll(s.bundles);
+ state.features.putAll(s.features);
+ state.installed.addAll(s.installed);
+ state.bundleStartLevels.putAll(s.bundleStartLevels);
+ }
}
}
}
@@ -675,8 +672,10 @@ public class FeaturesServiceImpl implements FeaturesService {
}
boolean verbose = options != null && options.contains(Option.Verbose);
boolean refresh = options == null || !options.contains(Option.NoAutoRefreshBundles);
+ String msg = "Uninstalling feature " + feature.getName() + " " + feature.getVersion();
+ LOGGER.info(msg);
if (verbose) {
- System.out.println("Uninstalling feature " + feature.getName() + " " + feature.getVersion());
+ System.out.println(msg);
}
// Grab all the bundles installed by this feature
// and remove all those who will still be in use.
@@ -687,11 +686,39 @@ public class FeaturesServiceImpl implements FeaturesService {
for (Conditional conditional : feature.getConditional()) {
Feature conditionalFeature = conditional.asFeature(feature.getName(),feature.getVersion());
if (installed.containsKey(conditionalFeature)) {
+ msg = "Uninstalling feature " + conditionalFeature.getName() + " " + conditionalFeature.getVersion();
+ LOGGER.info(msg);
+ if (verbose) {
+ System.out.println(msg);
+ }
bundles.addAll(installed.remove(conditionalFeature));
} else {
LOGGER.info("Conditional feature {}, hasn't been installed!");
}
}
+ for (Feature f : new HashSet<Feature>(installed.keySet())) {
+ f = getFeature(f.getName(), f.getVersion());
+ if (f != null) {
+ for (Conditional conditional : f.getConditional()) {
+ boolean satisfied = true;
+ for (Dependency dep : conditional.getCondition()) {
+ Feature df = getFeatureForDependency(dep);
+ satisfied &= installed.containsKey(df);
+ }
+ if (!satisfied) {
+ Feature conditionalFeature = conditional.asFeature(f.getName(), f.getVersion());
+ if (installed.containsKey(conditionalFeature)) {
+ msg = "Uninstalling feature " + conditionalFeature.getName() + " " + conditionalFeature.getVersion();
+ LOGGER.info(msg);
+ if (verbose) {
+ System.out.println(msg);
+ }
+ bundles.addAll(installed.remove(conditionalFeature));
+ }
+ }
+ }
+ }
+ }
for (Set<Long> b : installed.values()) {
bundles.removeAll(b);
http://git-wip-us.apache.org/repos/asf/karaf/blob/7aefb628/itests/src/test/java/org/apache/karaf/itests/ConditionalFeaturesTest.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/ConditionalFeaturesTest.java b/itests/src/test/java/org/apache/karaf/itests/ConditionalFeaturesTest.java
index b747518..46908d1 100644
--- a/itests/src/test/java/org/apache/karaf/itests/ConditionalFeaturesTest.java
+++ b/itests/src/test/java/org/apache/karaf/itests/ConditionalFeaturesTest.java
@@ -89,5 +89,9 @@ public class ConditionalFeaturesTest extends KarafTestSupport {
//ignore as the eventadmin activator might throw an error.
}
assertBundleInstalled("org.apache.felix.webconsole.plugins.event");
+
+ //Remove eventadmin
+ featureService.uninstallFeature("eventadmin");
+ assertBundleNotInstalled("org.apache.felix.webconsole.plugins.event");
}
}
[3/3] git commit: Speed up build by disabling OBR update of
~/.m2/repository/repository.xml
Posted by gn...@apache.org.
Speed up build by disabling OBR update of ~/.m2/repository/repository.xml
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/5ad2bf11
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/5ad2bf11
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/5ad2bf11
Branch: refs/heads/master
Commit: 5ad2bf11328c6ffabb67e954ac4ffe97e66fb951
Parents: ebe7b06
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Mar 21 11:02:41 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Mar 21 13:54:57 2014 +0100
----------------------------------------------------------------------
pom.xml | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/5ad2bf11/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 072281a..132768b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -258,6 +258,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<appendedResourcesDirectory>${basedir}/etc/appended-resources</appendedResourcesDirectory>
<bnd.version.policy>[$(version;==;$(@)),$(version;+;$(@)))</bnd.version.policy>
+ <!-- Disable OBR repository update by default -->
+ <obrRepository>NONE</obrRepository>
</properties>
<repositories>