Move io methods to helper class

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1628655 13f79535-47bb-0310-9956-ffa450edef68
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 bc53b23..aa83a69 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
@@ -17,16 +17,13 @@
 package org.apache.sling.maven.slingstart;
 
 import java.io.File;
-import java.io.IOException;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
-import org.apache.sling.provisioning.model.Model;
 
 public abstract class AbstractSlingStartMojo extends AbstractMojo {
 
@@ -45,45 +42,6 @@
     @Parameter(defaultValue="false")
     protected boolean createWebapp;
 
-    private static final String CTX_RAW = Model.class.getName() + "/r";
-    private static final String CTX_EFFECTIVE = Model.class.getName() + "/e";
-
-    /**
-     * Read the model prepared by the lifecycle plugin
-     */
-    protected Model readRawModel()
-    throws MojoExecutionException {
-        Model result = (Model)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 Model readEffectiveModel()
-    throws MojoExecutionException {
-        Model result = (Model)this.project.getContextValue(CTX_EFFECTIVE);
-        if ( result == null ) {
-            try {
-                result = ModelUtils.getEffectiveModel(this.project);
-
-                this.project.setContextValue(CTX_EFFECTIVE, result);
-            } catch ( final IOException ioe) {
-                throw new MojoExecutionException("Unable to cache model", ioe);
-            }
-        }
-        return result;
-    }
-
     protected File getTmpDir() {
         return new File(this.project.getBuild().getDirectory(), "slingstart-tmp");
     }
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 2bdefbe..be284ea 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
@@ -44,12 +44,13 @@
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
-        final Model model = this.readRawModel();
 
         final File outputFile = new File(this.project.getBuild().getDirectory() + File.separatorChar + "slingstart.txt");
         outputFile.getParentFile().mkdirs();
         Writer writer = null;
         try {
+            final Model model = ModelUtils.getRawModel(this.project);
+
             writer = new FileWriter(outputFile);
             ModelWriter.write(writer, model);
         } catch (IOException e) {
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 f1a4a15..7fe7be9 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
@@ -188,6 +188,9 @@
         return null;
     }
 
+    private static final String RAW_MODEL_TXT = Model.class.getName() + "/raw";
+    private static final String EFFECTIVE_MODEL_TXT = Model.class.getName() + "/effective";
+
     private static final String RAW_MODEL = Model.class.getName() + "/raw";
     private static final String EFFECTIVE_MODEL = Model.class.getName() + "/effective";
 
@@ -201,7 +204,7 @@
     throws IOException {
         final StringWriter w = new StringWriter();
         ModelWriter.write(w, model);
-        project.setContextValue(RAW_MODEL, w.toString());
+        project.setContextValue(RAW_MODEL_TXT, w.toString());
     }
 
     /**
@@ -211,8 +214,13 @@
      * @throws IOException If reading fails
      */
     public static Model getRawModel(final MavenProject project) throws IOException {
-        final String contents = (String)project.getContextValue(RAW_MODEL);
-        return ModelReader.read(new StringReader(contents), null);
+        Model result = (Model)project.getContextValue(RAW_MODEL);
+        if ( result == null ) {
+            final String contents = (String)project.getContextValue(RAW_MODEL_TXT);
+            result = ModelReader.read(new StringReader(contents), null);
+            project.setContextValue(RAW_MODEL, result);
+        }
+        return result;
     }
 
     /**
@@ -225,7 +233,7 @@
     throws IOException {
         final StringWriter w = new StringWriter();
         ModelWriter.write(w, model);
-        project.setContextValue(EFFECTIVE_MODEL, w.toString());
+        project.setContextValue(EFFECTIVE_MODEL_TXT, w.toString());
     }
 
     /**
@@ -235,7 +243,12 @@
      * @throws IOException If reading fails
      */
     public static Model getEffectiveModel(final MavenProject project) throws IOException {
-        final String contents = (String)project.getContextValue(EFFECTIVE_MODEL);
-        return ModelReader.read(new StringReader(contents), null);
+        Model result = (Model)project.getContextValue(EFFECTIVE_MODEL);
+        if ( result == null ) {
+            final String contents = (String)project.getContextValue(EFFECTIVE_MODEL_TXT);
+            result = ModelReader.read(new StringReader(contents), null);
+            project.setContextValue(EFFECTIVE_MODEL, result);
+        }
+        return result;
     }
 }
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 e05a27f..b2f627b 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
@@ -78,11 +78,15 @@
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
-        final Model model = this.readEffectiveModel();
+        try {
+            final Model model = ModelUtils.getEffectiveModel(this.project);
 
-        this.prepareGlobal(model);
-        this.prepareStandaloneApp(model);
-        this.prepareWebapp(model);
+            this.prepareGlobal(model);
+            this.prepareStandaloneApp(model);
+            this.prepareWebapp(model);
+        } catch ( final IOException io) {
+            throw new MojoExecutionException("Unable to read cached model.", io);
+        }
     }
 
     /**