You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/10/20 12:00:50 UTC

svn commit: r1709560 - in /sling/trunk/tooling/support/provisioning-model/src: main/java/org/apache/sling/provisioning/model/ main/java/org/apache/sling/provisioning/model/io/ test/java/org/apache/sling/provisioning/model/ test/resources/ test/resource...

Author: cziegeler
Date: Tue Oct 20 10:00:50 2015
New Revision: 1709560

URL: http://svn.apache.org/viewvc?rev=1709560&view=rev
Log:
SLING-5148 : Support OSGi Subsystems in the Sling Provisioning model. Apply patch from David Bosschaert

Added:
    sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java   (with props)
Modified:
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Feature.java
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelProcessor.java
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelReader.java
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelWriter.java
    sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java
    sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelProcessorTest.java
    sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
    sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/U.java
    sling/trunk/tooling/support/provisioning-model/src/test/resources/example.txt
    sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/artifact-merge.txt

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Feature.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Feature.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Feature.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/Feature.java Tue Oct 20 10:00:50 2015
@@ -32,9 +32,40 @@ public class Feature
     extends Commentable
     implements Comparable<Feature> {
 
+    public enum Type {
+        PLAIN("plain"),
+        SUBSYSTEM_FEATURE("osgi.subsystem.feature"),
+        SUBSYSTEM_APPLICATION("osgi.subsystem.application"),
+        SUBSYSTEM_COMPOSITE("osgi.subsystem.composite");
+
+        private final String textRepresentation;
+
+        private Type(final String textRep) {
+            textRepresentation = textRep;
+        }
+
+        public String getTextRepresentation() {
+            return textRepresentation;
+        }
+
+        public static Type fromTextRepresentation(final String textRep) {
+            if (textRep == null)
+                return PLAIN;
+
+            for (final Type t : values()) {
+                if (t.getTextRepresentation().equals(textRep))
+                    return t;
+            }
+            return null;
+        }
+    }
+
     /** All run modes. */
     private final List<RunMode> runModes = new ArrayList<RunMode>();
 
+    /** The type of feature */
+    private volatile Type type = Type.PLAIN;
+
     /** Variables. */
     private final KeyValueMap<String> variables = new KeyValueMap<String>();
 
@@ -113,6 +144,14 @@ public class Feature
         return result;
     }
 
