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

rombert pushed a commit to annotated tag maven-launchpad-plugin-2.0.10
in repository 
https://gitbox.apache.org/repos/asf/sling-maven-launchpad-plugin.git

commit 61f3f68f56de076696fdba84ed5bbf3b80227469
Author: Justin Edelson <[email protected]>
AuthorDate: Mon Dec 20 16:15:25 2010 +0000

    SLING-1597 - adding config installation via launchpad
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/maven/maven-launchpad-plugin@1051167
 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |  9 +-
 .../projectsupport/AbstractBundleListMojo.java     | 10 +++
 .../AbstractLaunchpadStartingMojo.java             | 97 +++++++++++++++++-----
 .../maven/projectsupport/PreparePackageMojo.java   | 12 ++-
 .../apache/sling/maven/projectsupport/RunMojo.java |  4 +-
 .../sling/maven/projectsupport/StartMojo.java      |  4 +-
 6 files changed, 108 insertions(+), 28 deletions(-)

diff --git a/pom.xml b/pom.xml
index 4d6ad74..80513cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,13 +137,18 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.launchpad.api</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.launchpad.base</artifactId>
-            <version>2.2.0</version>
+            <version>2.2.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.launchpad.base</artifactId>
-            <version>2.2.0</version>
+            <version>2.2.1-SNAPSHOT</version>
             <classifier>app</classifier>
         </dependency>
         <dependency>
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
index 73b31ef..7201bd3 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
@@ -52,6 +52,12 @@ import org.drools.runtime.StatefulKnowledgeSession;
 public abstract class AbstractBundleListMojo extends AbstractMojo {
 
     /**
+     * @parameter expression="${configDirectory}"
+     *            default-value="src/main/config"
+     */
+    protected File configDirectory;
+
+    /**
      * JAR Packaging type.
      */
     protected static final String JAR = "jar";
@@ -61,6 +67,10 @@ public abstract class AbstractBundleListMojo extends 
AbstractMojo {
      */
     protected static final String WAR = "war";
 
+    protected static final String CONFIG_PATH_PREFIX = "resources/config";
+
+    protected static final String BUNDLE_PATH_PREFIX = "resources/bundles";
+
     protected static boolean shouldCopy(File source, File dest) {
         if (!dest.exists()) {
             return true;
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
index 29004a6..6c5c4fd 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/AbstractLaunchpadStartingMojo.java
@@ -19,7 +19,11 @@ package org.apache.sling.maven.projectsupport;
 import static org.apache.felix.framework.util.FelixConstants.*;
 
 import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -37,7 +41,7 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.shared.filtering.MavenFileFilter;
 import org.apache.maven.shared.filtering.MavenFilteringException;
 import org.apache.maven.shared.filtering.PropertyUtils;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
 import org.apache.sling.launchpad.base.impl.Sling;
 import org.apache.sling.launchpad.base.shared.Notifiable;
 import org.apache.sling.launchpad.base.shared.SharedConstants;
@@ -46,10 +50,6 @@ import 
org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.BundleList;
 import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.StartLevel;
 import org.osgi.framework.BundleException;
 
-/**
- * Base plugin class for goals which start Sling. 
- * 
- */
 public abstract class AbstractLaunchpadStartingMojo extends 
AbstractBundleListMojo implements Notifiable {
 
     /** Default log level setting if no set on command line (value is "INFO"). 
*/
@@ -101,7 +101,7 @@ public abstract class AbstractLaunchpadStartingMojo extends 
AbstractBundleListMo
 
     /**
      * @parameter expression="${resourceProviderRoot}"
-     *           default-value="src/test/resources"
+     *            default-value="src/test/resources"
      */
     private File resourceProviderRoot;
 
@@ -110,22 +110,51 @@ public abstract class AbstractLaunchpadStartingMojo 
extends AbstractBundleListMo
      */
     private MavenFileFilter mavenFileFilter;
 
-    private ResourceProvider resourceProvider = new ResourceProvider() {
+    /**
+     * @parameter expression="${session}"
+     * @required
+     * @readonly
+     */
+    private MavenSession mavenSession;
+
+    private LaunchpadContentProvider resourceProvider = new 
LaunchpadContentProvider() {
 
-        @Override
         public Iterator<String> getChildren(String path) {
-            if (path.equals("resources/bundles")) {
+            if (path.equals(BUNDLE_PATH_PREFIX)) {
                 List<String> levels = new ArrayList<String>();
                 for (StartLevel level : getBundleList().getStartLevels()) {
-                    levels.add(String.valueOf(level.getLevel()) + "/");
+                    levels.add(String.valueOf(BUNDLE_PATH_PREFIX + "/" + 
level.getLevel()) + "/");
                 }
                 return levels.iterator();
             } else if (path.equals("resources/corebundles")) {
                 List<String> empty = Collections.emptyList();
                 return empty.iterator();
-            } else {
+            } else if (path.equals(CONFIG_PATH_PREFIX)) {
+                if (configDirectory.exists() && configDirectory.isDirectory()) 
{
+                    File[] configFiles = configDirectory.listFiles(new 
FileFilter() {
+
+                        public boolean accept(File file) {
+                            return file.isFile();
+                        }
+                    });
+
+                    List<String> fileNames = new ArrayList<String>();
+                    for (File cfgFile : configFiles) {
+                        if (cfgFile.isFile()) {
+                            fileNames.add(CONFIG_PATH_PREFIX + "/" + 
cfgFile.getName());
+                        }
+                    }
+
+                    return fileNames.iterator();
+
+                } else {
+                    List<String> empty = Collections.emptyList();
+                    return empty.iterator();
+                }
+            } else if (path.startsWith(BUNDLE_PATH_PREFIX)) {
+                String startLevel = path.substring(BUNDLE_PATH_PREFIX.length() 
+ 1);
                 try {
-                    int i = Integer.parseInt(path);
+                    int i = Integer.parseInt(startLevel);
                     List<String> bundles = new ArrayList<String>();
                     for (StartLevel level : getBundleList().getStartLevels()) {
                         if (level.getLevel() == i) {
@@ -145,15 +174,25 @@ public abstract class AbstractLaunchpadStartingMojo 
extends AbstractBundleListMo
                     return bundles.iterator();
 
                 } catch (NumberFormatException e) {
-                    getLog().warn("un-handlable path " + path);
-                    return null;
-
                 }
             }
+
+            getLog().warn("un-handlable path " + path);
+            return null;
         }
 
-        @Override
         public URL getResource(String path) {
+            if (path.startsWith(CONFIG_PATH_PREFIX)) {
+                File configFile = new File(configDirectory, 
path.substring(CONFIG_PATH_PREFIX.length() + 1));
+                if (configFile.exists()) {
+                    try {
+                        return configFile.toURI().toURL();
+                    } catch (MalformedURLException e) {
+                        // ignore this one
+                    }
+                }
+            }
+
             File resourceFile = new File(resourceProviderRoot, path);
             if (resourceFile.exists()) {
                 try {
@@ -167,13 +206,29 @@ public abstract class AbstractLaunchpadStartingMojo 
extends AbstractBundleListMo
                 if (fromClasspath != null) {
                     return fromClasspath;
                 }
-                
+
                 try {
                     return new URL(path);
                 } catch (MalformedURLException e) {
                     return null;
                 }
             }
+
+        }
+
+        public InputStream getResourceAsStream(String path) {
+            URL res = this.getResource(path);
+            if (res != null) {
+                try {
+                    return res.openStream();
+                } catch (IOException ioe) {
+                    // ignore this one
+                }
+            }
+
+            // no resource
+            return null;
+
         }
     };
 
@@ -200,9 +255,9 @@ public abstract class AbstractLaunchpadStartingMojo extends 
AbstractBundleListMo
         if (updateFile != null) {
             getLog().warn("Maven Launchpad Plugin doesn't support updating the 
framework bundle.");
         }
-        
+
         getLog().info("Restarting Framework and Sling");
-    
+
         try {
             executeWithArtifacts();
         } catch (MojoExecutionException e) {
@@ -270,8 +325,8 @@ public abstract class AbstractLaunchpadStartingMojo extends 
AbstractBundleListMo
 
     }
 
-    protected abstract Sling startSling(ResourceProvider resourceProvider, 
Map<String, String> props, Logger logger)
-            throws BundleException;
+    protected abstract Sling startSling(LaunchpadContentProvider 
resourceProvider, Map<String, String> props,
+            Logger logger) throws BundleException;
 
     protected void stopSling() {
         if (sling != null) {
diff --git 
a/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java 
b/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
index 55629db..1fdc8c0 100644
--- 
a/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
+++ 
b/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
@@ -92,12 +92,13 @@ public class PreparePackageMojo extends 
AbstractLaunchpadFrameworkMojo {
        public void executeWithArtifacts() throws MojoExecutionException, 
MojoFailureException {
                copyBaseArtifact();
                copyBundles(getBundleList(), getOutputDirectory());
+               copyConfigurationFiles();
                if (JAR.equals(packaging)) {
                        unpackBaseArtifact();
                }
        }
 
-       protected void initArtifactDefinitions(Properties dependencies) {
+    protected void initArtifactDefinitions(Properties dependencies) {
                if (base == null) {
                        base = new ArtifactDefinition();
                }
@@ -186,6 +187,15 @@ public class PreparePackageMojo extends 
AbstractLaunchpadFrameworkMojo {
                unpack(artifact.getFile(), buildOutputDirectory, null, null);
        }
 
+    private void copyConfigurationFiles() throws MojoExecutionException {
+        try {
+            FileUtils.copyDirectory(configDirectory, new 
File(getOutputDirectory(), CONFIG_PATH_PREFIX));
+        } catch (IOException e) {
+            throw new MojoExecutionException("Unable to copy configuration 
files", e);
+        }
+        
+    }
+
     private void unpack(File source, File destination, String includes, String 
excludes)
             throws MojoExecutionException {
         getLog().info("Unpacking " + source.getPath() + " to\n  " + 
destination.getPath());
diff --git a/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java 
b/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java
index a00133a..feaecd5 100644
--- a/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java
+++ b/src/main/java/org/apache/sling/maven/projectsupport/RunMojo.java
@@ -19,7 +19,7 @@ package org.apache.sling.maven.projectsupport;
 import java.util.Map;
 
 import org.apache.felix.framework.Logger;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
 import org.apache.sling.launchpad.base.impl.Sling;
 import org.osgi.framework.BundleException;
 
@@ -65,7 +65,7 @@ public class RunMojo extends AbstractLaunchpadStartingMojo {
     
     private boolean registeredHook = false;
 
-    protected Sling startSling(ResourceProvider resourceProvider, final 
Map<String, String> props, Logger logger)
+    protected Sling startSling(LaunchpadContentProvider resourceProvider, 
final Map<String, String> props, Logger logger)
             throws BundleException {
         if (!registeredHook) {
             Runtime.getRuntime().addShutdownHook(shutdown);
diff --git a/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java 
b/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java
index e83a75b..4a48571 100644
--- a/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java
+++ b/src/main/java/org/apache/sling/maven/projectsupport/StartMojo.java
@@ -19,7 +19,7 @@ package org.apache.sling.maven.projectsupport;
 import java.util.Map;
 
 import org.apache.felix.framework.Logger;
-import org.apache.sling.launchpad.base.impl.ResourceProvider;
+import org.apache.sling.launchpad.api.LaunchpadContentProvider;
 import org.apache.sling.launchpad.base.impl.Sling;
 import org.osgi.framework.BundleException;
 
@@ -46,7 +46,7 @@ public class StartMojo extends AbstractLaunchpadStartingMojo {
      * {@inheritDoc}
      */
     @Override
-    protected Sling startSling(ResourceProvider resourceProvider, final 
Map<String, String> props, Logger logger)
+    protected Sling startSling(LaunchpadContentProvider resourceProvider, 
final Map<String, String> props, Logger logger)
             throws BundleException {
         new ControlListener(this, getLog(), controlHost, controlPort).listen();
 

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to