Author: cziegeler
Date: Fri Jul  7 14:35:54 2017
New Revision: 1801170

URL: http://svn.apache.org/viewvc?rev=1801170&view=rev
Log:
Add application support

Modified:
    
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
    
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
    
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/Main.java

Modified: 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java?rev=1801170&r1=1801169&r2=1801170&view=diff
==============================================================================
--- 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
 (original)
+++ 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
 Fri Jul  7 14:35:54 2017
@@ -17,6 +17,7 @@
 package org.apache.sling.feature.launcher.impl;
 
 import java.io.File;
+import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.util.List;
@@ -27,6 +28,7 @@ import org.apache.sling.feature.Artifact
 import org.apache.sling.feature.Configuration;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
+import org.apache.sling.feature.json.ApplicationJSONReader;
 import org.apache.sling.feature.json.ApplicationJSONWriter;
 import org.apache.sling.feature.launcher.impl.LauncherConfig.StartupMode;
 import org.apache.sling.feature.support.ArtifactHandler;
@@ -42,9 +44,24 @@ public class FeatureProcessor {
      * @param artifactManager The artifact manager
      */
     public static Application createApplication(final LauncherConfig config,
-            final ArtifactManager artifactManager) throws IOException {
-        final Application app = FeatureUtil.assembleApplication(null, 
FeatureUtil.getFeatureFiles(config.getHomeDirectory(), 
config.getFeatureFiles()),
+            final ArtifactManager artifactManager)
+    throws IOException {
+        final Application app;
+        if ( config.getApplicationFile() != null ) {
+            String absoluteArg = config.getApplicationFile();
+            if ( absoluteArg.indexOf(":") < 2 ) {
+                absoluteArg = new File(absoluteArg).getAbsolutePath();
+            }
+            final ArtifactHandler appArtifact = 
artifactManager.getArtifactHandler(absoluteArg);
+
+            try (final FileReader r = new FileReader(appArtifact.getFile())) {
+                app = ApplicationJSONReader.read(r);
+            }
+
+        } else {
+           app = FeatureUtil.assembleApplication(null, 
FeatureUtil.getFeatureFiles(config.getHomeDirectory(), 
config.getFeatureFiles()),
                 artifactManager);
+        }
 
         // write application back
         final File file = new File(config.getHomeDirectory(), "resources" + 
File.separatorChar + "provisioning" + File.separatorChar + "application.json");

Modified: 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java?rev=1801170&r1=1801169&r2=1801170&view=diff
==============================================================================
--- 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
 (original)
+++ 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
 Fri Jul  7 14:35:54 2017
@@ -41,6 +41,9 @@ public class LauncherConfig
     /** The feature files or directories. */
     private volatile String[] featureFiles;
 
+    /** The application file. */
+    private volatile String appFile;
+
     private volatile StartupMode startupMode = StartupMode.PURE;
 
     private final Installation installation = new Installation();
@@ -53,6 +56,14 @@ public class LauncherConfig
         this.setCacheDirectory(new File(getHomeDirectory(), CACHE_DIR));
     }
 
+    public void setApplicationFile(final String value) {
+        appFile = value;
+    }
+
+    public String getApplicationFile() {
+        return this.appFile;
+    }
+
     /**
      * Set the list of feature files or directories.
      * @param value The array with the feature file names.

Modified: 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
URL: 
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/Main.java?rev=1801170&r1=1801169&r2=1801170&view=diff
==============================================================================
--- 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
 (original)
+++ 
sling/whiteboard/cziegeler/feature-launcher/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
 Fri Jul  7 14:35:54 2017
@@ -76,6 +76,7 @@ public class Main {
 
         final Option repoOption =  new Option("u", true, "Set repository url");
         final Option modelOption =  new Option("f", true, "Set feature 
files/directories");
+        final Option appOption =  new Option("a", true, "Set application 
file");
         final Option fwkProperties = new Option("D", true, "Set framework 
properties");
         fwkProperties.setArgs(20);
         final Option debugOption = new Option("v", true, "Verbose");
@@ -114,6 +115,9 @@ public class Main {
             if ( cl.hasOption(installerOption.getOpt()) ) {
                 config.setUseInstaller();
             }
+            if ( cl.hasOption(appOption.getOpt()) ) {
+                
config.setApplicationFile(cl.getOptionValue(appOption.getOpt()));
+            }
         } catch ( final ParseException pe) {
             Main.LOG().error("Unable to parse command line: {}", 
pe.getMessage(), pe);
             System.exit(1);


Reply via email to