Author: apetrelli
Date: Tue Feb 2 10:36:27 2010
New Revision: 905568
URL: http://svn.apache.org/viewvc?rev=905568&view=rev
Log:
TILESSB-21
Added code that uses QDox to create the model.
Removed Antlr stuff and dependency on Java compiler tools.
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java
(with props)
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java
(with props)
Removed:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/antlr3/
Modified:
tiles/sandbox/trunk/tiles-autotag/pom.xml
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/pom.xml
Modified: tiles/sandbox/trunk/tiles-autotag/pom.xml
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/pom.xml?rev=905568&r1=905567&r2=905568&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/pom.xml (original)
+++ tiles/sandbox/trunk/tiles-autotag/pom.xml Tue Feb 2 10:36:27 2010
@@ -1,17 +1,32 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>tiles-master</artifactId>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>tiles-master</artifactId>
+ <groupId>org.apache.tiles</groupId>
+ <version>1</version>
+ </parent>
<groupId>org.apache.tiles</groupId>
- <version>1</version>
- </parent>
- <groupId>org.apache.tiles</groupId>
- <artifactId>tiles-autotag</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>Autotags</name>
- <description>Automatic generation of tags.</description>
- <modules>
- <module>tiles-autotag-core</module>
- </modules>
-</project>
\ No newline at end of file
+ <artifactId>tiles-autotag</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <name>Autotags</name>
+ <description>Automatic generation of tags.</description>
+ <modules>
+ <module>tiles-autotag-core</module>
+ </modules>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
Modified: tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/pom.xml
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/pom.xml?rev=905568&r1=905567&r2=905568&view=diff
==============================================================================
--- tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/pom.xml (original)
+++ tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/pom.xml Tue Feb 2
10:36:27 2010
@@ -12,33 +12,33 @@
<name>Autotag - Core</name>
<description>Core classes for Autotag.</description>
<build>
- <plugins>
- <plugin>
- <groupId>org.antlr</groupId>
- <artifactId>antlr3-maven-plugin</artifactId>
- <version>3.2</version>
- <configuration>
- <includes>
- <include>Java.g</include>
- </includes>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>antlr</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
+ <resources>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/java</directory>
+ <includes>
+
<include>org/apache/tiles/autotag/core/internal/*.java</include>
+ </includes>
+ </testResource>
+ </testResources>
</build>
<dependencies>
<dependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr-runtime</artifactId>
- <version>3.2</version>
- <type>jar</type>
- <scope>compile</scope>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.7</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.qdox</groupId>
+ <artifactId>qdox</artifactId>
+ <version>1.10.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-request-api</artifactId>
+ <version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,20 @@
+package org.apache.tiles.autotag.core;
+
+public class AutotagRuntimeException extends RuntimeException {
+
+ public AutotagRuntimeException() {
+ }
+
+ public AutotagRuntimeException(String message) {
+ super(message);
+ }
+
+ public AutotagRuntimeException(Throwable cause) {
+ super(cause);
+ }
+
+ public AutotagRuntimeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,20 @@
+package org.apache.tiles.autotag.core;
+
+public class ClassParseException extends AutotagRuntimeException {
+
+ public ClassParseException() {
+ }
+
+ public ClassParseException(String message) {
+ super(message);
+ }
+
+ public ClassParseException(Throwable cause) {
+ super(cause);
+ }
+
+ public ClassParseException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,135 @@
+package org.apache.tiles.autotag.core;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+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.autotag.model.TemplateSuiteFactory;
+import org.apache.tiles.request.Request;
+
+import com.thoughtworks.qdox.JavaDocBuilder;
+import com.thoughtworks.qdox.model.DocletTag;
+import com.thoughtworks.qdox.model.JavaClass;
+import com.thoughtworks.qdox.model.JavaMethod;
+import com.thoughtworks.qdox.model.JavaParameter;
+import com.thoughtworks.qdox.model.Type;
+
+public class QDoxTemplateSuiteFactory implements TemplateSuiteFactory {
+
+ private JavaDocBuilder builder;
+
+ private String suiteName;
+
+ private String suiteDocumentation;
+
+ public QDoxTemplateSuiteFactory(File...sourceFiles) {
+ builder = new JavaDocBuilder();
+ try {
+ for (File file : sourceFiles) {
+ builder.addSource(file);
+ }
+ } catch (IOException e) {
+ throw new ClassParseException("I/O Exception when adding source
files", e);
+ }
+ }
+
+ public QDoxTemplateSuiteFactory(URL... urls) {
+ builder = new JavaDocBuilder();
+ try {
+ for (URL url: urls) {
+ builder.addSource(url);
+ }
+ } catch (IOException e) {
+ throw new ClassParseException("I/O Exception when adding source
files", e);
+ }
+ }
+
+ public void setSuiteName(String suiteName) {
+ this.suiteName = suiteName;
+ }
+
+ public void setSuiteDocumentation(String suiteDocumentation) {
+ this.suiteDocumentation = suiteDocumentation;
+ }
+
+ @Override
+ public TemplateSuite createTemplateSuite() {
+ List<TemplateClass> classes = new ArrayList<TemplateClass>();
+ for (JavaClass clazz : builder.getClasses()) {
+ TemplateMethod startMethod = null;
+ TemplateMethod endMethod = null;
+ TemplateMethod executeMethod = null;
+ for (JavaMethod method : clazz.getMethods()) {
+ if (isFeasible(method)) {
+ if ("start".equals(method.getName())) {
+ TemplateMethod templateMethod = createMethod(method);
+ startMethod = templateMethod;
+ } else if ("end".equals(method.getName())) {
+ endMethod = createMethod(method);
+ } else if ("execute".equals(method.getName())) {
+ executeMethod = createMethod(method);
+ }
+ }
+ }
+ if ((startMethod != null && endMethod != null)
+ || executeMethod != null) {
+ TemplateClass templateClass = new TemplateClass(
+ clazz.getFullyQualifiedName(), startMethod, endMethod,
executeMethod);
+ templateClass.setDocumentation(clazz.getComment());
+ classes.add(templateClass);
+ }
+ }
+ return new TemplateSuite(suiteName, suiteDocumentation, classes);
+ }
+
+ private TemplateMethod createMethod(JavaMethod method) {
+ List<TemplateParameter> params = new ArrayList<TemplateParameter>();
+ for (JavaParameter parameter : method.getParameters()) {
+ TemplateParameter templateParameter = new TemplateParameter(
+ parameter.getName(), parameter.getType()
+ .getFullyQualifiedName(), false, false);
+ params.add(templateParameter);
+ }
+ TemplateMethod templateMethod = new TemplateMethod(method.getName(),
+ params);
+ templateMethod.setDocumentation(method.getComment());
+ DocletTag[] tags = method.getTagsByName("param");
+ for (DocletTag tag : tags) {
+ String[] tagParams = tag.getParameters();
+ if (tagParams.length > 0) {
+ TemplateParameter templateParameter = templateMethod
+ .getParameterByName(tagParams[0]);
+ if (templateParameter != null) {
+ String tagValue = tag.getValue();
+ int pos = tagValue.indexOf(" ");
+ templateParameter.setDocumentation(tagValue.substring(pos)
+ .trim());
+ }
+ }
+ }
+ return templateMethod;
+ }
+
+ private boolean isFeasible(JavaMethod method) {
+ Type returns = method.getReturns();
+ if (returns != null && "void".equals(returns.getFullyQualifiedName())
+ && method.isPublic() && !method.isStatic()
+ && !method.isAbstract() && !method.isConstructor()) {
+ JavaParameter[] params = method.getParameters();
+ if (params.length > 0) {
+ JavaParameter param = params[params.length - 1];
+ if (Request.class.getName().equals(
+ param.getType().getFullyQualifiedName())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,59 @@
+package org.apache.tiles.autotag.model;
+
+public class TemplateClass {
+
+ private String name;
+
+ private String documentation;
+
+ private TemplateMethod startMethod;
+
+ private TemplateMethod endMethod;
+
+ private TemplateMethod executeMethod;
+
+ public TemplateClass(String name) {
+ this(name, null, null, null);
+ }
+
+ public TemplateClass(String name,
+ TemplateMethod startMethod, TemplateMethod endMethod,
+ TemplateMethod executeMethod) {
+ this.name = name;
+ this.startMethod = startMethod;
+ this.endMethod = endMethod;
+ this.executeMethod = executeMethod;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDocumentation() {
+ return documentation;
+ }
+
+ public void setDocumentation(String documentation) {
+ this.documentation = documentation;
+ }
+
+ public TemplateMethod getStartMethod() {
+ return startMethod;
+ }
+
+ public TemplateMethod getEndMethod() {
+ return endMethod;
+ }
+
+ public TemplateMethod getExecuteMethod() {
+ return executeMethod;
+ }
+
+ @Override
+ public String toString() {
+ return "TemplateClass\n[documentation=" + documentation +
",\nendMethod="
+ + endMethod + ",\nexecuteMethod=" + executeMethod + ",\nname="
+ + name + ",\nstartMethod=" + startMethod + "]";
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,50 @@
+package org.apache.tiles.autotag.model;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class TemplateMethod {
+
+ private String name;
+
+ private String documentation;
+
+ private Map<String, TemplateParameter> parameters;
+
+ public TemplateMethod(String name,
+ Iterable<? extends TemplateParameter> parameters) {
+ this.name = name;
+ this.parameters = new LinkedHashMap<String, TemplateParameter>();
+ for (TemplateParameter parameter : parameters) {
+ this.parameters.put(parameter.getName(), parameter);
+ }
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDocumentation() {
+ return documentation;
+ }
+
+ public void setDocumentation(String documentation) {
+ this.documentation = documentation;
+ }
+
+ public Collection<TemplateParameter> getParameters() {
+ return parameters.values();
+ }
+
+ public TemplateParameter getParameterByName(String name) {
+ return parameters.get(name);
+ }
+
+ @Override
+ public String toString() {
+ return "TemplateMethod\n[documentation=" + documentation + ", name="
+ + name + ", parameters=\n" + parameters + "]";
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,54 @@
+package org.apache.tiles.autotag.model;
+
+public class TemplateParameter {
+
+ private String name;
+
+ private String documentation;
+
+ private String type;
+
+ private boolean required;
+
+ private boolean body;
+
+ public TemplateParameter(String name, String type, boolean required,
+ boolean body) {
+ this.name = name;
+ this.type = type;
+ this.required = required;
+ this.body = body;
+ }
+
+ public String getDocumentation() {
+ return documentation;
+ }
+
+ public void setDocumentation(String documentation) {
+ this.documentation = documentation;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public boolean isRequired() {
+ return required;
+ }
+
+ public boolean isBody() {
+ return body;
+ }
+
+ @Override
+ public String toString() {
+ return "TemplateParameter\n[body=" + body + ",\ndocumentation="
+ + documentation + ",\nname=" + name + ", required=" + required
+ + ", type=" + type + "]";
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,57 @@
+package org.apache.tiles.autotag.model;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class TemplateSuite {
+
+ private String name;
+
+ private String documentation;
+
+ Map<String, TemplateClass> templateClasses;
+
+ public TemplateSuite(String name, String documentation) {
+ this(name, documentation, null);
+ }
+
+ public TemplateSuite(String name, String documentation,
+ Iterable<? extends TemplateClass> classes) {
+ this.name = name;
+ this.documentation = documentation;
+ templateClasses = new LinkedHashMap<String, TemplateClass>();
+ if (classes != null) {
+ for (TemplateClass templateClass : classes) {
+ templateClasses.put(templateClass.getName(), templateClass);
+ }
+ }
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDocumentation() {
+ return documentation;
+ }
+
+ public void addTemplateClass(TemplateClass clazz) {
+ templateClasses.put(clazz.getName(), clazz);
+ }
+
+ public Collection<TemplateClass> getTemplateClasses() {
+ return templateClasses.values();
+ }
+
+ public TemplateClass getTemplateClassByName(String name) {
+ return templateClasses.get(name);
+ }
+
+ @Override
+ public String toString() {
+ return "TemplateSuite\n[documentation=" + documentation + ", name="
+ + name + ", templateClasses=\n" + templateClasses + "]";
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,7 @@
+package org.apache.tiles.autotag.model;
+
+
+public interface TemplateSuiteFactory {
+
+ TemplateSuite createTemplateSuite();
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/model/TemplateSuiteFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,124 @@
+/**
+ *
+ */
+package org.apache.tiles.autotag.core;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tiles.autotag.core.internal.ExampleExecutableTemplate;
+import org.apache.tiles.autotag.core.internal.ExampleTemplate;
+import org.apache.tiles.autotag.core.internal.NotFeasibleExampleTemplate;
+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.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests {...@link QDoxTemplateSuiteFactory}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class QDoxTemplateSuiteFactoryTest {
+
+ private QDoxTemplateSuiteFactory factory;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() {
+ factory = new
QDoxTemplateSuiteFactory(getClass().getResource("/org/apache/tiles/autotag/core/internal/ExampleTemplate.java"),
+
getClass().getResource("/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java"),
+
getClass().getResource("/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java"));
+ factory.setSuiteName("The suite name");
+ factory.setSuiteDocumentation("This are the docs");
+ }
+
+ /**
+ * Test method for {...@link
org.apache.tiles.autotag.core.DefaultTemplateSuiteFactory#createTemplateSuite()}.
+ */
+ @Test
+ public void testCreateTemplateSuite() {
+ TemplateSuite suite = factory.createTemplateSuite();
+ assertEquals("The suite name", suite.getName());
+ assertEquals("This are the docs", suite.getDocumentation());
+ assertEquals(2, suite.getTemplateClasses().size());
+
+ TemplateClass templateClass =
suite.getTemplateClassByName(ExampleTemplate.class.getName());
+ assertNotNull(templateClass);
+ assertEquals(ExampleTemplate.class.getName(), templateClass.getName());
+ assertEquals("Example start/stop template.",
templateClass.getDocumentation());
+ assertNull(templateClass.getExecuteMethod());
+ TemplateMethod templateMethod = templateClass.getStartMethod();
+ assertNotNull(templateMethod);
+ assertEquals("start", templateMethod.getName());
+ assertEquals("It starts.", templateMethod.getDocumentation());
+ List<TemplateParameter> parameters = new
ArrayList<TemplateParameter>(templateMethod.getParameters());
+ assertEquals(3, parameters.size());
+ TemplateParameter parameter = parameters.get(0);
+ assertEquals("one", parameter.getName());
+ assertEquals("java.lang.String", parameter.getType());
+ assertEquals("Parameter one.", parameter.getDocumentation());
+ parameter = parameters.get(1);
+ assertEquals("two", parameter.getName());
+ assertEquals("int", parameter.getType());
+ assertEquals("Parameter two.", parameter.getDocumentation());
+ parameter = parameters.get(2);
+ assertEquals("request", parameter.getName());
+ assertEquals(Request.class.getName(), parameter.getType());
+ assertEquals("The request.", parameter.getDocumentation());
+
+ templateMethod = templateClass.getEndMethod();
+ assertNotNull(templateMethod);
+ assertEquals("end", templateMethod.getName());
+ assertEquals("It ends.", templateMethod.getDocumentation());
+ parameters = new
ArrayList<TemplateParameter>(templateMethod.getParameters());
+ assertEquals(3, parameters.size());
+ parameter = parameters.get(0);
+ assertEquals("three", parameter.getName());
+ assertEquals("java.lang.Double", parameter.getType());
+ assertEquals("Parameter three.", parameter.getDocumentation());
+ parameter = parameters.get(1);
+ assertEquals("four", parameter.getName());
+ assertEquals("long", parameter.getType());
+ assertEquals("Parameter four.", parameter.getDocumentation());
+ parameter = parameters.get(2);
+ assertEquals("request", parameter.getName());
+ assertEquals(Request.class.getName(), parameter.getType());
+ assertEquals("The request.", parameter.getDocumentation());
+
+ templateClass =
suite.getTemplateClassByName(ExampleExecutableTemplate.class.getName());
+ assertNotNull(templateClass);
+ assertEquals(ExampleExecutableTemplate.class.getName(),
templateClass.getName());
+ assertEquals("Example executable template.",
templateClass.getDocumentation());
+ assertNull(templateClass.getStartMethod());
+ assertNull(templateClass.getEndMethod());
+ templateMethod = templateClass.getExecuteMethod();
+ assertNotNull(templateMethod);
+ assertEquals("execute", templateMethod.getName());
+ assertEquals("It executes.", templateMethod.getDocumentation());
+ parameters = new
ArrayList<TemplateParameter>(templateMethod.getParameters());
+ assertEquals(3, parameters.size());
+ parameter = parameters.get(0);
+ assertEquals("one", parameter.getName());
+ assertEquals("java.lang.String", parameter.getType());
+ assertEquals("Parameter one.", parameter.getDocumentation());
+ parameter = parameters.get(1);
+ assertEquals("two", parameter.getName());
+ assertEquals("int", parameter.getType());
+ assertEquals("Parameter two.", parameter.getDocumentation());
+ parameter = parameters.get(2);
+ assertEquals("request", parameter.getName());
+ assertEquals(Request.class.getName(), parameter.getType());
+ assertEquals("The request.", parameter.getDocumentation());
+
+
assertNull(suite.getTemplateClassByName(NotFeasibleExampleTemplate.class.getName()));
+ }
+
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/QDoxTemplateSuiteFactoryTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,22 @@
+package org.apache.tiles.autotag.core.internal;
+
+import org.apache.tiles.request.Request;
+
+/**
+ * Example executable template.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ExampleExecutableTemplate {
+
+ /**
+ * It executes.
+ *
+ * @param one Parameter one.
+ * @param two Parameter two.
+ * @param request The request.
+ */
+ public void execute(String one, int two, Request request) {
+ // Does nothing.
+ }
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleExecutableTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,33 @@
+package org.apache.tiles.autotag.core.internal;
+
+import org.apache.tiles.request.Request;
+
+/**
+ * Example start/stop template.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ExampleTemplate {
+
+ /**
+ * It starts.
+ *
+ * @param one Parameter one.
+ * @param two Parameter two.
+ * @param request The request.
+ */
+ public void start(String one, int two, Request request) {
+ // Does nothing.
+ }
+
+ /**
+ * It ends.
+ *
+ * @param three Parameter three.
+ * @param four Parameter four.
+ * @param request The request.
+ */
+ public void end(Double three, long four, Request request) {
+ // Does nothing.
+ }
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/ExampleTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java
URL:
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java?rev=905568&view=auto
==============================================================================
---
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java
(added)
+++
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java
Tue Feb 2 10:36:27 2010
@@ -0,0 +1,18 @@
+package org.apache.tiles.autotag.core.internal;
+
+/**
+ * This won't be registered.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NotFeasibleExampleTemplate {
+
+ /**
+ * It starts.
+ *
+ * @param whatever Doesn't matter.
+ */
+ public void start(String whatever) {
+ // Does nothing.
+ }
+}
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/sandbox/trunk/tiles-autotag/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/core/internal/NotFeasibleExampleTemplate.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL