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 10:25:35 UTC
[sling-slingstart-maven-plugin] 06/27: Implement txt format for
reading and writing
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 42e2fe7e4eb6f0ae67f6ed14998579632188e383
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Sep 26 16:05:42 2014 +0000
Implement txt format for reading and writing
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/maven/slingstart-maven-plugin@1627819 13f79535-47bb-0310-9956-ffa450edef68
---
.../maven/slingstart/AttachSlingStartModel.java | 8 +--
.../sling/maven/slingstart/BuildConstants.java | 8 +--
.../slingstart/DependencyLifecycleParticipant.java | 23 +++----
.../apache/sling/maven/slingstart/ModelUtils.java | 54 ++++++++--------
.../sling/maven/slingstart/PreparePackageMojo.java | 71 ++++++++++++----------
src/main/resources/META-INF/plexus/components.xml | 4 +-
6 files changed, 90 insertions(+), 78 deletions(-)
diff --git a/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java b/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
index f634942..97f4dc6 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
@@ -28,7 +28,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.sling.slingstart.model.SSMDeliverable;
-import org.apache.sling.slingstart.model.xml.XMLSSMModelWriter;
+import org.apache.sling.slingstart.model.txt.TXTSSMModelWriter;
/**
* Attaches the subsystem as a project artifact.
@@ -46,12 +46,12 @@ public class AttachSlingStartModel extends AbstractSlingStartMojo {
public void execute() throws MojoExecutionException, MojoFailureException {
final SSMDeliverable model = this.readModel();
- final File outputFile = new File(this.project.getBuild().getDirectory() + File.separatorChar + "slingstart.xml");
+ final File outputFile = new File(this.project.getBuild().getDirectory() + File.separatorChar + "slingstart.txt");
outputFile.getParentFile().mkdirs();
Writer writer = null;
try {
writer = new FileWriter(outputFile);
- XMLSSMModelWriter.write(writer, model);
+ TXTSSMModelWriter.write(writer, model);
} catch (IOException e) {
throw new MojoExecutionException("Unable to write model to " + outputFile, e);
} finally {
@@ -63,7 +63,7 @@ public class AttachSlingStartModel extends AbstractSlingStartMojo {
project.getArtifact().setFile(outputFile);
} else {
// otherwise attach it as an additional artifact
- projectHelper.attachArtifact(project, BuildConstants.TYPE_XML, BuildConstants.CLASSIFIER_PARTIAL_SYSTEM, outputFile);
+ projectHelper.attachArtifact(project, BuildConstants.TYPE_TXT, BuildConstants.CLASSIFIER_PARTIAL_SYSTEM, outputFile);
}
}
}
diff --git a/src/main/java/org/apache/sling/maven/slingstart/BuildConstants.java b/src/main/java/org/apache/sling/maven/slingstart/BuildConstants.java
index 01f2238..265aea5 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/BuildConstants.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/BuildConstants.java
@@ -19,14 +19,14 @@ package org.apache.sling.maven.slingstart;
import java.util.ArrayList;
import java.util.List;
-import org.apache.sling.slingstart.model.SSMFeature;
+import org.apache.sling.slingstart.model.SSMConstants;
public abstract class BuildConstants {
// CONTEXTS
public static final String CONTEXT_GLOBAL = "slingstart:global";
- public static final String CONTEXT_STANDALONE = "slingstart" + SSMFeature.RUN_MODE_STANDALONE;
- public static final String CONTEXT_WEBAPP = "slingstart" + SSMFeature.RUN_MODE_WEBAPP;
+ public static final String CONTEXT_STANDALONE = "slingstart" + SSMConstants.RUN_MODE_STANDALONE;
+ public static final String CONTEXT_WEBAPP = "slingstart" + SSMConstants.RUN_MODE_WEBAPP;
// Types
@@ -37,7 +37,7 @@ public abstract class BuildConstants {
public static final String TYPE_POM = "pom";
- public static final String TYPE_XML = "xml";
+ public static final String TYPE_TXT = "txt";
public static final String PACKAGING_PARTIAL_SYSTEM = "slingsubsystem";
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 4b3d973..cca358c 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
@@ -37,6 +37,7 @@ import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
import org.apache.sling.slingstart.model.SSMArtifact;
+import org.apache.sling.slingstart.model.SSMConstants;
import org.apache.sling.slingstart.model.SSMDeliverable;
import org.apache.sling.slingstart.model.SSMFeature;
import org.apache.sling.slingstart.model.SSMStartLevel;
@@ -120,10 +121,10 @@ public class DependencyLifecycleParticipant extends AbstractMavenLifecyclePartic
final String[] classifiers = new String[] {null, BuildConstants.CLASSIFIER_APP, BuildConstants.CLASSIFIER_WEBAPP};
for(final String c : classifiers) {
final Dependency dep = new Dependency();
- dep.setGroupId(base.groupId);
- dep.setArtifactId(base.artifactId);
- dep.setVersion(model.getValue(base.version));
- dep.setType(base.type);
+ dep.setGroupId(base.getGroupId());
+ dep.setArtifactId(base.getArtifactId());
+ dep.setVersion(model.getValue(base.getVersion()));
+ dep.setType(base.getType());
dep.setClassifier(c);
if ( BuildConstants.CLASSIFIER_WEBAPP.equals(c) ) {
dep.setType(BuildConstants.TYPE_WAR);
@@ -140,17 +141,17 @@ public class DependencyLifecycleParticipant extends AbstractMavenLifecyclePartic
private static void addDependencies(final SSMDeliverable model, final Logger log, final MavenProject project) {
for(final SSMFeature feature : model.getFeatures()) {
// skip base
- if ( feature.isRunMode(SSMFeature.RUN_MODE_BASE) ) {
+ if ( feature.isRunMode(SSMConstants.RUN_MODE_BASE) ) {
continue;
}
for(final SSMStartLevel sl : feature.getStartLevels()) {
- for(final SSMArtifact a : sl.artifacts) {
+ for(final SSMArtifact a : sl.getArtifacts()) {
final Dependency dep = new Dependency();
- dep.setGroupId(a.groupId);
- dep.setArtifactId(a.artifactId);
- dep.setVersion(model.getValue(a.version));
- dep.setType(a.type);
- dep.setClassifier(a.classifier);
+ dep.setGroupId(a.getGroupId());
+ dep.setArtifactId(a.getArtifactId());
+ dep.setVersion(model.getValue(a.getVersion()));
+ dep.setType(a.getType());
+ dep.setClassifier(a.getClassifier());
dep.setScope(PROVIDED);
log.debug("- adding dependency " + dep);
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 6895e23..ab3c0f0 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
@@ -22,6 +22,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.commons.io.IOUtils;
@@ -30,8 +31,12 @@ 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.SSMConstants;
import org.apache.sling.slingstart.model.SSMDeliverable;
import org.apache.sling.slingstart.model.SSMFeature;
+import org.apache.sling.slingstart.model.SSMTraceable;
+import org.apache.sling.slingstart.model.SSMValidator;
+import org.apache.sling.slingstart.model.txt.TXTSSMModelReader;
import org.apache.sling.slingstart.model.xml.XMLSSMModelReader;
import org.codehaus.plexus.logging.Logger;
@@ -47,7 +52,7 @@ public abstract class ModelUtils {
final List<String> candidates = new ArrayList<String>();
if ( systemsDirectory != null && systemsDirectory.exists() ) {
for(final File f : systemsDirectory.listFiles() ) {
- if ( f.isFile() && f.getName().endsWith(".xml") && !f.getName().startsWith(".") ) {
+ if ( f.isFile() && f.getName().endsWith(".txt") && !f.getName().startsWith(".") ) {
candidates.add(f.getName());
}
}
@@ -59,13 +64,13 @@ public abstract class ModelUtils {
for(final String name : candidates) {
logger.debug("Reading model " + name + " in project " + project.getId());
try {
- final FileReader reader = new FileReader(new File(systemsDirectory, name));
+ final File f = new File(systemsDirectory, name);
+ final FileReader reader = new FileReader(f);
try {
- final SSMDeliverable current = XMLSSMModelReader.read(reader);
- try {
- current.validate();
- } catch ( final IllegalStateException ise) {
- throw new MojoExecutionException("Invalid model at " + name, ise);
+ final SSMDeliverable current = TXTSSMModelReader.read(reader, f.getAbsolutePath());
+ final Map<SSMTraceable, String> errors = new SSMValidator().validate(current);
+ if (errors != null ) {
+ throw new MojoExecutionException("Invalid model at " + name + " : " + errors);
}
result.merge(current);
} finally {
@@ -76,10 +81,9 @@ public abstract class ModelUtils {
}
}
- try {
- result.validate();
- } catch ( final IllegalStateException ise) {
- throw new MojoExecutionException("Invalid assembled model", ise);
+ final Map<SSMTraceable, String> errors = new SSMValidator().validate(result);
+ if (errors != null ) {
+ throw new MojoExecutionException("Invalid assembled model : " + errors);
}
return result;
@@ -107,10 +111,9 @@ public abstract class ModelUtils {
depModel = new SSMDeliverable();
}
final SSMDeliverable readModel = XMLSSMModelReader.read(r);
- try {
- readModel.validate();
- } catch ( final IllegalStateException ise) {
- throw new MojoExecutionException("Invalid model " + file, ise);
+ final Map<SSMTraceable, String> errors = new SSMValidator().validate(readModel);
+ if (errors != null ) {
+ throw new MojoExecutionException("Invalid model at " + file + " : " + errors);
}
depModel.merge(readModel);
} finally {
@@ -119,13 +122,16 @@ public abstract class ModelUtils {
}
final SSMDeliverable result;
if ( depModel != null ) {
- try {
- depModel.validate();
- depModel.merge(localModel);
- depModel.validate();
- } catch ( final IllegalStateException ise) {
- throw new MojoExecutionException("Invalid model.", ise);
+ Map<SSMTraceable, String> errors = new SSMValidator().validate(depModel);
+ if (errors != null ) {
+ throw new MojoExecutionException("Invalid model : " + errors);
}
+ depModel.merge(localModel);
+ errors = new SSMValidator().validate(depModel);
+ if (errors != null ) {
+ throw new MojoExecutionException("Invalid model : " + errors);
+ }
+
result = depModel;
} else {
result = localModel;
@@ -138,7 +144,7 @@ public abstract class ModelUtils {
public static SSMArtifact getBaseArtifact(final SSMDeliverable model) throws MojoExecutionException {
// get base run mode
- final SSMFeature base = model.getRunMode(SSMFeature.RUN_MODE_BASE);
+ final SSMFeature base = model.getRunMode(SSMConstants.RUN_MODE_BASE);
if ( base == null ) {
throw new MojoExecutionException("No base run mode found.");
}
@@ -148,11 +154,11 @@ public abstract class ModelUtils {
if ( base.getStartLevels().size() > 1 ) {
throw new MojoExecutionException("Base run mode should only have a single start level.");
}
- if ( base.getStartLevels().get(0).artifacts.size() != 1 ) {
+ if ( base.getStartLevels().get(0).getArtifacts().size() != 1 ) {
throw new MojoExecutionException("Base run mode should contain exactly one artifact.");
}
- return base.getStartLevels().get(0).artifacts.get(0);
+ return base.getStartLevels().get(0).getArtifacts().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 f066ad0..9d13ef3 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
@@ -18,12 +18,15 @@ package org.apache.sling.maven.slingstart;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
+import org.apache.commons.io.IOUtils;
import org.apache.felix.cm.file.ConfigurationHandler;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoExecutionException;
@@ -101,11 +104,11 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
// unpack base artifact and create settings
final File outputDir = new File(this.project.getBuild().getOutputDirectory());
- unpackBaseArtifact(model, outputDir, SSMFeature.RUN_MODE_STANDALONE);
- this.buildSettings(model, SSMFeature.RUN_MODE_STANDALONE, outputDir);
- this.buildBootstrapFile(model, SSMFeature.RUN_MODE_STANDALONE, outputDir);
+ unpackBaseArtifact(model, outputDir, SSMConstants.RUN_MODE_STANDALONE);
+ this.buildSettings(model, SSMConstants.RUN_MODE_STANDALONE, outputDir);
+ this.buildBootstrapFile(model, SSMConstants.RUN_MODE_STANDALONE, outputDir);
- this.buildContentsMap(model, SSMFeature.RUN_MODE_STANDALONE, contentsMap);
+ this.buildContentsMap(model, SSMConstants.RUN_MODE_STANDALONE, contentsMap);
}
/**
@@ -119,10 +122,10 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
// unpack base artifact and create settings
final File outputDir = new File(this.project.getBuild().getDirectory(), BuildConstants.WEBAPP_OUTDIR);
final File webappDir = new File(outputDir, "WEB-INF");
- unpackBaseArtifact(model, outputDir, SSMFeature.RUN_MODE_WEBAPP);
+ unpackBaseArtifact(model, outputDir, SSMConstants.RUN_MODE_WEBAPP);
// check for web.xml
- final SSMFeature webappRM = model.getRunMode(SSMFeature.RUN_MODE_WEBAPP);
+ final SSMFeature webappRM = model.getRunMode(SSMConstants.RUN_MODE_WEBAPP);
if ( webappRM != null ) {
final SSMConfiguration webConfig = webappRM.getConfiguration(SSMConstants.CFG_WEB_XML);
if ( webConfig != null ) {
@@ -134,10 +137,10 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
}
}
}
- this.buildSettings(model, SSMFeature.RUN_MODE_WEBAPP, webappDir);
- this.buildBootstrapFile(model, SSMFeature.RUN_MODE_WEBAPP, outputDir);
+ this.buildSettings(model, SSMConstants.RUN_MODE_WEBAPP, webappDir);
+ this.buildBootstrapFile(model, SSMConstants.RUN_MODE_WEBAPP, outputDir);
- this.buildContentsMap(model, SSMFeature.RUN_MODE_WEBAPP, contentsMap);
+ this.buildContentsMap(model, SSMConstants.RUN_MODE_WEBAPP, contentsMap);
}
}
@@ -154,7 +157,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
for(final SSMFeature feature : model.getFeatures()) {
if ( packageRunMode == null ) {
if ( feature.isSpecial()
- && !feature.isRunMode(SSMFeature.RUN_MODE_BOOT)) {
+ && !feature.isRunMode(SSMConstants.RUN_MODE_BOOT)) {
continue;
}
this.buildContentsMap(model, feature, contentsMap);
@@ -172,8 +175,8 @@ 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.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);
+ for(final SSMArtifact a : sl.getArtifacts()) {
+ final Artifact artifact = ModelUtils.getArtifact(this.project, a.getGroupId(), a.getArtifactId(), model.getValue(a.getVersion()), a.getType(), a.getClassifier());
final File artifactFile = artifact.getFile();
contentsMap.put(getPathForArtifact(sl.getLevel(), artifactFile.getName(), runMode), artifactFile);
}
@@ -212,29 +215,31 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
*/
private void buildSettings(final SSMDeliverable model, final String packageRunMode, final File outputDir)
throws MojoExecutionException {
- String settings = null;
- final SSMFeature baseRM = model.getRunMode(SSMFeature.RUN_MODE_BASE);
- if ( baseRM != null && baseRM.getSettings() != null ) {
- settings = baseRM.getSettings().properties + "\n";
- } else {
- settings = "";
+ final Properties settings = new Properties();
+ final SSMFeature baseRM = model.getRunMode(SSMConstants.RUN_MODE_BASE);
+ if ( baseRM != null ) {
+ settings.putAll(baseRM.getSettings());
}
- final SSMFeature bootRM = model.getRunMode(SSMFeature.RUN_MODE_BOOT);
- if ( bootRM != null && bootRM.getSettings() != null ) {
- settings = settings + bootRM.getSettings().properties + "\n";
+ final SSMFeature bootRM = model.getRunMode(SSMConstants.RUN_MODE_BOOT);
+ if ( bootRM != null ) {
+ settings.putAll(bootRM.getSettings());
}
final SSMFeature packageRM = model.getRunMode(packageRunMode);
- if ( packageRM != null && packageRM.getSettings() != null ) {
- settings = settings + packageRM.getSettings().properties;
+ if ( packageRM != null ) {
+ settings.putAll(packageRM.getSettings());
}
- if ( settings != null ) {
+ if ( settings.size() > 0 ) {
final File settingsFile = new File(outputDir, PROPERTIES_FILE);
getLog().debug(String.format("Creating settings at %s", settingsFile.getPath()));
+ FileWriter writer = null;
try {
- FileUtils.fileWrite(settingsFile, settings);
+ writer = new FileWriter(settingsFile);
+ settings.store(writer, null);
} catch ( final IOException ioe ) {
throw new MojoExecutionException("Unable to write properties file.", ioe);
+ } finally {
+ IOUtils.closeQuietly(writer);
}
}
}
@@ -245,7 +250,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
private void buildBootstrapFile(final SSMDeliverable model, final String packageRunMode, final File outputDir)
throws MojoExecutionException {
final StringBuilder sb = new StringBuilder();
- final SSMFeature baseRM = model.getRunMode(SSMFeature.RUN_MODE_BASE);
+ final SSMFeature baseRM = model.getRunMode(SSMConstants.RUN_MODE_BASE);
if ( baseRM != null ) {
final SSMConfiguration c = baseRM.getConfiguration(SSMConstants.CFG_BOOTSTRAP);
if ( c != null ) {
@@ -253,7 +258,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
sb.append('\n');
}
}
- final SSMFeature bootRM = model.getRunMode(SSMFeature.RUN_MODE_BOOT);
+ final SSMFeature bootRM = model.getRunMode(SSMConstants.RUN_MODE_BOOT);
if ( bootRM != null ) {
final SSMConfiguration c = bootRM.getConfiguration(SSMConstants.CFG_BOOTSTRAP);
if ( c != null ) {
@@ -287,15 +292,15 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
private Artifact getBaseArtifact(final SSMDeliverable model, final String classifier, final String type) throws MojoExecutionException {
final SSMArtifact baseArtifact = ModelUtils.getBaseArtifact(model);
- final Artifact a = ModelUtils.getArtifact(this.project, baseArtifact.groupId,
- baseArtifact.artifactId,
- model.getValue(baseArtifact.version),
+ final Artifact a = ModelUtils.getArtifact(this.project, baseArtifact.getGroupId(),
+ baseArtifact.getArtifactId(),
+ model.getValue(baseArtifact.getVersion()),
type,
classifier);
if (a == null) {
throw new MojoExecutionException(
String.format("Project doesn't have a base dependency of groupId %s and artifactId %s",
- baseArtifact.groupId, baseArtifact.artifactId));
+ baseArtifact.getGroupId(), baseArtifact.getArtifactId()));
}
return a;
}
@@ -307,7 +312,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
throws MojoExecutionException {
final String classifier;
final String type;
- if ( SSMFeature.RUN_MODE_STANDALONE.equals(packageRunMode) ) {
+ if ( SSMConstants.RUN_MODE_STANDALONE.equals(packageRunMode) ) {
classifier = BuildConstants.CLASSIFIER_APP;
type = BuildConstants.TYPE_JAR;
} else {
@@ -362,7 +367,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo {
runModeExt = sb.toString();
}
- if ( rm.isRunMode(SSMFeature.RUN_MODE_BOOT) ) {
+ if ( rm.isRunMode(SSMConstants.RUN_MODE_BOOT) ) {
return String.format("%s/%s/1/%s", BASE_DESTINATION, BOOT_DIRECTORY,
artifactName);
}
diff --git a/src/main/resources/META-INF/plexus/components.xml b/src/main/resources/META-INF/plexus/components.xml
index 8896896..29d8eaa 100644
--- a/src/main/resources/META-INF/plexus/components.xml
+++ b/src/main/resources/META-INF/plexus/components.xml
@@ -74,8 +74,8 @@
<configuration>
<type>slingsubsystem</type>
<includesDependencies>false</includesDependencies>
- <language>xml</language>
- <extension>xml</extension>
+ <language>txt</language>
+ <extension>txt</extension>
<addedToClasspath>false</addedToClasspath>
</configuration>
</component>
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.