+    public Type getType() {
+        return type;
+    }
+
+    public void setType(Type t) {
+        type = t;
+    }
+
     @Override
     public int compareTo(final Feature o) {
         if ( this.name == null ) {
@@ -131,8 +170,8 @@ public class Feature
     public String toString() {
         return "Feature [runModes=" + runModes + ", variables=" + variables
                 + ", name=" + name
+                + ( type != Type.PLAIN ? ", type=" + type : "" )
                 + ( this.getLocation() != null ? ", location=" + this.getLocation() : "")
                 + "]";
     }
-
 }

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelProcessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelProcessor.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelProcessor.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelProcessor.java Tue Oct 20 10:00:50 2015
@@ -39,6 +39,7 @@ class ModelProcessor {
 
         for(final Feature feature : model.getFeatures()) {
             final Feature newFeature = result.getOrCreateFeature(feature.getName());
+            newFeature.setType(feature.getType());
             newFeature.setComment(feature.getComment());
             newFeature.setLocation(feature.getLocation());
 

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java Tue Oct 20 10:00:50 2015
@@ -51,6 +51,7 @@ public abstract class ModelUtility {
         // features
         for(final Feature feature : additional.getFeatures()) {
             final Feature baseFeature = base.getOrCreateFeature(feature.getName());
+            baseFeature.setType(feature.getType());
 
             // variables
             baseFeature.getVariables().putAll(feature.getVariables());

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelReader.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelReader.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelReader.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelReader.java Tue Oct 20 10:00:50 2015
@@ -39,7 +39,7 @@ public class ModelReader {
 
     private enum CATEGORY {
         NONE(null, null),
-        FEATURE("feature", new String[] {"name"}),
+        FEATURE("feature", new String[] {"name", "type"}),
         VARIABLES("variables", null),
         ARTIFACTS("artifacts", new String[] {"runModes", "startLevel"}),
         SETTINGS("settings", new String[] {"runModes"}),
@@ -174,6 +174,7 @@ public class ModelReader {
                                        throw new IOException(exceptionPrefix + "Duplicate feature in line " + this.lineNumberReader.getLineNumber() + ": " + line);
                                    }
                                    this.feature = model.getOrCreateFeature(name);
+                                   this.feature.setType(Feature.Type.fromTextRepresentation(parameters.get("type")));
                                    this.init(this.feature);
                                    this.runMode = null;
                                    this.artifactGroup = null;

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelWriter.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelWriter.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelWriter.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/io/ModelWriter.java Tue Oct 20 10:00:50 2015
@@ -87,6 +87,10 @@ public class ModelWriter {
             writeComment(pw, feature);
             pw.print("[feature name=");
             pw.print(feature.getName());
+            if (feature.getType() != Feature.Type.PLAIN) {
+                pw.print(" type=");
+                pw.print(feature.getType().getTextRepresentation());
+            }
             pw.println("]");
             pw.println();
 

Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/package-info.java Tue Oct 20 10:00:50 2015
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@Version("1.3.0")
+@Version("1.4.0")
 package org.apache.sling.provisioning.model;
 
 import aQute.bnd.annotation.Version;

Added: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java?rev=1709560&view=auto
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java (added)
+++ sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java Tue Oct 20 10:00:50 2015
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.provisioning.model;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class FeatureTest {
+    @Test
+    public void testTypeEnum() {
+        assertEquals(Feature.Type.SUBSYSTEM_APPLICATION,
+                Feature.Type.fromTextRepresentation("osgi.subsystem.application"));
+        assertEquals(Feature.Type.SUBSYSTEM_COMPOSITE,
+                Feature.Type.fromTextRepresentation("osgi.subsystem.composite"));
+        assertEquals(Feature.Type.SUBSYSTEM_FEATURE,
+                Feature.Type.fromTextRepresentation("osgi.subsystem.feature"));
+        assertEquals(Feature.Type.PLAIN, Feature.Type.fromTextRepresentation(null));
+
+        assertEquals("osgi.subsystem.application",
+                Feature.Type.SUBSYSTEM_APPLICATION.getTextRepresentation());
+        assertEquals("osgi.subsystem.composite",
+                Feature.Type.SUBSYSTEM_COMPOSITE.getTextRepresentation());
+        assertEquals("osgi.subsystem.feature",
+                Feature.Type.SUBSYSTEM_FEATURE.getTextRepresentation());
+    }
+
+    @Test
+    public void testFeatureType() {
+        Feature f = new Feature("blah");
+        assertEquals(Feature.Type.PLAIN, f.getType());
+
+        f.setType(Feature.Type.SUBSYSTEM_APPLICATION);
+        assertEquals(Feature.Type.SUBSYSTEM_APPLICATION, f.getType());
+    }
+}

Propchange: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/FeatureTest.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Modified: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelProcessorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelProcessorTest.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelProcessorTest.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelProcessorTest.java Tue Oct 20 10:00:50 2015
@@ -18,33 +18,34 @@
  */
 package org.apache.sling.provisioning.model;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
 import java.util.Enumeration;
 import java.util.Map.Entry;
 
 import org.junit.Before;
 import org.junit.Test;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
 public class ModelProcessorTest {
-    
+
     private Model testModel;
     private ModelProcessor underTest;
-    
+
     @Before
     public void setUp() {
         testModel = new Model();
         testModel.setLocation("LocM1");
-        
+
         Feature feature1 = testModel.getOrCreateFeature("feature1");
         feature1.setLocation("LocF1");
         feature1.setComment("ComF1");
+        feature1.setType(Feature.Type.SUBSYSTEM_COMPOSITE);
         feature1.getVariables().setLocation("LocFV1");
         feature1.getVariables().setComment("ComFV1");
         feature1.getVariables().put("k1", "v1");
         feature1.getVariables().put("k2", "v2");
-        
+
         RunMode runMode11 = feature1.getOrCreateRunMode(new String[] { "rm1", "rm2"});
         runMode11.setLocation("LocRM11");
 
@@ -52,19 +53,19 @@ public class ModelProcessorTest {
         ArtifactGroup group12 = runMode12.getOrCreateArtifactGroup(10);
         group12.setLocation("LocRMG11");
         group12.setComment("ComRMG11");
-        
+
         group12.add(new Artifact("g1", "a1", "v1", "c1", "t1"));
         group12.add(new Artifact("g2", "a2", "v2", null, null));
-        
+
         runMode12.getConfigurations().setLocation("LocConf12");
         runMode12.getConfigurations().setComment("ComConf12");
-        
+
         Configuration conf121 = runMode12.getOrCreateConfiguration("pid1", null);
         conf121.setLocation("LocConf121");
         conf121.setComment("ComConf121");
         conf121.getProperties().put("conf1", "v1");
         conf121.getProperties().put("conf2", "v2");
-        
+
         Configuration conf122 = runMode12.getOrCreateConfiguration("pid2", "fac2");
         conf122.setLocation("LocConf122");
         conf122.setComment("ComConf122");
@@ -72,16 +73,16 @@ public class ModelProcessorTest {
 
         runMode12.getSettings().setLocation("LocSet12");
         runMode12.getSettings().setComment("ComSet12");
-        
+
         runMode12.getSettings().put("set1", "v1");
         runMode12.getSettings().put("set2", "v2");
-        
+
         Feature feature2 = testModel.getOrCreateFeature("feature1");
 
         RunMode runMode21 = feature2.getOrCreateRunMode(new String[0]);
         ArtifactGroup group21 = runMode21.getOrCreateArtifactGroup(20);
         group21.add(new Artifact("g3", "a3", null, null, null));
-        
+
         underTest = new TestModelProcessor();
     }
 
@@ -90,11 +91,12 @@ public class ModelProcessorTest {
         Model model = underTest.process(testModel);
 
         assertEquals("LocM1", model.getLocation());
-        
+
         Feature feature1 = model.getFeature("feature1");
         assertNotNull(feature1);
         assertEquals("LocF1", feature1.getLocation());
         assertEquals("ComF1", feature1.getComment());
+        assertEquals(Feature.Type.SUBSYSTEM_COMPOSITE, feature1.getType());
         assertEquals("LocFV1", feature1.getVariables().getLocation());
         assertEquals("ComFV1", feature1.getVariables().getComment());
         assertEquals("#v1", feature1.getVariables().get("k1"));
@@ -111,20 +113,20 @@ public class ModelProcessorTest {
         assertNotNull(group12);
         assertEquals("LocRMG11", group12.getLocation());
         assertEquals("ComRMG11", group12.getComment());
-        
+
         U.assertArtifactsInGroup(group12, 2);
         U.assertArtifact(group12, "mvn:#g1/#a1/#v1/#t1/#c1");
         U.assertArtifact(group12, "mvn:#g2/#a2/#v2/#jar");
 
         assertEquals("LocConf12", runMode12.getConfigurations().getLocation());
         assertEquals("ComConf12", runMode12.getConfigurations().getComment());
-        
+
         Configuration conf121 = runMode12.getConfiguration("pid1", null);
         assertEquals("LocConf121", conf121.getLocation());
         assertEquals("ComConf121", conf121.getComment());
         assertEquals("#v1", conf121.getProperties().get("conf1"));
         assertEquals("#v2", conf121.getProperties().get("conf2"));
-        
+
         Configuration conf122 = runMode12.getConfiguration("pid2", "fac2");
         assertEquals("LocConf122", conf122.getLocation());
         assertEquals("ComConf122", conf122.getComment());
@@ -143,12 +145,12 @@ public class ModelProcessorTest {
 
         ArtifactGroup group21 = runMode21.getArtifactGroup(20);
         assertNotNull(group21);
-        
+
         U.assertArtifactsInGroup(group21, 1);
         U.assertArtifact(group21, "mvn:#g3/#a3/#LATEST/#jar");
     }
-    
-    
+
+
     static final class TestModelProcessor extends ModelProcessor {
 
         @Override

Modified: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityTest.java Tue Oct 20 10:00:50 2015
@@ -16,16 +16,16 @@
  */
 package org.apache.sling.provisioning.model;
 
+import java.util.List;
+
+import org.junit.Test;
+
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import java.util.List;
-
-import org.junit.Test;
-
 public class ModelUtilityTest {
 
     @Test public void mergeArtifactsTest() throws Exception {
@@ -41,6 +41,7 @@ public class ModelUtilityTest {
         final List<Artifact> list = U.assertArtifactsInGroup(model.getFeature("f").getRunMode().getArtifactGroup(3), 1);
 
         U.assertArtifact(list.get(0), "g", "a", "2.0.0", "jar", null);
+        assertEquals(Feature.Type.SUBSYSTEM_COMPOSITE, model.getFeature("f").getType());
     }
 
     @Test public void removeTest() throws Exception {
@@ -51,6 +52,7 @@ public class ModelUtilityTest {
         assertNotNull(model.getFeature("f").getRunMode());
         assertNotNull(model.getFeature("f").getRunMode().getArtifactGroup(5));
         assertNotNull(model.getFeature("f").getRunMode().getArtifactGroup(7));
+        assertEquals(Feature.Type.PLAIN, model.getFeature("f").getType());
 
         final List<Artifact> group5 = U.assertArtifactsInGroup(model.getFeature("f").getRunMode().getArtifactGroup(5), 1);
         U.assertArtifact(group5.get(0), "g", "a", "1.0.0", "jar", null);

Modified: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/U.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/U.java?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/U.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/U.java Tue Oct 20 10:00:50 2015
@@ -16,14 +16,6 @@
  */
 package org.apache.sling.provisioning.model;
 
-import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_RUN_MODE;
-import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_START_LEVEL;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.ArrayList;
@@ -32,6 +24,14 @@ import java.util.Map;
 
 import org.apache.sling.provisioning.model.io.ModelReader;
 
+import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_RUN_MODE;
+import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_START_LEVEL;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 /** Test utilities */
 public class U {
 
@@ -120,6 +120,7 @@ public class U {
         final Feature exampleFeature = m.getFeature("example");
         final RunMode defaultExampleRM = exampleFeature.getRunMode();
         final List<Configuration> configs = assertConfigurationsInRunMode(defaultExampleRM, 3);
+        assertEquals(Feature.Type.SUBSYSTEM_FEATURE, exampleFeature.getType());
         final Configuration cfg = assertConfiguration(configs, "org.apache.sling.another.config");
     }
 

Modified: sling/trunk/tooling/support/provisioning-model/src/test/resources/example.txt
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/resources/example.txt?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/resources/example.txt (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/resources/example.txt Tue Oct 20 10:00:50 2015
@@ -20,7 +20,7 @@
 #
 # A feature consists of variables and run mode dependent artifacts.
 #
-[feature name=example]
+[feature name=example type=osgi.subsystem.feature]
 # The variables are global and can be used within artifact definitions, configurations,
 # and settings.
 #

Modified: sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/artifact-merge.txt
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/artifact-merge.txt?rev=1709560&r1=1709559&r2=1709560&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/artifact-merge.txt (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/resources/merge/artifact-merge.txt Tue Oct 20 10:00:50 2015
@@ -16,7 +16,7 @@
 #  specific language governing permissions and limitations
 #  under the License.
 #
-[feature name=f]
+[feature name=f type=osgi.subsystem.composite]
 
 [artifacts startLevel=3]
  g/a/2.0.0
\ No newline at end of file