You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2010/03/13 14:32:33 UTC
svn commit: r922556 - in
/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker: ./
src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/tiles/ src/main/java/org/apache/tiles/autotag/
src/main/java/org/apache/tiles/autotag/freemar...
Author: apetrelli
Date: Sat Mar 13 13:32:32 2010
New Revision: 922556
URL: http://svn.apache.org/viewvc?rev=922556&view=rev
Log:
TILESSB-27
Added code generation of FreeMarker directive models.
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java (with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java (with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/repository.vm
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java (with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java (with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.javat
Modified:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/pom.xml
Modified: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/pom.xml
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/pom.xml?rev=922556&r1=922555&r2=922556&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/pom.xml (original)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/pom.xml Sat Mar 13 13:32:32 2010
@@ -10,4 +10,28 @@
<version>1.0-SNAPSHOT</version>
<name>Autotag - Freemarker support</name>
<description>Generates code for Freemarker support.</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-autotag-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-request-freemarker</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
</project>
\ No newline at end of file
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java Sat Mar 13 13:32:32 2010
@@ -0,0 +1,28 @@
+package org.apache.tiles.autotag.freemarker;
+
+import java.io.File;
+
+import org.apache.tiles.autotag.generate.AbstractTemplateClassGenerator;
+import org.apache.tiles.autotag.model.TemplateClass;
+import org.apache.tiles.autotag.model.TemplateSuite;
+
+public class FMModelGenerator extends AbstractTemplateClassGenerator {
+
+ @Override
+ protected String getDirectoryName(File directory, String packageName,
+ TemplateSuite suite, TemplateClass clazz) {
+ return packageName.replaceAll("\\.", "/");
+ }
+
+ @Override
+ protected String getFilename(File directory, String packageName,
+ TemplateSuite suite, TemplateClass clazz) {
+ return clazz.getTagClassPrefix() + "FMModel.java";
+ }
+
+ @Override
+ protected String getTemplatePath(File directory, String packageName,
+ TemplateSuite suite, TemplateClass clazz) {
+ return "/org/apache/tiles/autotag/freemarker/fmModel.vm";
+ }
+}
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java Sat Mar 13 13:32:32 2010
@@ -0,0 +1,23 @@
+package org.apache.tiles.autotag.freemarker;
+
+import java.io.File;
+
+import org.apache.tiles.autotag.generate.AbstractTemplateSuiteGenerator;
+import org.apache.tiles.autotag.model.TemplateSuite;
+
+public class FMModelRepositoryGenerator extends AbstractTemplateSuiteGenerator {
+
+ protected String getTemplatePath(File directory, String packageName, TemplateSuite suite) {
+ return "/org/apache/tiles/autotag/freemarker/repository.vm";
+ }
+
+ protected String getFilename(File directory, String packageName, TemplateSuite suite) {
+ String name = suite.getName();
+ return name.substring(0, 1).toUpperCase() + name.substring(1) + "FMModelRepository.java";
+ }
+
+ protected String getDirectoryName(File directory, String packageName, TemplateSuite suite) {
+ return packageName.replaceAll("\\.", "/");
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm Sat Mar 13 13:32:32 2010
@@ -0,0 +1,68 @@
+package ${packageName};
+#*
+ * $Id: tiles-jsp.tld 836180 2009-11-14 14:00:02Z apetrelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *#
+import java.io.IOException;
+import java.util.Map;
+
+#if(${clazz.hasBody()})
+import org.apache.tiles.autotag.core.runtime.ModelBody;
+#end
+import org.apache.tiles.freemarker.template.Body#if(!${clazz.hasBody()})less#{end}FMModel;
+import org.apache.tiles.freemarker.context.FreeMarkerUtil;
+import org.apache.tiles.request.Request;
+
+import freemarker.template.TemplateModel;
+
+/**
+#foreach($line in $stringTool.splitOnNewlines(${clazz.documentation}))
+ * ${line}
+#end
+ */
+public class ${clazz.tagClassPrefix}FMModel extends Body#if(!${clazz.hasBody()})less#{end}FMModel {
+
+ /**
+ * The template model.
+ */
+ private ${clazz.name} model;
+
+ /**
+ * Constructor.
+ *
+ * @param model
+ * The template model.
+ */
+ public ${clazz.tagClassPrefix}FMModel(${clazz.name} model) {
+ this.model = model;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void execute(Map<String, TemplateModel> parms, Request request,
+ ModelBody modelBody) throws IOException {
+ model.execute(
+#foreach($parameter in ${clazz.parameters})
+ ($stringTool.getClassToCast(${parameter.type})) FreeMarkerUtil.getAsObject(parms.get("${parameter.exportedName}"), $stringTool.getDefaultValue(${parameter.type}, ${parameter.defaultValue}));
+#end
+ request#if(${clazz.hasBody()}), modelBody#end
+
+ );
+ }
+}
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/repository.vm
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/repository.vm?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/repository.vm (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/repository.vm Sat Mar 13 13:32:32 2010
@@ -0,0 +1,59 @@
+package ${packageName};
+#*
+ * $Id: tiles-jsp.tld 836180 2009-11-14 14:00:02Z apetrelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *#
+#foreach($clazz in ${suite.getTemplateClasses()})
+import ${clazz.name};
+#end
+
+/**
+#foreach($line in $stringTool.splitOnNewlines(${suite.documentation}))
+ * $line
+#end
+ */
+public class $stringTool.capitalizeFirstLetter(${suite.name})FMModelRepository {
+
+#foreach($clazz in ${suite.getTemplateClasses()})
+ /**
+ * The "${clazz.tagName}" directive.
+ */
+ private ${clazz.tagClassPrefix}FMModel ${clazz.tagName};
+
+#end
+ /**
+ * Constructor.
+ */
+ public TilesFMModelRepository() {
+#foreach($clazz in ${suite.getTemplateClasses()})
+ ${clazz.tagName} = new ${clazz.tagClassPrefix}FMModel(new ${clazz.name}());
+#end
+ }
+#foreach($clazz in ${suite.getTemplateClasses()})
+
+ /**
+ * Returns the "${clazz.tagName}" directive.
+ *
+ * @return The "${clazz.tagName}" directive.
+ */
+ public ${clazz.tagClassPrefix}FMModel get$stringTool.capitalizeFirstLetter(${clazz.tagName})() {
+ return ${clazz.tagName};
+ }
+#end
+}
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java Sat Mar 13 13:32:32 2010
@@ -0,0 +1,119 @@
+/**
+ *
+ */
+package org.apache.tiles.autotag.freemarker;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.tiles.autotag.core.runtime.ModelBody;
+import org.apache.tiles.autotag.model.TemplateClass;
+import org.apache.tiles.autotag.model.TemplateMethod;
+import org.apache.tiles.autotag.model.TemplateParameter;
+import org.apache.tiles.autotag.model.TemplateSuite;
+import org.apache.tiles.request.Request;
+import org.apache.velocity.app.Velocity;
+import org.junit.Test;
+
+/**
+ * Tests {@link TagClassGenerator}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class FMModelGeneratorTest {
+
+ /**
+ * Test method for {@link TagClassGenerator#generate(File, String, TemplateSuite, TemplateClass)}.
+ * @throws Exception If something goes wrong.
+ */
+ @Test
+ public void testGenerate() throws Exception {
+ FMModelGenerator generator = new FMModelGenerator();
+ File file = File.createTempFile("autotag", null);
+ file.delete();
+ file.mkdir();
+ file.deleteOnExit();
+ TemplateSuite suite = new TemplateSuite("tldtest", "Test for TLD docs.");
+
+ List<TemplateParameter> params = new ArrayList<TemplateParameter>();
+ TemplateParameter param = new TemplateParameter("one", "one", "java.lang.String", null, true);
+ param.setDocumentation("Parameter one.");
+ params.add(param);
+ param = new TemplateParameter("two", "two", "int", null, false);
+ param.setDocumentation("Parameter two.");
+ params.add(param);
+ param = new TemplateParameter("three", "three", "boolean", null, false);
+ param.setDocumentation("Parameter three.");
+ params.add(param);
+ param = new TemplateParameter("request", "request", Request.class.getName(), null, false);
+ param.setDocumentation("The request.");
+ params.add(param);
+ param = new TemplateParameter("modelBody", "modelBody", ModelBody.class.getName(), null, false);
+ param.setDocumentation("The body.");
+ params.add(param);
+ TemplateMethod executeMethod = new TemplateMethod("execute", params);
+
+ TemplateClass clazz = new TemplateClass("org.apache.tiles.autotag.template.DoStuffTemplate",
+ "doStuff", "DoStuff", executeMethod);
+ clazz.setDocumentation("Documentation of the DoStuff class.");
+
+ Properties props = new Properties();
+ InputStream propsStream = getClass().getResourceAsStream("/org/apache/tiles/autotag/velocity.properties");
+ props.load(propsStream);
+ propsStream.close();
+ Velocity.init(props);
+
+ generator.generate(file, "org.apache.tiles.autotag.freemarker.test", suite, clazz);
+
+ InputStream expected = getClass().getResourceAsStream("/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat");
+ File effectiveFile = new File(file, "/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.java");
+ assertTrue(effectiveFile.exists());
+ InputStream effective = new FileInputStream(effectiveFile);
+ assertTrue(IOUtils.contentEquals(effective, expected));
+ effective.close();
+ expected.close();
+
+ suite.addTemplateClass(clazz);
+ params = new ArrayList<TemplateParameter>();
+ param = new TemplateParameter("one", "one", "java.lang.Double", null, true);
+ param.setDocumentation("Parameter one.");
+ params.add(param);
+ param = new TemplateParameter("two", "two", "float", null, false);
+ param.setDocumentation("Parameter two.");
+ params.add(param);
+ param = new TemplateParameter("three", "three", "java.util.Date", null, false);
+ param.setDocumentation("Parameter three.");
+ params.add(param);
+ param = new TemplateParameter("request", "request", Request.class.getName(), null, false);
+ param.setDocumentation("The request.");
+ params.add(param);
+ executeMethod = new TemplateMethod("execute", params);
+
+ clazz = new TemplateClass("org.apache.tiles.autotag.template.DoStuffNoBodyTemplate",
+ "doStuffNoBody", "DoStuffNoBody", executeMethod);
+ clazz.setDocumentation("Documentation of the DoStuffNoBody class.");
+
+ suite.addTemplateClass(clazz);
+
+ generator.generate(file, "org.apache.tiles.autotag.freemarker.test", suite, clazz);
+
+ expected = getClass().getResourceAsStream("/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat");
+ effectiveFile = new File(file, "/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.java");
+ assertTrue(effectiveFile.exists());
+ effective = new FileInputStream(effectiveFile);
+ assertTrue(IOUtils.contentEquals(effective, expected));
+ effective.close();
+ expected.close();
+
+ FileUtils.deleteDirectory(file);
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java Sat Mar 13 13:32:32 2010
@@ -0,0 +1,109 @@
+/**
+ *
+ */
+package org.apache.tiles.autotag.freemarker;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.tiles.autotag.core.runtime.ModelBody;
+import org.apache.tiles.autotag.model.TemplateClass;
+import org.apache.tiles.autotag.model.TemplateMethod;
+import org.apache.tiles.autotag.model.TemplateParameter;
+import org.apache.tiles.autotag.model.TemplateSuite;
+import org.apache.tiles.request.Request;
+import org.apache.velocity.app.Velocity;
+import org.junit.Test;
+
+/**
+ * Tests {@link TLDGenerator}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class FMModelRepositoryGeneratorTest {
+
+ /**
+ * Test method for {@link org.apache.tiles.autotag.jsp.TLDGenerator#generate(java.io.File, java.lang.String, org.apache.tiles.autotag.model.TemplateSuite)}.
+ * @throws Exception If something goes wrong.
+ */
+ @Test
+ public void testGenerate() throws Exception {
+ FMModelRepositoryGenerator generator = new FMModelRepositoryGenerator();
+ File file = File.createTempFile("autotag", null);
+ file.delete();
+ file.mkdir();
+ file.deleteOnExit();
+ TemplateSuite suite = new TemplateSuite("tldtest", "Test for TLD docs.");
+
+ List<TemplateParameter> params = new ArrayList<TemplateParameter>();
+ TemplateParameter param = new TemplateParameter("one", "one", "java.lang.String", null, true);
+ param.setDocumentation("Parameter one.");
+ params.add(param);
+ param = new TemplateParameter("two", "two", "int", null, false);
+ param.setDocumentation("Parameter two.");
+ params.add(param);
+ param = new TemplateParameter("three", "three", "long", null, false);
+ param.setDocumentation("Parameter three.");
+ params.add(param);
+ param = new TemplateParameter("request", "request", Request.class.getName(), null, false);
+ param.setDocumentation("The request.");
+ params.add(param);
+ param = new TemplateParameter("modelBody", "modelBody", ModelBody.class.getName(), null, false);
+ param.setDocumentation("The body.");
+ params.add(param);
+ TemplateMethod executeMethod = new TemplateMethod("execute", params);
+
+ TemplateClass clazz = new TemplateClass("org.apache.tiles.autotag.template.DoStuffTemplate",
+ "doStuff", "DoStuff", executeMethod);
+ clazz.setDocumentation("Documentation of the DoStuff class");
+
+ suite.addTemplateClass(clazz);
+ params = new ArrayList<TemplateParameter>();
+ param = new TemplateParameter("one", "one", "java.lang.Double", null, true);
+ param.setDocumentation("Parameter one.");
+ params.add(param);
+ param = new TemplateParameter("two", "two", "float", null, false);
+ param.setDocumentation("Parameter two.");
+ params.add(param);
+ param = new TemplateParameter("three", "three", "java.util.Date", null, false);
+ param.setDocumentation("Parameter three.");
+ params.add(param);
+ param = new TemplateParameter("request", "request", Request.class.getName(), null, false);
+ param.setDocumentation("The request.");
+ params.add(param);
+ executeMethod = new TemplateMethod("execute", params);
+
+ clazz = new TemplateClass("org.apache.tiles.autotag.template.DoStuffNoBodyTemplate",
+ "doStuffNoBody", "DoStuffNoBody", executeMethod);
+ clazz.setDocumentation("Documentation of the DoStuffNoBody class");
+
+ suite.addTemplateClass(clazz);
+
+ Properties props = new Properties();
+ InputStream propsStream = getClass().getResourceAsStream("/org/apache/tiles/autotag/velocity.properties");
+ props.load(propsStream);
+ propsStream.close();
+ Velocity.init(props);
+
+ generator.generate(file, "org.apache.tiles.autotag.freemarker.test", suite);
+
+ InputStream expected = getClass().getResourceAsStream("/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.javat");
+ File effectiveFile = new File(file, "/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.java");
+ assertTrue(effectiveFile.exists());
+ InputStream effective = new FileInputStream(effectiveFile);
+ assertTrue(IOUtils.contentEquals(effective, expected));
+ effective.close();
+ expected.close();
+
+ FileUtils.deleteDirectory(file);
+ }
+
+}
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat Sat Mar 13 13:32:32 2010
@@ -0,0 +1,44 @@
+package org.apache.tiles.autotag.freemarker.test;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.apache.tiles.autotag.core.runtime.ModelBody;
+import org.apache.tiles.freemarker.template.BodyFMModel;
+import org.apache.tiles.freemarker.context.FreeMarkerUtil;
+import org.apache.tiles.request.Request;
+
+import freemarker.template.TemplateModel;
+
+/**
+ * Documentation of the DoStuff class.
+ */
+public class DoStuffFMModel extends BodyFMModel {
+
+ /**
+ * The template model.
+ */
+ private org.apache.tiles.autotag.template.DoStuffTemplate model;
+
+ /**
+ * Constructor.
+ *
+ * @param model
+ * The template model.
+ */
+ public DoStuffFMModel(org.apache.tiles.autotag.template.DoStuffTemplate model) {
+ this.model = model;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void execute(Map<String, TemplateModel> parms, Request request,
+ ModelBody modelBody) throws IOException {
+ model.execute(
+ (java.lang.String) FreeMarkerUtil.getAsObject(parms.get("one"), null);
+ (java.lang.Integer) FreeMarkerUtil.getAsObject(parms.get("two"), 0);
+ (java.lang.Boolean) FreeMarkerUtil.getAsObject(parms.get("three"), false);
+ request, modelBody
+ );
+ }
+}
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat Sat Mar 13 13:32:32 2010
@@ -0,0 +1,43 @@
+package org.apache.tiles.autotag.freemarker.test;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.apache.tiles.freemarker.template.BodylessFMModel;
+import org.apache.tiles.freemarker.context.FreeMarkerUtil;
+import org.apache.tiles.request.Request;
+
+import freemarker.template.TemplateModel;
+
+/**
+ * Documentation of the DoStuffNoBody class.
+ */
+public class DoStuffNoBodyFMModel extends BodylessFMModel {
+
+ /**
+ * The template model.
+ */
+ private org.apache.tiles.autotag.template.DoStuffNoBodyTemplate model;
+
+ /**
+ * Constructor.
+ *
+ * @param model
+ * The template model.
+ */
+ public DoStuffNoBodyFMModel(org.apache.tiles.autotag.template.DoStuffNoBodyTemplate model) {
+ this.model = model;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void execute(Map<String, TemplateModel> parms, Request request,
+ ModelBody modelBody) throws IOException {
+ model.execute(
+ (java.lang.Double) FreeMarkerUtil.getAsObject(parms.get("one"), null);
+ (java.lang.Float) FreeMarkerUtil.getAsObject(parms.get("two"), 0.0f);
+ (java.util.Date) FreeMarkerUtil.getAsObject(parms.get("three"), null);
+ request
+ );
+ }
+}
Added: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.javat
URL: http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.javat?rev=922556&view=auto
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.javat (added)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/TldtestFMModelRepository.javat Sat Mar 13 13:32:32 2010
@@ -0,0 +1,46 @@
+package org.apache.tiles.autotag.freemarker.test;
+
+import org.apache.tiles.autotag.template.DoStuffTemplate;
+import org.apache.tiles.autotag.template.DoStuffNoBodyTemplate;
+
+/**
+ * Test for TLD docs.
+ */
+public class TldtestFMModelRepository {
+
+ /**
+ * The "doStuff" directive.
+ */
+ private DoStuffFMModel doStuff;
+
+ /**
+ * The "doStuffNoBody" directive.
+ */
+ private DoStuffNoBodyFMModel doStuffNoBody;
+
+ /**
+ * Constructor.
+ */
+ public TilesFMModelRepository() {
+ doStuff = new DoStuffFMModel(new org.apache.tiles.autotag.template.DoStuffTemplate());
+ doStuffNoBody = new DoStuffNoBodyFMModel(new org.apache.tiles.autotag.template.DoStuffNoBodyTemplate());
+ }
+
+ /**
+ * Returns the "doStuff" directive.
+ *
+ * @return The "doStuff" directive.
+ */
+ public DoStuffFMModel getDoStuff() {
+ return doStuff;
+ }
+
+ /**
+ * Returns the "doStuffNoBody" directive.
+ *
+ * @return The "doStuffNoBody" directive.
+ */
+ public DoStuffNoBodyFMModel getDoStuffNoBody() {
+ return doStuffNoBody;
+ }
+}