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]>.
