Author: apetrelli
Date: Wed Mar 17 20:21:00 2010
New Revision: 924464

URL: http://svn.apache.org/viewvc?rev=924464&view=rev
Log:
TILESSB-25
Created mojo for autotag-freemarker.

Added:
    
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
   (with props)
    
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
   (with props)
Modified:
    tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/pom.xml
    
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java

Modified: tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/pom.xml?rev=924464&r1=924463&r2=924464&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/pom.xml (original)
+++ tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/pom.xml Wed Mar 17 
20:21:00 2010
@@ -49,5 +49,10 @@
        <artifactId>maven-project</artifactId>
        <version>2.2.1</version>
     </dependency>
+    <dependency>
+       <groupId>org.apache.tiles</groupId>
+       <artifactId>tiles-autotag-freemarker</artifactId>
+       <version>1.0-SNAPSHOT</version>
+    </dependency>
   </dependencies>
 </project>

Added: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java?rev=924464&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
 Wed Mar 17 20:21:00 2010
@@ -0,0 +1,78 @@
+package org.apache.tiles.autotag.plugin;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Properties;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.tiles.autotag.model.TemplateSuite;
+import org.apache.velocity.app.Velocity;
+
+import com.thoughtworks.xstream.XStream;
+
+public abstract class AbstractGenerateMojo extends AbstractMojo {
+    static final String META_INF_TEMPLATE_SUITE_XML = 
"META-INF/template-suite.xml";
+
+    /**
+     * The project
+     *
+     * @parameter expression="${project.compileClasspathElements}"
+     * @required
+     * @readonly
+     */
+    List<String> classpathElements;
+
+    public void execute() throws MojoExecutionException {
+        try {
+            InputStream stream = findTemplateSuiteDescriptor();
+            XStream xstream = new XStream();
+            TemplateSuite suite = (TemplateSuite) xstream.fromXML(stream);
+            stream.close();
+
+            Properties props = new Properties();
+            InputStream propsStream = 
getClass().getResourceAsStream("/org/apache/tiles/autotag/velocity.properties");
+            props.load(propsStream);
+            propsStream.close();
+            Velocity.init(props);
+
+            generate(suite);
+        } catch (IOException e) {
+            throw new MojoExecutionException("error", e);
+        } catch (RuntimeException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new MojoExecutionException("error", e);
+        }
+    }
+
+    protected abstract void generate(TemplateSuite suite);
+
+    private InputStream findTemplateSuiteDescriptor() throws IOException {
+        InputStream retValue = null;
+
+        for (String path: classpathElements) {
+            File file = new File(path);
+            if (file.isDirectory()) {
+                File candidate = new File(file, META_INF_TEMPLATE_SUITE_XML);
+                if (candidate.exists()) {
+                    return new FileInputStream(candidate);
+                }
+            } else if (file.getPath().endsWith(".jar")) {
+                JarFile jar = new JarFile(file);
+                ZipEntry entry = jar.getEntry(META_INF_TEMPLATE_SUITE_XML);
+                if (entry != null) {
+                    return jar.getInputStream(entry);
+                }
+            }
+        }
+
+        return retValue;
+    }
+
+}

Propchange: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java?rev=924464&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
 Wed Mar 17 20:21:00 2010
@@ -0,0 +1,52 @@
+package org.apache.tiles.autotag.plugin;
+
+import java.io.File;
+
+import org.apache.maven.project.MavenProject;
+import org.apache.tiles.autotag.freemarker.FMModelGenerator;
+import org.apache.tiles.autotag.freemarker.FMModelRepositoryGenerator;
+import org.apache.tiles.autotag.generate.BasicTemplateGenerator;
+import org.apache.tiles.autotag.model.TemplateSuite;
+
+/**
+ * Generates Freemarker code.
+ *
+ * @goal generate-freemarker
+ *
+ * @phase generate-sources
+ * @requiresDependencyResolution compile
+ */
+public class GenerateFreemarkerMojo extends AbstractGenerateMojo {
+
+    /**
+     * Name of the package.
+     * @parameter expression="sample"
+     * @required
+     */
+    private String packageName;
+
+    /**
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    /**
+     * Location of the file.
+     *
+     * @parameter 
expression="${project.build.directory}/autotag-freemarker-classes"
+     * @required
+     */
+    private File classesOutputDirectory;
+
+    @Override
+    protected void generate(TemplateSuite suite) {
+        BasicTemplateGenerator generator = new BasicTemplateGenerator();
+        generator.addTemplateSuiteGenerator(classesOutputDirectory, new 
FMModelRepositoryGenerator());
+        generator.addTemplateClassGenerator(classesOutputDirectory, new 
FMModelGenerator());
+        generator.generate(packageName, suite);
+
+        project.addCompileSourceRoot(classesOutputDirectory.getAbsolutePath());
+    }
+}

