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


Reply via email to