Author: bdelacretaz
Date: Tue Jun 16 09:09:59 2015
New Revision: 1685741

URL: http://svn.apache.org/r1685741
Log:
SLING-4728 - nested models work, but using nested.models variable so far

Modified:
    
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/Launcher.java
    
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/NestedModelsMerger.java
    
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/BasicLauncherIT.java
    
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/CrankstartSetup.java
    
sling/trunk/contrib/crankstart/launcher/src/test/resources/provisioning-model/crankstart-tests.txt
    sling/trunk/contrib/crankstart/test-model/src/main/provisioning/bundles.txt

Modified: 
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/Launcher.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/Launcher.java?rev=1685741&r1=1685740&r2=1685741&view=diff
==============================================================================
--- 
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/Launcher.java
 (original)
+++ 
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/Launcher.java
 Tue Jun 16 09:09:59 2015
@@ -108,12 +108,11 @@ public class Launcher {
             mergeModel(f);
         }
         
-        // And merge nested models (supporting one level of nesting only so 
far)
-        new NestedModelsMerger(model).visit();
         computeEffectiveModel();
     }
     
-    public void computeEffectiveModel() {
+    public void computeEffectiveModel() throws Exception {
+        new NestedModelsMerger(model).visit();
         model = ModelUtility.getEffectiveModel(model, 
overridingVariableResolver);
     }
     

Modified: 
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/NestedModelsMerger.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/NestedModelsMerger.java?rev=1685741&r1=1685740&r2=1685741&view=diff
==============================================================================
--- 
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/NestedModelsMerger.java
 (original)
+++ 
sling/trunk/contrib/crankstart/launcher/src/main/java/org/apache/sling/crankstart/launcher/NestedModelsMerger.java
 Tue Jun 16 09:09:59 2015
@@ -37,6 +37,10 @@ public class NestedModelsMerger extends
     private final Logger log = LoggerFactory.getLogger(getClass());
     private List<Artifact> toMerge;
     
+    public static final String SLINGSTART = "slingstart";
+    public static final String SLINGFEATURE = "slingfeature";
+    public static final String NESTED_MODELS = "nested.models";
+    
     public NestedModelsMerger(Model m) {
         super(m);
     }
@@ -70,9 +74,18 @@ public class NestedModelsMerger extends
     
     @Override
     protected void visitArtifact(Feature f, RunMode rm, ArtifactGroup g, 
Artifact a) throws Exception {
-        final String classifier = a.getClassifier();
-        if("slingstart".equals(classifier ) || 
"slingfeature".equals(classifier)) {
-            toMerge.add(a);
+        // TODO how to identify a nested model when it's the main artifact of 
a module,
+        // so doesn't have a slingfeature/slingstart type or classifier in its 
artifact URL?
+        final String str = f.getVariables().get(NESTED_MODELS);
+        if(str == null || str.length() == 0) {
+            return;
+        }
+        final String [] nm = str.split(",");
+        for(String nested : nm) {
+            if(nested.equals(a.getArtifactId())) {
+                log.info("{} feature variable identifies artifact as a nested 
model , will be merged: {}", f.getName() + "/" + NESTED_MODELS, a);
+                toMerge.add(a);
+            }
         }
     }
 }
\ No newline at end of file

Modified: 
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/BasicLauncherIT.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/BasicLauncherIT.java?rev=1685741&r1=1685740&r2=1685741&view=diff
==============================================================================
--- 
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/BasicLauncherIT.java
 (original)
+++ 
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/BasicLauncherIT.java
 Tue Jun 16 09:09:59 2015
@@ -17,7 +17,6 @@ import org.apache.sling.commons.testing.
 import org.apache.sling.testing.tools.osgi.WebconsoleClient;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -119,11 +118,10 @@ public class BasicLauncherIT {
     }
     
     @Test
-    @Ignore("until test-model is deployed with classifier=slingfeature")
     public void testBundlesFromNestedModel() throws Exception {
         final String [] addBundles = {
                 "org.apache.sling.commons.threads",
-                "org.apache.sling.commons.testing"
+                "org.apache.sling/org.apache.sling.discovery.api"
         };
         
         for(String name : addBundles) {

Modified: 
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/CrankstartSetup.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/CrankstartSetup.java?rev=1685741&r1=1685740&r2=1685741&view=diff
==============================================================================
--- 
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/CrankstartSetup.java
 (original)
+++ 
sling/trunk/contrib/crankstart/launcher/src/test/java/org/apache/sling/crankstart/launcher/CrankstartSetup.java
 Tue Jun 16 09:09:59 2015
@@ -108,6 +108,7 @@ public class CrankstartSetup {
         for(String path : MODEL_PATHS) {
             mergeModelResource(launcher, path);
         }
+        launcher.computeEffectiveModel();
         
         crankstartThread = new Thread() {
             public void run() {

Modified: 
sling/trunk/contrib/crankstart/launcher/src/test/resources/provisioning-model/crankstart-tests.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/launcher/src/test/resources/provisioning-model/crankstart-tests.txt?rev=1685741&r1=1685740&r2=1685741&view=diff
==============================================================================
--- 
sling/trunk/contrib/crankstart/launcher/src/test/resources/provisioning-model/crankstart-tests.txt
 (original)
+++ 
sling/trunk/contrib/crankstart/launcher/src/test/resources/provisioning-model/crankstart-tests.txt
 Tue Jun 16 09:09:59 2015
@@ -19,6 +19,9 @@
 
 [feature name=crankstart.tests]
 
+[variables]
+  nested.models=org.apache.sling.cransktart.test.model
+
 [artifacts]
   org.apache.sling/org.apache.sling.crankstart.test.services/1.9.9-SNAPSHOT
   org.apache.sling/org.apache.sling.junit.core/1.0.10
@@ -26,7 +29,7 @@
   org.apache.sling/org.apache.sling.settings/1.3.6
   
   # Test a nested model file
-  org.apache.sling/org.apache.sling.crankstart.test.model/1.9.9-SNAPSHOT/txt
+  org.apache.sling/org.apache.sling.cransktart.test.model/1.9.9-SNAPSHOT/txt
 
 [artifacts runModes=A]
   org.apache.sling/org.apache.sling.api/2.9.0

Modified: 
sling/trunk/contrib/crankstart/test-model/src/main/provisioning/bundles.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/crankstart/test-model/src/main/provisioning/bundles.txt?rev=1685741&r1=1685740&r2=1685741&view=diff
==============================================================================
--- sling/trunk/contrib/crankstart/test-model/src/main/provisioning/bundles.txt 
(original)
+++ sling/trunk/contrib/crankstart/test-model/src/main/provisioning/bundles.txt 
Tue Jun 16 09:09:59 2015
@@ -21,5 +21,5 @@
 [feature name=crankstart.test.model]
 
 [artifacts]
-  org.apache.sling/org.apache.sling.commons.testing/2.0.18
+  org.apache.sling/org.apache.sling.discovery.api/1.0.2
   org.apache.sling/org.apache.sling.commons.threads/3.2.0


Reply via email to