Author: cziegeler
Date: Mon Sep 29 05:55:15 2014
New Revision: 1628121
URL: http://svn.apache.org/r1628121
Log:
Cache raw and effective model and provide separate methods
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java?rev=1628121&r1=1628120&r2=1628121&view=diff
==============================================================================
---
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
(original)
+++
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
Mon Sep 29 05:55:15 2014
@@ -18,7 +18,6 @@ package org.apache.sling.maven.slingstar
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.annotati
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 AbstractSlingStart
@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);
}
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java?rev=1628121&r1=1628120&r2=1628121&view=diff
==============================================================================
---
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
(original)
+++
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
Mon Sep 29 05:55:15 2014
@@ -44,7 +44,7 @@ public class AttachSlingStartModel exten
@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();
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java?rev=1628121&r1=1628120&r2=1628121&view=diff
==============================================================================
---
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
(original)
+++
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
Mon Sep 29 05:55:15 2014
@@ -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
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 DependencyLifecycleParticip
"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);
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java?rev=1628121&r1=1628120&r2=1628121&view=diff
==============================================================================
---
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
(original)
+++
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
Mon Sep 29 05:55:15 2014
@@ -19,6 +19,8 @@ package org.apache.sling.maven.slingstar
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
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);
+ }
}
Modified:
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
URL:
http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java?rev=1628121&r1=1628120&r2=1628121&view=diff
==============================================================================
---
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
(original)
+++
sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
Mon Sep 29 05:55:15 2014
@@ -41,7 +41,6 @@ import org.apache.sling.slingstart.model
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
@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);