This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch variables
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-launcher.git

commit 8789b48dcd7568d8f80db20ed21d64ce0e08a7b6
Author: Karl Pauls <[email protected]>
AuthorDate: Thu Sep 6 09:59:59 2018 +0200

    Change variable handling to not allow variables to be defined twice
---
 .gitignore                                         |  2 ++
 .../feature/launcher/impl/FeatureProcessor.java    | 25 +++++++++++-----------
 .../apache/sling/feature/launcher/impl/Main.java   | 21 ++++++++++++++++++
 .../launcher/impl/launchers/AbstractRunner.java    |  1 -
 4 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5b783ed..1f87c49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,5 @@ maven-eclipse.xml
 .DS_Store
 jcr.log
 atlassian-ide-plugin.xml
+license.properties
+/launcher
diff --git 
a/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java 
b/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
index 4d438f4..2e77570 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
@@ -71,7 +71,7 @@ public class FeatureProcessor {
                     // ignore
                 }
                 return null;
-            }).add(StreamSupport.stream(Spliterators.spliteratorUnknownSize(
+            }, config.getVariables(), 
config.getInstallation().getFrameworkProperties()).add(StreamSupport.stream(Spliterators.spliteratorUnknownSize(
             ServiceLoader.load(FeatureExtensionHandler.class).iterator(), 
Spliterator.ORDERED), false).toArray(FeatureExtensionHandler[]::new));
 
         List<Feature> features = new ArrayList<>();
@@ -126,17 +126,6 @@ public class FeatureProcessor {
                 config.getInstallation().addBundle(entry.getKey(), 
artifactFile);
             }
         }
-        extensions: for(final Extension ext : app.getExtensions()) {
-            for (ExtensionHandler handler : 
ServiceLoader.load(ExtensionHandler.class,  
FeatureProcessor.class.getClassLoader()))
-            {
-                if (handler.handle(ext, ctx, config.getInstallation())) {
-                    continue extensions;
-                }
-            }
-            if ( ext.isRequired() ) {
-                throw new Exception("Unknown required extension " + 
ext.getName());
-            }
-        }
 
         for (final Configuration cfg : app.getConfigurations()) {
             if ( cfg.isFactoryConfiguration() ) {
@@ -151,6 +140,18 @@ public class FeatureProcessor {
                 
config.getInstallation().getFrameworkProperties().put(prop.getKey(), 
prop.getValue());
             }
         }
+
+        extensions: for(final Extension ext : app.getExtensions()) {
+            for (ExtensionHandler handler : 
ServiceLoader.load(ExtensionHandler.class,  
FeatureProcessor.class.getClassLoader()))
+            {
+                if (handler.handle(ext, ctx, config.getInstallation())) {
+                    continue extensions;
+                }
+            }
+            if ( ext.isRequired() ) {
+                throw new Exception("Unknown required extension " + 
ext.getName());
+            }
+        }
     }
 
     /**
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/Main.java 
b/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
index 2d36ca4..1ab089f 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
@@ -180,6 +180,27 @@ public class Main {
         }
         launcherConfig.getVariables().put("sling.launchpad", 
launcherConfig.getHomeDirectory().getAbsolutePath() + "/launchpad");
 
+        final Installation installation = launcherConfig.getInstallation();
+
+        // set sling home, and use separate locations for launchpad and 
properties
+        installation.getFrameworkProperties().put("sling.home", 
launcherConfig.getHomeDirectory().getAbsolutePath());
+        installation.getFrameworkProperties().put("sling.launchpad", 
launcherConfig.getHomeDirectory().getAbsolutePath() + "/launchpad");
+        if 
(!installation.getFrameworkProperties().containsKey("repository.home")) {
+            installation.getFrameworkProperties().put("repository.home", 
launcherConfig.getHomeDirectory().getAbsolutePath() + File.separatorChar + 
"repository");
+        }
+        installation.getFrameworkProperties().put("sling.properties", 
"conf/sling.properties");
+
+
+        // additional OSGi properties
+        // move storage inside launcher
+        if ( installation.getFrameworkProperties().get(STORAGE_PROPERTY) == 
null ) {
+            installation.getFrameworkProperties().put(STORAGE_PROPERTY, 
launcherConfig.getHomeDirectory().getAbsolutePath() + File.separatorChar + 
"framework");
+        }
+        // set start level to 30
+        if ( installation.getFrameworkProperties().get(START_LEVEL_PROP) == 
null ) {
+            installation.getFrameworkProperties().put(START_LEVEL_PROP, "30");
+        }
+        
         Main.LOG().info("");
         Main.LOG().info("Apache Sling Application Launcher");
         Main.LOG().info("---------------------------------");
diff --git 
a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
 
b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
index 064b632..f532a2c 100644
--- 
a/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
+++ 
b/src/main/java/org/apache/sling/feature/launcher/impl/launchers/AbstractRunner.java
@@ -322,7 +322,6 @@ public abstract class AbstractRunner implements 
Callable<Integer> {
                         }
                     }
                     else {
-                        
framework.getBundleContext().getDataFile("INSTALLED").mkdirs();
                         latch.countDown();
                     }
                 }

Reply via email to