You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2015/04/27 08:03:41 UTC
karaf git commit: [KARAF-3705]put all bundles before FeaturesService
available as startup feature
Repository: karaf
Updated Branches:
refs/heads/karaf-2.x ef3e11136 -> 756b5e0e1
[KARAF-3705]put all bundles before FeaturesService available as startup feature
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/756b5e0e
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/756b5e0e
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/756b5e0e
Branch: refs/heads/karaf-2.x
Commit: 756b5e0e189974ce45602dc6b406f074a0069d06
Parents: ef3e111
Author: Freeman Fang <fr...@gmail.com>
Authored: Mon Apr 27 14:03:23 2015 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Mon Apr 27 14:03:23 2015 +0800
----------------------------------------------------------------------
.../karaf/features/internal/FeaturesServiceImpl.java | 12 ++++++++++++
.../org/apache/karaf/features/FeaturesServiceTest.java | 10 +++++++---
.../features/internal/FeaturesServiceImplTest.java | 1 +
3 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/756b5e0e/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 45f3e4c..d9eb45e 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
@@ -138,6 +138,18 @@ public class FeaturesServiceImpl implements FeaturesService {
public void setBundleContext(BundleContext bundleContext) {
this.bundleContext = bundleContext;
+ //put all bundles before FeaturesService available as startup feature
+ //so those bundles are hold by this feature and won't be uninstalled by
+ //any other feature easily
+ Set<Long> startupBundleSet = new HashSet<Long>();
+ if (bundleContext != null && bundleContext.getBundles() != null
+ && installed.size() == 0) {
+ for(Bundle startupBundle : bundleContext.getBundles()) {
+ startupBundleSet.add(startupBundle.getBundleId());
+ }
+ installed.put(new FeatureImpl("startup"), startupBundleSet);
+ }
+
}
public ConfigurationAdmin getConfigAdmin() {
http://git-wip-us.apache.org/repos/asf/karaf/blob/756b5e0e/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java b/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
index 9ccc4db..5f6775c 100644
--- a/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
@@ -87,7 +87,7 @@ public class FeaturesServiceTest extends TestCase {
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
Bundle installedBundle = EasyMock.createMock(Bundle.class);
-
+ expect(bundleContext.getBundles()).andReturn(null);
// required since the sorted set uses it
expect(installedBundle.compareTo(EasyMock.<Bundle>anyObject())).andReturn(0).anyTimes();
@@ -165,7 +165,7 @@ public class FeaturesServiceTest extends TestCase {
final Bundle sysBundle = EasyMock.createMock(Bundle.class);
FrameworkWiring frameworkWiring = EasyMock.createMock(FrameworkWiring.class);
Bundle installedBundle = EasyMock.createMock(Bundle.class);
-
+ expect(bundleContext.getBundles()).andReturn(null);
expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
replay(bundleContext, installedBundle);
@@ -266,7 +266,7 @@ public class FeaturesServiceTest extends TestCase {
// loads the state
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
-
+ expect(bundleContext.getBundles()).andReturn(null);
expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
replay(bundleContext);
@@ -780,6 +780,7 @@ public class FeaturesServiceTest extends TestCase {
URI uri = tmp.toURI();
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+ expect(bundleContext.getBundles()).andReturn(null);
Bundle installedBundle1 = EasyMock.createMock(Bundle.class);
Bundle installedBundle2 = EasyMock.createMock(Bundle.class);
@@ -841,6 +842,7 @@ public class FeaturesServiceTest extends TestCase {
URI uri = tmp.toURI();
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+ expect(bundleContext.getBundles()).andReturn(null);
Bundle installedBundle1 = EasyMock.createMock(Bundle.class);
Bundle installedBundle2 = EasyMock.createMock(Bundle.class);
@@ -907,6 +909,7 @@ public class FeaturesServiceTest extends TestCase {
// loads the state
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+ expect(bundleContext.getBundles()).andReturn(null);
final Bundle sysBundle = EasyMock.createMock(Bundle.class);
FrameworkWiring frameworkWiring = EasyMock.createMock(FrameworkWiring.class);
Bundle installedBundle1 = EasyMock.createMock(Bundle.class);
@@ -1017,6 +1020,7 @@ public class FeaturesServiceTest extends TestCase {
URI uri = tmp.toURI();
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+ expect(bundleContext.getBundles()).andReturn(null);
expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
replay(bundleContext);
http://git-wip-us.apache.org/repos/asf/karaf/blob/756b5e0e/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java
index b6e5304..1bc780b 100644
--- a/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/internal/FeaturesServiceImplTest.java
@@ -114,6 +114,7 @@ public class FeaturesServiceImplTest extends TestCase {
public void testStartDoesNotFailWithOneInvalidUri() {
BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+ expect(bundleContext.getBundles()).andReturn(null);
expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
bundleContext.addFrameworkListener(EasyMock.<FrameworkListener>anyObject());
bundleContext.removeFrameworkListener(EasyMock.<FrameworkListener>anyObject());