You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jg...@apache.org on 2016/08/01 19:08:39 UTC
karaf git commit: KARAF-4642: featuresBoot order is not honored
Repository: karaf
Updated Branches:
refs/heads/karaf-3.0.x 75de07355 -> f72a527c4
KARAF-4642: featuresBoot order is not honored
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/f72a527c
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/f72a527c
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/f72a527c
Branch: refs/heads/karaf-3.0.x
Commit: f72a527c48ae39b12f6a6b1821846865da3c28e2
Parents: 75de073
Author: James Carman <ja...@contractor.cengage.com>
Authored: Fri Jul 29 14:40:57 2016 -0400
Committer: James Carman <ja...@contractor.cengage.com>
Committed: Fri Jul 29 14:40:57 2016 -0400
----------------------------------------------------------------------
.../internal/BootFeaturesInstaller.java | 5 ++-
.../internal/BootFeaturesInstallerTest.java | 45 ++++++++++++++------
2 files changed, 36 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/f72a527c/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 caaa0e2..729710a 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
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Hashtable;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
@@ -99,7 +100,7 @@ public class BootFeaturesInstaller {
private List<Set<Feature>> toFeatureSetList(List<Set<String>> stagedFeatures) {
ArrayList<Set<Feature>> result = new ArrayList<Set<Feature>>();
for (Set<String> features : stagedFeatures) {
- HashSet<Feature> featureSet = new HashSet<Feature>();
+ HashSet<Feature> featureSet = new LinkedHashSet<Feature>();
for (String featureName : features) {
try {
Feature feature = getFeature(featureName);
@@ -152,7 +153,7 @@ public class BootFeaturesInstaller {
}
private Set<String> parseFeatureList(String group) {
- HashSet<String> features = new HashSet<String>();
+ HashSet<String> features = new LinkedHashSet<String>();
for (String feature : Arrays.asList(group.trim().split("\\s*,\\s*"))) {
if (feature.length() > 0) {
features.add(feature);
http://git-wip-us.apache.org/repos/asf/karaf/blob/f72a527c/features/core/src/test/java/org/apache/karaf/features/internal/BootFeaturesInstallerTest.java
----------------------------------------------------------------------
diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/BootFeaturesInstallerTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/BootFeaturesInstallerTest.java
index 6da8c11..7b6b23d 100644
--- a/features/core/src/test/java/org/apache/karaf/features/internal/BootFeaturesInstallerTest.java
+++ b/features/core/src/test/java/org/apache/karaf/features/internal/BootFeaturesInstallerTest.java
@@ -16,29 +16,46 @@
*/
package org.apache.karaf.features.internal;
-import static java.util.Arrays.asList;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-
+import java.util.Arrays;
import java.util.EnumSet;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
import org.apache.karaf.features.Feature;
import org.apache.karaf.features.FeaturesService.Option;
+import org.easymock.Capture;
import org.easymock.EasyMock;
-import org.junit.Assert;
import org.junit.Test;
+import static java.util.Arrays.asList;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertEquals;
+
public class BootFeaturesInstallerTest extends TestBase {
@Test
@SuppressWarnings("unchecked")
public void testParser() {
BootFeaturesInstaller installer = new BootFeaturesInstaller(null, null, "", false);
- Assert.assertEquals(asList(setOf("test1", "test2"), setOf("test3")), installer.parseBootFeatures(" ( test1 , test2 ) , test3 "));
- Assert.assertEquals(asList(setOf("test1", "test2", "test3")), installer.parseBootFeatures(" test1 , test2, test3"));
- Assert.assertEquals(asList(setOf("test1"), setOf("test2"), setOf("test3")), installer.parseBootFeatures("(test1), (test2), test3"));
+
+ assertEquals(asList(orderedSet("test1", "test2"), orderedSet("test3")), installer.parseBootFeatures(" ( test1 , test2 ) , test3 "));
+ assertEquals(asList(orderedSet("test1", "test2", "test3")), installer.parseBootFeatures(" test1 , test2, test3"));
+ assertEquals(asList(orderedSet("test1"), orderedSet("test2"), orderedSet("test3")), installer.parseBootFeatures("(test1), (test2), test3"));
}
-
+
+ private <T> Set<T> orderedSet(T... elements) {
+ Set<T> set = new LinkedHashSet<T>();
+ for (T element : elements) {
+ set.add(element);
+ }
+ return set;
+ }
+
@Test
public void testDefaultBootFeatures() throws Exception {
FeaturesServiceImpl impl = EasyMock.createMock(FeaturesServiceImpl.class);
@@ -49,14 +66,18 @@ public class BootFeaturesInstallerTest extends TestBase {
expect(impl.getFeature("config", "0.0.0")).andReturn(configFeature);
expect(impl.getFeature("standard", "0.0.0")).andReturn(standardFeature);
expect(impl.getFeature("region", "0.0.0")).andReturn(regionFeature);
-
- impl.installFeatures(setOf(configFeature, standardFeature, regionFeature), EnumSet.of(Option.NoAutoRefreshBundles, Option.NoCleanIfFailure, Option.ContinueBatchOnFailure));
+ Capture<Set<Feature>> featuresCapture = EasyMock.newCapture();
+ impl.installFeatures(capture(featuresCapture), eq(EnumSet.of(Option.NoAutoRefreshBundles, Option.NoCleanIfFailure, Option.ContinueBatchOnFailure)));
EasyMock.expectLastCall();
replay(impl);
BootFeaturesInstaller bootFeatures = new BootFeaturesInstaller(null, impl, "config,standard,region", false);
bootFeatures.installBootFeatures();
- EasyMock.verify(impl);
+ EasyMock.verify(impl);
+ List<Feature> installedFeatures = new LinkedList<Feature>(featuresCapture.getValue());
+ assertEquals(3, installedFeatures.size());
+ assertEquals(Arrays.asList(configFeature, standardFeature, regionFeature), installedFeatures);
+
}
/**