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/04/11 19:20:27 UTC
[05/33] git commit: [KARAF-2888] Call listeners when features are
installed or uninstalled
[KARAF-2888] Call listeners when features are installed or uninstalled
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/6a19214e
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/6a19214e
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/6a19214e
Branch: refs/heads/master
Commit: 6a19214e566cec14c821aac849c8718a08eadaac
Parents: 4b6b7af
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Apr 10 16:27:21 2014 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Apr 11 19:20:02 2014 +0200
----------------------------------------------------------------------
.../internal/service/FeaturesServiceImpl.java | 28 +++++++++-----------
1 file changed, 12 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/6a19214e/features/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git a/features/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java b/features/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
index 6c16650..e6dbc32 100644
--- a/features/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
+++ b/features/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
@@ -799,7 +799,10 @@ public class FeaturesServiceImpl implements FeaturesService {
// Install conditionals
List<String> installedFeatureIds = getFeatureIds(allResources);
- List<Feature> installedFeatures = getFeatures(repositories, installedFeatureIds);
+ List<String> newFeatures = new ArrayList<String>(installedFeatureIds);
+ newFeatures.removeAll(installed);
+ List<String> delFeatures = new ArrayList<String>(installed);
+ delFeatures.removeAll(installedFeatureIds);
//
// Compute list of installable resources (those with uris)
@@ -955,25 +958,12 @@ public class FeaturesServiceImpl implements FeaturesService {
//
// Update and save state
//
- List<String> newFeatures = new ArrayList<String>();
synchronized (lock) {
- List<String> allFeatures = new ArrayList<String>();
- for (Resource resource : allResources) {
- String name = FeatureNamespace.getName(resource);
- if (name != null) {
- Version version = FeatureNamespace.getVersion(resource);
- String id = version != null ? name + "/" + version : name;
- allFeatures.add(id);
- if (!state.installedFeatures.contains(id)) {
- newFeatures.add(id);
- }
- }
- }
state.bundleChecksums.putAll(deployment.newCheckums);
state.features.clear();
state.features.addAll(features);
state.installedFeatures.clear();
- state.installedFeatures.addAll(allFeatures);
+ state.installedFeatures.addAll(installedFeatureIds);
state.managedBundles.clear();
state.managedBundles.addAll(managed);
saveState();
@@ -1061,7 +1051,13 @@ public class FeaturesServiceImpl implements FeaturesService {
}
}
- // TODO: call listeners for features added and removed
+ // Call listeners
+ for (Feature feature : getFeatures(repositories, delFeatures)) {
+ callListeners(new FeatureEvent(feature, FeatureEvent.EventType.FeatureUninstalled, false));
+ }
+ for (Feature feature : getFeatures(repositories, newFeatures)) {
+ callListeners(new FeatureEvent(feature, FeatureEvent.EventType.FeatureInstalled, false));
+ }
print("Done.", verbose);
}