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);
+
     }
 
     /**