Propchange: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java?rev=924464&r1=924463&r2=924464&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-autotag/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java
 Wed Mar 17 20:21:00 2010
@@ -17,25 +17,14 @@ package org.apache.tiles.autotag.plugin;
  */
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Properties;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
 
 import org.apache.maven.model.Resource;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
 import org.apache.tiles.autotag.generate.BasicTemplateGenerator;
 import org.apache.tiles.autotag.jsp.TLDGenerator;
 import org.apache.tiles.autotag.jsp.TagClassGenerator;
 import org.apache.tiles.autotag.model.TemplateSuite;
-import org.apache.velocity.app.Velocity;
 
-import com.thoughtworks.xstream.XStream;
 
 /**
  * Goal which touches a timestamp file.
@@ -45,8 +34,7 @@ import com.thoughtworks.xstream.XStream;
  * @phase generate-sources
  * @requiresDependencyResolution compile
  */
-public class GenerateJspMojo extends AbstractMojo {
-    private static final String META_INF_TEMPLATE_SUITE_XML = 
"META-INF/template-suite.xml";
+public class GenerateJspMojo extends AbstractGenerateMojo {
 
     /**
      * Location of the file.
@@ -79,72 +67,22 @@ public class GenerateJspMojo extends Abs
     private String taglibURI;
 
     /**
-     * The project
-     *
-     * @parameter expression="${project.compileClasspathElements}"
-     * @required
-     * @readonly
-     */
-    private List<String> classpathElements;
-
-    /**
      * @parameter expression="${project}"
      * @required
      * @readonly
      */
     private MavenProject project;
 
-    public void execute() throws MojoExecutionException {
-        try {
-            InputStream stream = findTemplateSuiteDescriptor();
-            XStream xstream = new XStream();
-            TemplateSuite suite = (TemplateSuite) xstream.fromXML(stream);
-            stream.close();
-            BasicTemplateGenerator generator = new BasicTemplateGenerator();
-            generator.addTemplateSuiteGenerator(resourcesOutputDirectory, new 
TLDGenerator());
-            generator.addTemplateClassGenerator(classesOutputDirectory, new 
TagClassGenerator());
-            suite.getCustomVariables().put("taglibURI", taglibURI);
-
-            Properties props = new Properties();
-            InputStream propsStream = 
getClass().getResourceAsStream("/org/apache/tiles/autotag/jsp/velocity.properties");
-            props.load(propsStream);
-            propsStream.close();
-            Velocity.init(props);
-
-            generator.generate(packageName, suite);
-
-            Resource resource = new Resource();
-            resource.setDirectory(resourcesOutputDirectory.getAbsolutePath());
-            project.addResource(resource);
-            
project.addCompileSourceRoot(classesOutputDirectory.getAbsolutePath());
-        } catch (IOException e) {
-            throw new MojoExecutionException("error", e);
-        } catch (RuntimeException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new MojoExecutionException("error", e);
-        }
-    }
-
-    private InputStream findTemplateSuiteDescriptor() throws IOException {
-        InputStream retValue = null;
-
-        for (String path: classpathElements) {
-            File file = new File(path);
-            if (file.isDirectory()) {
-                File candidate = new File(file, META_INF_TEMPLATE_SUITE_XML);
-                if (candidate.exists()) {
-                    return new FileInputStream(candidate);
-                }
-            } else if (file.getPath().endsWith(".jar")) {
-                JarFile jar = new JarFile(file);
-                ZipEntry entry = jar.getEntry(META_INF_TEMPLATE_SUITE_XML);
-                if (entry != null) {
-                    return jar.getInputStream(entry);
-                }
-            }
-        }
-
-        return retValue;
+    protected void generate(TemplateSuite suite) {
+        BasicTemplateGenerator generator = new BasicTemplateGenerator();
+        generator.addTemplateSuiteGenerator(resourcesOutputDirectory, new 
TLDGenerator());
+        generator.addTemplateClassGenerator(classesOutputDirectory, new 
TagClassGenerator());
+        suite.getCustomVariables().put("taglibURI", taglibURI);
+        generator.generate(packageName, suite);
+
+        Resource resource = new Resource();
+        resource.setDirectory(resourcesOutputDirectory.getAbsolutePath());
+        project.addResource(resource);
+        project.addCompileSourceRoot(classesOutputDirectory.getAbsolutePath());
     }
 }


Reply via email to