This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag slingstart-maven-plugin-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-slingstart-maven-plugin.git
commit 5758009f4de1642ab6ebb5866e09e5098d828f79 Author: Carsten Ziegeler <[email protected]> AuthorDate: Wed Sep 24 09:12:54 2014 +0000 Fully support Apach Felix config file format. Move from properties to getter and setter methods git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/maven/slingstart-maven-plugin@1627263 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 7 +++ .../slingstart/DependencyLifecycleParticipant.java | 4 +- .../apache/sling/maven/slingstart/ModelUtils.java | 10 ++-- .../sling/maven/slingstart/PreparePackageMojo.java | 58 +++++++++++++--------- 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index 622ebeb..e7fb6de 100644 --- a/pom.xml +++ b/pom.xml @@ -114,6 +114,13 @@ <version>3.3</version> <scope>provided</scope> </dependency> + <!-- We use a class from the config admin implementation to read config files --> + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.configadmin</artifactId> + <version>1.2.8</version> + <scope>provided</scope> + </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-archiver</artifactId> diff --git a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java index c3616c6..4b3d973 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java +++ b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java @@ -138,12 +138,12 @@ public class DependencyLifecycleParticipant extends AbstractMavenLifecyclePartic } private static void addDependencies(final SSMDeliverable model, final Logger log, final MavenProject project) { - for(final SSMFeature feature : model.features) { + for(final SSMFeature feature : model.getFeatures()) { // skip base if ( feature.isRunMode(SSMFeature.RUN_MODE_BASE) ) { continue; } - for(final SSMStartLevel sl : feature.startLevels) { + for(final SSMStartLevel sl : feature.getStartLevels()) { for(final SSMArtifact a : sl.artifacts) { final Dependency dep = new Dependency(); dep.setGroupId(a.groupId); diff --git a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java index b213c4e..6895e23 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java +++ b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java @@ -30,8 +30,8 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; import org.apache.sling.slingstart.model.SSMArtifact; -import org.apache.sling.slingstart.model.SSMFeature; import org.apache.sling.slingstart.model.SSMDeliverable; +import org.apache.sling.slingstart.model.SSMFeature; import org.apache.sling.slingstart.model.xml.XMLSSMModelReader; import org.codehaus.plexus.logging.Logger; @@ -142,17 +142,17 @@ public abstract class ModelUtils { if ( base == null ) { throw new MojoExecutionException("No base run mode found."); } - if ( base.startLevels.size() == 0 ) { + if ( base.getStartLevels().size() == 0 ) { throw new MojoExecutionException("No base artifacts defined."); } - if ( base.startLevels.size() > 1 ) { + if ( base.getStartLevels().size() > 1 ) { throw new MojoExecutionException("Base run mode should only have a single start level."); } - if ( base.startLevels.get(0).artifacts.size() != 1 ) { + if ( base.getStartLevels().get(0).artifacts.size() != 1 ) { throw new MojoExecutionException("Base run mode should contain exactly one artifact."); } - return base.startLevels.get(0).artifacts.get(0); + return base.getStartLevels().get(0).artifacts.get(0); } /** diff --git a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java index ffc643b..f066ad0 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java +++ b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java @@ -17,12 +17,14 @@ package org.apache.sling.maven.slingstart; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; +import org.apache.felix.cm.file.ConfigurationHandler; import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -126,7 +128,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { if ( webConfig != null ) { final File webXML = new File(webappDir, "web.xml"); try { - FileUtils.fileWrite(webXML, webConfig.properties); + FileUtils.fileWrite(webXML, webConfig.getProperties().get(SSMConstants.CFG_WEB_XML).toString()); } catch (final IOException e) { throw new MojoExecutionException("Unable to write configuration to " + webXML, e); } @@ -149,7 +151,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { final Artifact artifact = getBaseArtifact(model, null, BuildConstants.TYPE_JAR); contentsMap.put(BASE_DESTINATION + "/"+ artifact.getArtifactId() + "." + artifact.getArtifactHandler().getExtension(), artifact.getFile()); } - for(final SSMFeature feature : model.features) { + for(final SSMFeature feature : model.getFeatures()) { if ( packageRunMode == null ) { if ( feature.isSpecial() && !feature.isRunMode(SSMFeature.RUN_MODE_BOOT)) { @@ -169,17 +171,17 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { */ private void buildContentsMap(final SSMDeliverable model, final SSMFeature runMode, final Map<String, File> contentsMap) throws MojoExecutionException{ - for(final SSMStartLevel sl : runMode.startLevels) { + for(final SSMStartLevel sl : runMode.getStartLevels()) { for(final SSMArtifact a : sl.artifacts) { final Artifact artifact = ModelUtils.getArtifact(this.project, a.groupId, a.artifactId, model.getValue(a.version), a.type, a.classifier); final File artifactFile = artifact.getFile(); - contentsMap.put(getPathForArtifact(sl.level, artifactFile.getName(), runMode), artifactFile); + contentsMap.put(getPathForArtifact(sl.getLevel(), artifactFile.getName(), runMode), artifactFile); } } final File rootConfDir = new File(this.getTmpDir(), "global-config"); boolean hasConfig = false; - for(final SSMConfiguration config : runMode.configurations) { + for(final SSMConfiguration config : runMode.getConfigurations()) { // skip special configurations if ( config.isSpecial() ) { continue; @@ -189,7 +191,12 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { getLog().debug(String.format("Creating configuration at %s", configFile.getPath())); configFile.getParentFile().mkdirs(); try { - FileUtils.fileWrite(configFile, config.properties); + final FileOutputStream os = new FileOutputStream(configFile); + try { + ConfigurationHandler.write(os, config.getProperties()); + } finally { + os.close(); + } } catch (final IOException e) { throw new MojoExecutionException("Unable to write configuration to " + configFile, e); } @@ -207,18 +214,18 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { throws MojoExecutionException { String settings = null; final SSMFeature baseRM = model.getRunMode(SSMFeature.RUN_MODE_BASE); - if ( baseRM != null && baseRM.settings != null ) { - settings = baseRM.settings.properties + "\n"; + if ( baseRM != null && baseRM.getSettings() != null ) { + settings = baseRM.getSettings().properties + "\n"; } else { settings = ""; } final SSMFeature bootRM = model.getRunMode(SSMFeature.RUN_MODE_BOOT); - if ( bootRM != null && bootRM.settings != null ) { - settings = settings + bootRM.settings.properties + "\n"; + if ( bootRM != null && bootRM.getSettings() != null ) { + settings = settings + bootRM.getSettings().properties + "\n"; } final SSMFeature packageRM = model.getRunMode(packageRunMode); - if ( packageRM != null && packageRM.settings != null ) { - settings = settings + packageRM.settings.properties; + if ( packageRM != null && packageRM.getSettings() != null ) { + settings = settings + packageRM.getSettings().properties; } if ( settings != null ) { @@ -237,34 +244,37 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { */ private void buildBootstrapFile(final SSMDeliverable model, final String packageRunMode, final File outputDir) throws MojoExecutionException { - String bootstrapTxt = ""; + final StringBuilder sb = new StringBuilder(); final SSMFeature baseRM = model.getRunMode(SSMFeature.RUN_MODE_BASE); if ( baseRM != null ) { final SSMConfiguration c = baseRM.getConfiguration(SSMConstants.CFG_BOOTSTRAP); if ( c != null ) { - bootstrapTxt = c.properties + "\n"; + sb.append(c.getProperties().get(c.getPid())); + sb.append('\n'); } } final SSMFeature bootRM = model.getRunMode(SSMFeature.RUN_MODE_BOOT); if ( bootRM != null ) { final SSMConfiguration c = bootRM.getConfiguration(SSMConstants.CFG_BOOTSTRAP); if ( c != null ) { - bootstrapTxt = bootstrapTxt + c.properties; + sb.append(c.getProperties().get(c.getPid())); + sb.append('\n'); } } final SSMFeature packageRM = model.getRunMode(packageRunMode); if ( packageRM != null ) { final SSMConfiguration c = packageRM.getConfiguration(SSMConstants.CFG_BOOTSTRAP); if ( c != null ) { - bootstrapTxt = bootstrapTxt + c.properties; + sb.append(c.getProperties().get(c.getPid())); + sb.append('\n'); } } - if ( bootstrapTxt != null ) { + if ( sb.length() > 0 ) { final File file = new File(outputDir, BOOTSTRAP_FILE); getLog().debug(String.format("Creating bootstrap file at %s", file.getPath())); try { - FileUtils.fileWrite(file, bootstrapTxt); + FileUtils.fileWrite(file, sb.toString()); } catch ( final IOException ioe ) { throw new MojoExecutionException("Unable to write bootstrap file.", ioe); } @@ -335,8 +345,8 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { */ private String getPathForArtifact(final int startLevel, final String artifactName, final SSMFeature rm) { final Set<String> runModesList = new TreeSet<String>(); - if (rm.runModes != null ) { - for(final String mode : rm.runModes) { + if (rm.getRunModes() != null ) { + for(final String mode : rm.getRunModes()) { runModesList.add(mode); } } @@ -367,8 +377,8 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { */ private String getPathForConfiguration(final SSMConfiguration config, final SSMFeature rm) { final Set<String> runModesList = new TreeSet<String>(); - if (rm.runModes != null ) { - for(final String mode : rm.runModes) { + if (rm.getRunModes() != null ) { + for(final String mode : rm.getRunModes()) { runModesList.add(mode); } } @@ -390,8 +400,8 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { runModeExt = sb.toString(); } - final String mainName = (config.factoryPid != null ? config.factoryPid : config.pid); - final String alias = (config.factoryPid != null ? "-" + config.pid : ""); + final String mainName = (config.getFactoryPid() != null ? config.getFactoryPid() : config.getPid()); + final String alias = (config.getFactoryPid() != null ? "-" + config.getPid() : ""); return String.format("%s/%s%s/%s%s.cfg", BASE_DESTINATION, CONFIG_DIRECTORY, runModeExt, mainName, -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
