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());
}
}