You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:15:27 UTC
[sling-maven-launchpad-plugin] 44/49: SLING-1597 - adding config
installation via launchpad
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 <ju...@apache.org>
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
"commits@sling.apache.org" <co...@sling.apache.org>.