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 c360a20c48aa9b19da7cd76c41bfb16782d03b1a Author: Carsten Ziegeler <[email protected]> AuthorDate: Mon Sep 29 05:55:15 2014 +0000 Cache raw and effective model and provide separate methods git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/maven/slingstart-maven-plugin@1628121 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/slingstart/AbstractSlingStartMojo.java | 32 ++++++++++--- .../maven/slingstart/AttachSlingStartModel.java | 2 +- .../slingstart/DependencyLifecycleParticipant.java | 10 ++-- .../apache/sling/maven/slingstart/ModelUtils.java | 54 ++++++++++++++++++++++ .../sling/maven/slingstart/PreparePackageMojo.java | 3 +- 5 files changed, 85 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java b/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java index c7b541d..0a48c1c 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java +++ b/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java @@ -18,7 +18,6 @@ package org.apache.sling.maven.slingstart; import java.io.File; import java.io.IOException; -import java.io.StringReader; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; @@ -28,7 +27,6 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProjectHelper; import org.apache.sling.slingstart.model.SSMDeliverable; -import org.apache.sling.slingstart.model.txt.TXTSSMModelReader; public abstract class AbstractSlingStartMojo extends AbstractMojo { @@ -47,18 +45,38 @@ public abstract class AbstractSlingStartMojo extends AbstractMojo { @Parameter(defaultValue="false") protected boolean createWebapp; + private static final String CTX_RAW = SSMDeliverable.class.getName() + "/r"; + private static final String CTX_EFFECTIVE = SSMDeliverable.class.getName() + "/e"; + + /** + * Read the model prepared by the lifecycle plugin + */ + protected SSMDeliverable readRawModel() + throws MojoExecutionException { + SSMDeliverable result = (SSMDeliverable)this.project.getContextValue(CTX_RAW); + if ( result == null ) { + try { + result = ModelUtils.getRawModel(this.project); + + this.project.setContextValue(CTX_RAW, result); + } catch ( final IOException ioe) { + throw new MojoExecutionException("Unable to cache model", ioe); + } + } + return result; + } + /** * Read the model prepared by the lifecycle plugin */ - protected SSMDeliverable readModel() + protected SSMDeliverable readEffectiveModel() throws MojoExecutionException { - SSMDeliverable result = (SSMDeliverable)this.project.getContextValue(SSMDeliverable.class.getName()); + SSMDeliverable result = (SSMDeliverable)this.project.getContextValue(CTX_EFFECTIVE); if ( result == null ) { try { - final String contents = (String)this.project.getContextValue(SSMDeliverable.class.getName() + "/text"); - result = TXTSSMModelReader.read(new StringReader(contents), null); + result = ModelUtils.getEffectiveModel(this.project); - this.project.setContextValue(SSMDeliverable.class.getName(), result); + this.project.setContextValue(CTX_EFFECTIVE, result); } catch ( final IOException ioe) { throw new MojoExecutionException("Unable to cache model", ioe); } 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 97f4dc6..be35ad5 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java +++ b/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java @@ -44,7 +44,7 @@ public class AttachSlingStartModel extends AbstractSlingStartMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { - final SSMDeliverable model = this.readModel(); + final SSMDeliverable model = this.readRawModel(); final File outputFile = new File(this.project.getBuild().getDirectory() + File.separatorChar + "slingstart.txt"); outputFile.getParentFile().mkdirs(); 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 8e5d811..09140c6 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java +++ b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java @@ -17,7 +17,6 @@ package org.apache.sling.maven.slingstart; import java.io.File; -import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -42,7 +41,6 @@ import org.apache.sling.slingstart.model.SSMDeliverable; import org.apache.sling.slingstart.model.SSMFeature; import org.apache.sling.slingstart.model.SSMStartLevel; import org.apache.sling.slingstart.model.SSMUtil; -import org.apache.sling.slingstart.model.txt.TXTSSMModelWriter; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.Logger; @@ -113,11 +111,11 @@ public class DependencyLifecycleParticipant extends AbstractMavenLifecyclePartic "systemsDirectory", new File(project.getBasedir(), "src/main/systems").getAbsolutePath()); final SSMDeliverable model = ModelUtils.readFullModel(new File(directory), dependencies, project, session, log); - final StringWriter w = new StringWriter(); - TXTSSMModelWriter.write(w, model); - project.setContextValue(SSMDeliverable.class.getName() + "/text", w.toString()); + ModelUtils.storeRawModel(project, model); - final SSMDeliverable effectiveModel = SSMUtil.getEffectiveModel(model); + final SSMDeliverable effectiveModel = SSMUtil.getEffectiveModel(model, null); + + ModelUtils.storeEffectiveModel(project, effectiveModel); // start with base artifact final SSMArtifact base = ModelUtils.getBaseArtifact(effectiveModel); 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 0b79a9e..7fa192c 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java +++ b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java @@ -19,6 +19,8 @@ package org.apache.sling.maven.slingstart; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -38,6 +40,7 @@ import org.apache.sling.slingstart.model.SSMMerger; 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.txt.TXTSSMModelWriter; import org.codehaus.plexus.logging.Logger; public abstract class ModelUtils { @@ -182,4 +185,55 @@ public abstract class ModelUtils { } return null; } + + private static final String RAW_MODEL = SSMDeliverable.class.getName() + "/raw"; + private static final String EFFECTIVE_MODEL = SSMDeliverable.class.getName() + "/effective"; + + /** + * Store the raw model in the project. + * @param project The maven project + * @param model The model + * @throws IOException If writing fails + */ + public static void storeRawModel(final MavenProject project, final SSMDeliverable model) + throws IOException { + final StringWriter w = new StringWriter(); + TXTSSMModelWriter.write(w, model); + project.setContextValue(RAW_MODEL, w.toString()); + } + + /** + * Get the raw model from the project + * @param project The maven projet + * @return The raw model + * @throws IOException If reading fails + */ + public static SSMDeliverable getRawModel(final MavenProject project) throws IOException { + final String contents = (String)project.getContextValue(RAW_MODEL); + return TXTSSMModelReader.read(new StringReader(contents), null); + } + + /** + * Store the effective model in the project. + * @param project The maven project + * @param model The model + * @throws IOException If writing fails + */ + public static void storeEffectiveModel(final MavenProject project, final SSMDeliverable model) + throws IOException { + final StringWriter w = new StringWriter(); + TXTSSMModelWriter.write(w, model); + project.setContextValue(EFFECTIVE_MODEL, w.toString()); + } + + /** + * Get the effective model from the project + * @param project The maven projet + * @return The raw model + * @throws IOException If reading fails + */ + public static SSMDeliverable getEffectiveModel(final MavenProject project) throws IOException { + final String contents = (String)project.getContextValue(EFFECTIVE_MODEL); + return TXTSSMModelReader.read(new StringReader(contents), null); + } } 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 9b7cc6b..e9b5277 100644 --- a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java +++ b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java @@ -41,7 +41,6 @@ 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; -import org.apache.sling.slingstart.model.SSMUtil; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.UnArchiver; import org.codehaus.plexus.archiver.manager.ArchiverManager; @@ -79,7 +78,7 @@ public class PreparePackageMojo extends AbstractSlingStartMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { - final SSMDeliverable model = SSMUtil.getEffectiveModel(this.readModel()); + final SSMDeliverable model = this.readEffectiveModel(); this.prepareGlobal(model); this.prepareStandaloneApp(model); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
