Author: mrdon
Date: Fri Aug 19 23:01:03 2005
New Revision: 234001
URL: http://svn.apache.org/viewcvs?rev=234001&view=rev
Log:
* Adding support for one annotation output for multiple controllers
* Changing xwork to be generated once from all controllers
* Reworked xjavadoc unit tests
* Changed namespace handling from action mapper to include leading '/'
Added:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/BaseTest.java (with
props)
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/Controller2.jsrc
- copied unchanged from r233126,
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/foo/Controller.jsrc
Removed:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/foo/
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/OutputType.java
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTags.java
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTagsTask.java
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/XDocletParser.java
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/mapper/ServletActionMapper.java
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/xdocletToXWork.vm
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/processor/chain/ProcessTagsInDevMode.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/StringOutputType.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestProcessTags.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletParser.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletValidation.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletXWork.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/XDocletTestBase.java
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/mapper/TestServletActionMapper.java
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/OutputType.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/OutputType.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
--- struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/OutputType.java
(original)
+++ struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/OutputType.java
Fri Aug 19 23:01:03 2005
@@ -39,20 +39,24 @@
*/
public class OutputType {
+ public static final int PER_ACTION = 0;
+ public static final int PER_CONTROLLER = 1;
+ public static final int ONCE = 3;
+
private String filePattern;
- private boolean perAction;
+ private int frequency;
private String template;
private static final Log log = LogFactory.getLog(OutputType.class);
- public OutputType(String template, String filePattern, boolean perAction) {
+ public OutputType(String template, String filePattern, int frequency) {
this.template = template;
this.filePattern = filePattern;
- this.perAction = perAction;
+ this.frequency = frequency;
}
- public boolean getPerAction() {
- return perAction;
+ public int getFrequency() {
+ return frequency;
}
public String getTemplate() {
@@ -60,27 +64,31 @@
}
public Writer getWriter(File dest, String path, String actionName) {
- String name = filePattern;
-
- // Strip the extension
- path = path.substring(0, path.lastIndexOf('.'));
- // Determine the root path w/o the class name
- String rootPath = path.substring(0, path.lastIndexOf('/') + 1);
-
- // Replace the class name
- int i = filePattern.indexOf("$c");
- if (i > -1) {
- String className = path.substring(path.lastIndexOf('/') + 1);
- name = name.substring(0, i) + className + name.substring(i+2);
- }
-
- // Replace the action name
- i = name.indexOf("$a");
- if (i > -1) {
- name = name.substring(0, i) + actionName + name.substring(i+2);
- }
FileWriter writer = null;
+ String name = filePattern;
+ if (frequency != ONCE) {
+
+ // Strip the extension
+ path = path.substring(0, path.lastIndexOf('.'));
+
+ // Determine the root path w/o the class name
+ String rootPath = path.substring(0, path.lastIndexOf('/') + 1);
+
+ // Replace the class name
+ int i = filePattern.indexOf("$c");
+ if (i > -1) {
+ String className = path.substring(path.lastIndexOf('/') + 1);
+ name = name.substring(0, i) + className + name.substring(i+2);
+ }
+
+ // Replace the action name
+ i = name.indexOf("$a");
+ if (i > -1) {
+ name = name.substring(0, i) + actionName + name.substring(i+2);
+ }
+ dest = new File(dest, rootPath);
+ }
try {
writer = new FileWriter(new File(dest, name));
} catch (IOException ex) {
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTags.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTags.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
--- struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTags.java
(original)
+++ struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTags.java
Fri Aug 19 23:01:03 2005
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.net.URI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,28 +44,27 @@
}
public void process(File src, String srcName, File dest, List outputs)
throws IOException {
- crawl(src, srcName, dest, outputs, new ArrayList());
+ ArrayList sources = new ArrayList();
+ crawl(src, srcName, src, outputs, sources);
+ xdocletParser.generate(sources, src, dest, outputs);
}
- protected void crawl(File src, String srcName, File dest, List outputs,
List stack) throws IOException {
+ protected void crawl(File src, String srcName, File srcRoot, List outputs,
List sources) throws IOException {
File[] kids = src.listFiles();
boolean controllerFound = false;
for (int x = 0; x < kids.length; x++) {
if (kids[x].isDirectory()) {
- stack.add(kids[x].getName());
- crawl(kids[x], srcName, dest, outputs, stack);
- stack.remove(stack.size() - 1);
+ //stack.add(kids[x].getName());
+ crawl(kids[x], srcName, srcRoot, outputs, sources);
+ //stack.remove(stack.size() - 1);
} else if (!controllerFound && srcName.equals(kids[x].getName())) {
- StringBuffer path = new StringBuffer();
- for (Iterator i = stack.iterator(); i.hasNext();) {
- path.append(i.next()).append(SEP);
- }
- File destDir = new File(dest, path.toString());
- destDir.mkdirs();
- String filePath = path.toString() + kids[x].getName();
-
- log.info("Generating to " + destDir);
- xdocletParser.generate(filePath, new FileReader(kids[x]),
outputs, destDir);
+ URI srcUri = kids[x].toURI();
+ URI fileUri = srcRoot.toURI();
+ URI result = fileUri.relativize(srcUri);
+ log.info("Adding source "+result);
+ sources.add(result.toString());
+
+ //xdocletParser.generate(filePath, new FileReader(kids[x]),
outputs, destDir);
controllerFound = true;
}
}
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTagsTask.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTagsTask.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTagsTask.java
(original)
+++
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/ProcessTagsTask.java
Fri Aug 19 23:01:03 2005
@@ -52,8 +52,8 @@
pt.setXdocletParser(parser);
List outputs = new ArrayList();
- outputs.add(new OutputType("org/apache/ti/config/xdocletToXWork.vm",
"xwork.xml", false));
- outputs.add(new
OutputType("org/apache/ti/config/xdocletToValidation.vm",
"$c-$a-validation.xml", true));
+ outputs.add(new OutputType("org/apache/ti/config/xdocletToXWork.vm",
"xwork.xml", OutputType.ONCE));
+ outputs.add(new
OutputType("org/apache/ti/config/xdocletToValidation.vm",
"$c-$a-validation.xml", OutputType.PER_ACTION));
try {
pt.process(srcdir, "Controller.java", destdir, outputs);
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/XDocletParser.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/XDocletParser.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/XDocletParser.java
(original)
+++
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/XDocletParser.java
Fri Aug 19 23:01:03 2005
@@ -40,6 +40,7 @@
import xjavadoc.XMethod;
import xjavadoc.XJavaDoc;
import xjavadoc.filesystem.ReaderFile;
+import xjavadoc.filesystem.XJavadocFile;
/**
* Processes xdoclet-style tags and uses a velocity template to generate
@@ -73,58 +74,100 @@
return parameters;
}
- public void generate(String name, Reader reader, List outputs, File
destDir) {
- XJavaDoc jdoc = new XJavaDoc();
- ReaderFile jdocFile = new ReaderFile(reader);
-
-
- String className = name.replace('/', '.');
+ protected String getClassName(String uri) {
+ String className = uri.replace('/', '.');
className = className.replace('\\', '.');
className = className.substring(0, className.indexOf(".java"));
+ return className;
+ }
- jdoc.addAbstractFile(className, jdocFile);
- XClass xclass = jdoc.getXClass(className);
-
+
+ public void generate(List sources, File srcRoot, File destRoot, List
outputs) {
+ XJavaDoc jdoc = new XJavaDoc();
+ String source, className;
+ XJavadocFile file;
+ for (Iterator i = sources.iterator(); i.hasNext(); ) {
+ source = (String)i.next();
+ file = new XJavadocFile(new File(srcRoot, source));
+ className = getClassName(source);
+ jdoc.addAbstractFile(className, file);
+ }
+
Map contextMap = new HashMap();
if (parameters != null) {
contextMap.putAll(parameters);
}
-
-
+ VelocityContext context = new VelocityContext(contextMap);
+
OutputType output;
- Writer writer = null;
- for (Iterator i = outputs.iterator(); i.hasNext(); ) {
- output = (OutputType) i.next();
- Template template = null;
+ XClass xclass;
+ Template template;
+ for (Iterator o = outputs.iterator(); o.hasNext(); ) {
+ output = (OutputType)o.next();
try {
template = velocity.getTemplate(output.getTemplate());
} catch (Exception ex) {
log.error("Unable to locate or parse template:
"+output.getTemplate(), ex);
continue;
- }
-
- if (!output.getPerAction()) {
- writer = output.getWriter(destDir, name, null);
- VelocityContext context = new VelocityContext(contextMap);
- context.put("xclass", xclass);
- context.put("javaFile", name);
-
- writeOutput(template, writer, context);
+ }
+ if (output.getFrequency() == output.ONCE) {
+ generateOnce(sources, destRoot, jdoc, output, template,
context);
} else {
- List methods = xclass.getMethods();
- XMethod m;
- for (Iterator it = methods.iterator(); it.hasNext(); ) {
- m = (XMethod) it.next();
- if (m.getDoc().hasTag("ti.action")) {
- writer = output.getWriter(destDir, name, m.getName());
- VelocityContext context = new
VelocityContext(contextMap);
- context.put("xclass", xclass);
- context.put("xmethod", m);
- context.put("javaFile", name);
-
- writeOutput(template, writer, context);
+ for (Iterator i = sources.iterator(); i.hasNext(); ) {
+ source = (String)i.next();
+ xclass = jdoc.getXClass(getClassName(source));
+
+ if (output.getFrequency() == output.PER_CONTROLLER) {
+ generatePerController(source, destRoot, xclass,
output, template, context);
+ } else if (output.getFrequency() == output.PER_ACTION) {
+ generatePerAction(source, destRoot, xclass, output,
template, context);
}
}
+ }
+ }
+ }
+
+ protected void generateOnce(List sources, File destRoot, XJavaDoc jdoc,
+ OutputType output, Template template,
VelocityContext context) {
+ String source, className;
+ XClass xclass;
+ Map xclasses = new HashMap();
+ for (Iterator i = sources.iterator(); i.hasNext(); ) {
+ source = (String)i.next();
+ className = getClassName(source);
+ xclass = jdoc.getXClass(className);
+ xclasses.put(source, xclass);
+ }
+ Writer writer = output.getWriter(destRoot, null, null);
+ context.put("xclasses", xclasses);
+ writeOutput(template, writer, context);
+ }
+
+
+
+ protected void generatePerController(String source, File destRoot, XClass
xclass,
+ OutputType output, Template template,
VelocityContext context) {
+ Writer writer = output.getWriter(destRoot, source, null);
+ context.put("xclass", xclass);
+ context.put("javaFile", source);
+ writeOutput(template, writer, context);
+ }
+
+
+ protected void generatePerAction(String source, File destRoot, XClass
xclass,
+ OutputType output, Template template,
VelocityContext context) {
+ List methods = xclass.getMethods();
+ XMethod m;
+ Writer writer;
+ for (Iterator it = methods.iterator(); it.hasNext(); ) {
+ m = (XMethod) it.next();
+ if (m.getDoc().hasTag("ti.action")) {
+ writer = output.getWriter(destRoot, source, m.getName());
+ context.put("xclass", xclass);
+ context.put("xmethod", m);
+ context.put("javaFile", source);
+
+ writeOutput(template, writer, context);
}
}
}
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/mapper/ServletActionMapper.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/mapper/ServletActionMapper.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/mapper/ServletActionMapper.java
(original)
+++
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/mapper/ServletActionMapper.java
Fri Aug 19 23:01:03 2005
@@ -54,7 +54,7 @@
if (mapping.charAt(mapping.length() - 1) == '*') {
String prefix = mapping.substring(0, mapping.length() - 1);
if (servletPath.startsWith(prefix)) {
- uri = servletPath.substring(prefix.length());
+ uri = servletPath.substring(prefix.length() - 1);
log.debug("matched prefix:" + prefix);
break;
}
@@ -63,7 +63,7 @@
} else if (mapping.charAt(0) == '*') {
String ext = mapping.substring(1);
if (servletPath.endsWith(ext)) {
- uri = servletPath.substring(1, (servletPath.length() -
ext.length()));
+ uri = servletPath.substring(0, (servletPath.length() -
ext.length()));
log.debug("matched ext:" + ext);
break;
}
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/xdocletToXWork.vm
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/xdocletToXWork.vm?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/xdocletToXWork.vm
(original)
+++
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/config/xdocletToXWork.vm
Fri Aug 19 23:01:03 2005
@@ -6,46 +6,48 @@
<xwork>
<include file="ti-default.xml"/>
-#set( $pkg=$xclass.containingPackage)
-
-#if( $pkg.name=="")
-<package name="default" extends="ti-default">
-#else
-<package name="$pkg.name" namespace="/${pkg.name}" extends="xwork-default">
-#end
-
- #foreach( $method in $xclass.getMethods(true) )
- #if( $method.returnType.type.type == "java.lang.String.class" &&
$method.doc.hasTag("ti.action"))
- #if( $method.parameters.size() == 0 || $method.parameters.size() == 1)
- <action name="$method.name" method="$method.name"
class="$xclass.qualifiedName">
-
- #set( $form = $method.doc.getTag("ti.form"))
- #if( $form)
- #if( $form.getAttributeValue("scope"))
- <param
name="formScope">${form.getAttributeValue("scope")}</param>
- #end
- #if ($form.getAttributeValue("name"))
- <param name="formName">${form.getAttributeValue("name")}</param>
- #end
- #end
- #set( $forwards = $method.doc.getTags("ti.forward"))
- #if( $forwards.size() == 0)
- <result name="success">
- <param name="location">${method.name}.jsp</param>
- </result>
- #else
- #foreach( $fwd in $forwards )
- <result name="${fwd.getAttributeValue("name")}"
- type="${fwd.getAttributeValue("type")}">
- <param
name="location">${fwd.getAttributeValue("location")}</param>
- </result>
+#foreach( $xclass in $xclasses)
+ #set( $pkg=$xclass.containingPackage)
+
+ #if( $pkg.name=="")
+ <package name="default" extends="ti-default">
+ #else
+ <package name="$pkg.name" namespace="/${pkg.name}" extends="ti-default">
+ #end
+
+ #foreach( $method in $xclass.getMethods(true) )
+ #if( $method.returnType.type.type == "java.lang.String.class" &&
$method.doc.hasTag("ti.action"))
+ #if( $method.parameters.size() == 0 || $method.parameters.size() ==
1)
+ <action name="$method.name" method="$method.name"
class="$xclass.qualifiedName">
+
+ #set( $form = $method.doc.getTag("ti.form"))
+ #if( $form)
+ #if( $form.getAttributeValue("scope"))
+ <param
name="formScope">${form.getAttributeValue("scope")}</param>
+ #end
+ #if ($form.getAttributeValue("name"))
+ <param
name="formName">${form.getAttributeValue("name")}</param>
+ #end
#end
- #end
- <interceptor-ref name="validationWorkflowStack"/>
- </action>
- #end
- #end
- #end
-
-</package>
+ #set( $forwards = $method.doc.getTags("ti.forward"))
+ #if( $forwards.size() == 0)
+ <result name="success">
+ <param name="location">${method.name}.jsp</param>
+ </result>
+ #else
+ #foreach( $fwd in $forwards )
+ <result name="${fwd.getAttributeValue("name")}"
+ type="${fwd.getAttributeValue("type")}">
+ <param
name="location">${fwd.getAttributeValue("location")}</param>
+ </result>
+ #end
+ #end
+ <interceptor-ref name="validationWorkflowStack"/>
+ </action>
+ #end
+ #end
+ #end
+
+ </package>
+ #end
</xwork>
Modified:
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/processor/chain/ProcessTagsInDevMode.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/java/org/apache/ti/processor/chain/ProcessTagsInDevMode.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/processor/chain/ProcessTagsInDevMode.java
(original)
+++
struts/sandbox/trunk/ti/core/src/java/org/apache/ti/processor/chain/ProcessTagsInDevMode.java
Fri Aug 19 23:01:03 2005
@@ -50,8 +50,8 @@
public void setProcessTags(ProcessTags pt) {
this.processTags = pt;
outputs = new ArrayList();
- outputs.add(new OutputType("org/apache/ti/config/xdocletToXWork.vm",
"xwork.xml", false));
- outputs.add(new
OutputType("org/apache/ti/config/xdocletToValidation.vm",
"$c-$a-validation.xml", true));
+ outputs.add(new OutputType("org/apache/ti/config/xdocletToXWork.vm",
"xwork.xml", OutputType.ONCE));
+ outputs.add(new
OutputType("org/apache/ti/config/xdocletToValidation.vm",
"$c-$a-validation.xml", OutputType.PER_ACTION));
}
public void setControllerSourceName(String name) {
Added: struts/sandbox/trunk/ti/core/src/test/org/apache/ti/BaseTest.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/BaseTest.java?rev=234001&view=auto
==============================================================================
--- struts/sandbox/trunk/ti/core/src/test/org/apache/ti/BaseTest.java (added)
+++ struts/sandbox/trunk/ti/core/src/test/org/apache/ti/BaseTest.java Fri Aug
19 23:01:03 2005
@@ -0,0 +1,94 @@
+/*
+ * $Id: BaseTest.java 230619 2005-08-07 02:04:31Z mrdon $
+ *
+ * Copyright 2002-2004 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+package org.apache.ti;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.HashSet;
+import java.io.*;
+import java.util.*;
+import org.apache.velocity.*;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit tests for the <code>org.apache.ti.config.ProcessTags</code> class.
+ *
+ * @version $Rev: 230619 $ $Date: 2005-08-06 19:04:31 -0700 (Sat, 06 Aug 2005)
$
+ */
+public abstract class BaseTest extends TestCase {
+
+ /**
+ * Defines the testcase name for JUnit.
+ *
+ * @param theName the testcase's name.
+ */
+ public BaseTest(String theName) {
+ super(theName);
+ }
+
+
+ protected static File makeDir(String name) throws Exception {
+ File root = File.createTempFile("strutsti", "").getParentFile();
+ File src = new File(root, name);
+ src.mkdirs();
+ return src;
+ }
+
+ protected static void setText(File file, String text) throws IOException {
+ FileWriter writer = new FileWriter(file);
+ writer.write(text);
+ writer.close();
+ }
+
+ protected static void setText(File file, InputStream in) throws
IOException {
+
+ byte[] b = new byte[4096];
+ int len = 0;
+ FileOutputStream fout = new FileOutputStream(file);
+ while ((len = in.read(b)) > 0) {
+ fout.write(b, 0, len);
+ }
+ in.close();
+ fout.close();
+ }
+
+ // Deletes all files and subdirectories under dir.
+ // Returns true if all deletions were successful.
+ // If a deletion fails, the method stops attempting to delete and returns
false.
+ protected static boolean deleteDir(File dir) {
+ if (dir.isDirectory()) {
+ String[] children = dir.list();
+ for (int i=0; i<children.length; i++) {
+ boolean success = deleteDir(new File(dir, children[i]));
+ if (!success) {
+ return false;
+ }
+ }
+ }
+
+ // The directory is now empty so delete it
+ return dir.delete();
+ }
+
+}
Propchange: struts/sandbox/trunk/ti/core/src/test/org/apache/ti/BaseTest.java
------------------------------------------------------------------------------
svn:executable = *
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/StringOutputType.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/StringOutputType.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/StringOutputType.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/StringOutputType.java
Fri Aug 19 23:01:03 2005
@@ -41,8 +41,12 @@
private Map writers = new HashMap();
- public StringOutputType(String template, String filePattern, boolean
perAction) {
- super(template, filePattern, perAction);
+ public StringOutputType(String template) {
+ this(template, PER_CONTROLLER);
+ }
+
+ public StringOutputType(String template, int perAction) {
+ super(template, "ASDF", perAction);
}
public Writer getWriter(File dest, String path, String actionName) {
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestProcessTags.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestProcessTags.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestProcessTags.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestProcessTags.java
Fri Aug 19 23:01:03 2005
@@ -27,6 +27,8 @@
import java.util.*;
import org.apache.velocity.*;
+import org.apache.ti.*;
+
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
@@ -36,9 +38,9 @@
*
* @version $Rev$ $Date$
*/
-public class TestProcessTags extends TestCase {
+public class TestProcessTags extends BaseTest {
- File src, dest;
+ File src;
/**
* Defines the testcase name for JUnit.
@@ -69,16 +71,11 @@
}
public void setUp() throws Exception {
- File root = File.createTempFile("strutsti", "").getParentFile();
- src = new File(root, "strutsti-src");
- src.mkdirs();
- dest = new File(root, "strutsti-dest");
- dest.mkdirs();
+ src = makeDir("strutsti-src");
}
public void tearDown() {
deleteDir(src);
- deleteDir(dest);
}
@@ -86,17 +83,9 @@
final HashSet shouldFind = new HashSet();
shouldFind.add("Controller.java");
shouldFind.add("foo/Controller.java");
- shouldFind.add("foo\\Controller.java");
- XDocletParser mock = new XDocletParser() {
- public void generate(String name, Reader reader, File dest, List
outputs) {
- if (!shouldFind.contains(name)) {
- fail("Invalid controller file "+name);
- }
- }
- };
- /*
+
File rootCtr = new File(src, "Controller.java");
rootCtr.createNewFile();
File sub = new File(src, "foo");
@@ -104,34 +93,10 @@
File subCtr = new File(sub, "Controller.java");
subCtr.createNewFile();
- ProcessTags processer = new ProcessTags();
- processer.setXDocletParser(mock);
-
- processer.process(src, "Controller.java", dest, "xwork.xml");
- assertTrue(new File(dest, "xwork.xml").exists());
- assertTrue(new File(dest, "foo/xwork.xml").exists());
- */
+ ProcessTags processor = new ProcessTags();
+ ArrayList sources = new ArrayList();
+ processor.crawl(src, "Controller.java", src, null, sources);
+ assertTrue("Not all files found:"+sources, new
HashSet(sources).equals(shouldFind));
}
-
-
-
- // Deletes all files and subdirectories under dir.
- // Returns true if all deletions were successful.
- // If a deletion fails, the method stops attempting to delete and returns
false.
- private static boolean deleteDir(File dir) {
- if (dir.isDirectory()) {
- String[] children = dir.list();
- for (int i=0; i<children.length; i++) {
- boolean success = deleteDir(new File(dir, children[i]));
- if (!success) {
- return false;
- }
- }
- }
-
- // The directory is now empty so delete it
- return dir.delete();
- }
-
}
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletParser.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletParser.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletParser.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletParser.java
Fri Aug 19 23:01:03 2005
@@ -39,7 +39,7 @@
*
* @version $Rev$ $Date$
*/
-public class TestXDocletParser extends TestCase {
+public class TestXDocletParser extends XDocletTestBase {
/**
* Defines the testcase name for JUnit.
@@ -49,7 +49,7 @@
public TestXDocletParser(String theName) {
super(theName);
}
-
+
/**
* Start the tests.
*
@@ -73,14 +73,15 @@
XDocletParser p = new XDocletParser();
p.init();
- StringOutputType out = new
StringOutputType("org/apache/ti/config/test.vm", "foo.xml", false);
+ StringOutputType out = new
StringOutputType("org/apache/ti/config/test.vm");
List outputs = new ArrayList();
outputs.add(out);
- String src = "public class Test {}";
- StringReader reader = new StringReader(src);
-
- p.generate("Test.java", reader, outputs, new File("foo"));
+ String txt = "public class Test {}";
+ setText(new File(src, "Test.java"), txt);
+ ArrayList sources = new ArrayList();
+ sources.add("Test.java");
+ p.generate(sources, src, null, outputs);
String ut = out.getString();
assertNotNull(ut);
@@ -91,13 +92,15 @@
XDocletParser p = new XDocletParser();
p.init();
- StringOutputType out = new
StringOutputType("org/apache/ti/config/testTag.vm", "foo.xml", false);
+ StringOutputType out = new
StringOutputType("org/apache/ti/config/testTag.vm");
List outputs = new ArrayList();
outputs.add(out);
- String src = "package foo;\n/** \n * things\n * @foo bar\n */\npublic
class Test{}";
- StringReader reader = new StringReader(src);
- p.generate("Test.java", reader, outputs, new File("foo"));
+ String srctxt = "package foo;\n/** \n * things\n * @foo bar\n
*/\npublic class Test{}";
+ setText(new File(src, "Test.java"), srctxt);
+ ArrayList sources = new ArrayList();
+ sources.add("Test.java");
+ p.generate(sources, src, null, outputs);
String ut = out.getString();
assertNotNull(ut);
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletValidation.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletValidation.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletValidation.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletValidation.java
Fri Aug 19 23:01:03 2005
@@ -79,7 +79,7 @@
protected Document runTemplate(String path, String action) throws
Exception {
- return runTemplate(path,
"org/apache/ti/config/xdocletToValidation.vm", true, action);
+ return runTemplate(path,
"org/apache/ti/config/xdocletToValidation.vm", OutputType.PER_ACTION, action);
}
}
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletXWork.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletXWork.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletXWork.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/TestXDocletXWork.java
Fri Aug 19 23:01:03 2005
@@ -71,7 +71,7 @@
}
public void testForwards() throws Exception {
- Document doc = runTemplate("Controller.jsrc");
+ Document doc = runTemplate(new String[] {"Controller.jsrc"});
assertXPath(doc, "/xwork/[EMAIL PROTECTED]'default']");
// Test simple forward
@@ -87,9 +87,14 @@
}
public void testInPackage() throws Exception {
- Document doc = runTemplate("foo/Controller.jsrc");
+ Document doc = runTemplate("Controller2.jsrc");
assertXPath(doc, "/xwork/[EMAIL PROTECTED]'foo' and
@namespace='/foo']");
}
+
+ public void testMultiplePackages() throws Exception {
+ Document doc = runTemplate(new String[] {"Controller2.jsrc",
"Controller.jsrc"});
+ assertXPath(doc, "/xwork/[EMAIL PROTECTED]'foo'] and /xwork/[EMAIL
PROTECTED]'default']");
+ }
public void testForm() throws Exception {
Document doc = runTemplate("Controller.jsrc");
@@ -99,7 +104,11 @@
protected Document runTemplate(String path) throws Exception {
- return runTemplate(path, "org/apache/ti/config/xdocletToXWork.vm");
+ return runTemplate(path, "org/apache/ti/config/xdocletToXWork.vm",
OutputType.ONCE, null);
+ }
+
+ protected Document runTemplate(String[] path) throws Exception {
+ return runTemplate(path, "org/apache/ti/config/xdocletToXWork.vm",
OutputType.ONCE, null);
}
}
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/XDocletTestBase.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/XDocletTestBase.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/XDocletTestBase.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/XDocletTestBase.java
Fri Aug 19 23:01:03 2005
@@ -24,6 +24,7 @@
import org.apache.velocity.*;
import java.io.StringReader;
import java.io.StringWriter;
+import org.xml.sax.*;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -33,21 +34,30 @@
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
+import org.apache.ti.*;
+
/**
* Unit tests for the <code>org.apache.ti.config.XDocletvalidations</code>
class.
*
* @version $Rev: 230394 $ $Date: 2005-08-04 21:13:44 -0700 (Thu, 04 Aug 2005)
$
*/
-public class XDocletTestBase extends TestCase {
+public class XDocletTestBase extends BaseTest {
private XDocletParser p;
+ protected File src;
- public void setUp() {
+ public void setUp() throws Exception {
p = new XDocletParser();
p.init();
+ src = makeDir("strutsti-src");
+ }
+
+ public void tearDown() throws Exception {
+ deleteDir(src);
}
+
/**
* Defines the testcase name for JUnit.
*
@@ -56,6 +66,8 @@
public XDocletTestBase(String theName) {
super(theName);
}
+
+
protected void assertXPath(Document doc, String xpath) throws Exception {
@@ -64,20 +76,30 @@
}
protected Document runTemplate(String path, String template) throws
Exception {
- return runTemplate(path, template, false, null);
+ return runTemplate(path, template, OutputType.PER_CONTROLLER, null);
}
- protected Document runTemplate(String path, String template, boolean
perAction, String actionName) throws Exception {
- StringOutputType output = new StringOutputType(template, "foo",
perAction);
+ protected Document runTemplate(String path, String template, int
frequency, String actionName) throws Exception {
+ return runTemplate(new String[]{path}, template, frequency,
actionName);
+ }
+
+ protected Document runTemplate(String[] paths, String template, int
frequency, String actionName) throws Exception {
+ StringOutputType output = new StringOutputType(template, frequency);
ArrayList list = new ArrayList();
list.add(output);
- Reader reader = new
InputStreamReader(getClass().getResourceAsStream(path));
- path = path.replaceAll("jsrc", "java");
- p.generate(path, reader, list, null);
+ ArrayList sources = new ArrayList();
+ for (int x=0; x<paths.length; x++) {
+ String name = "Test"+x+".java";
+ setText(new File(src, name),
getClass().getResourceAsStream(paths[x]));
+ sources.add(name);
+ }
+
+
+ p.generate(sources, src, null, list);
String out = null;
- if (perAction) {
+ if (frequency==output.PER_ACTION) {
out = output.getString(actionName);
//System.out.println("output:"+out);
} else {
@@ -85,7 +107,13 @@
//System.out.println("output:"+out);
}
- Document doc = new SAXBuilder().build(new StringReader(out));
+ SAXBuilder builder = new SAXBuilder(false);
+ builder.setEntityResolver(new EntityResolver() {
+ public InputSource resolveEntity (String publicId, String systemId)
{
+ return null;
+ }
+ });
+ Document doc = builder.build(new StringReader(out));
return doc;
}
Modified:
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/mapper/TestServletActionMapper.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/mapper/TestServletActionMapper.java?rev=234001&r1=234000&r2=234001&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/mapper/TestServletActionMapper.java
(original)
+++
struts/sandbox/trunk/ti/core/src/test/org/apache/ti/config/mapper/TestServletActionMapper.java
Fri Aug 19 23:01:03 2005
@@ -75,7 +75,7 @@
ActionMapping am = mapper.getMapping("/foo/ns/bar", mappings);
assertNotNull(am);
assertTrue("action:"+am.getName(), "bar".equals(am.getName()));
- assertTrue("ns".equals(am.getNamespace()));
+ assertTrue("/ns".equals(am.getNamespace()));
assertTrue("/foo/*".equals(am.getExternalMapping()));
}
@@ -83,7 +83,7 @@
ActionMapping am = mapper.getMapping("/ns/bar.do", mappings);
assertNotNull(am);
assertTrue("bar".equals(am.getName()));
- assertTrue("ns".equals(am.getNamespace()));
+ assertTrue("/ns".equals(am.getNamespace()));
assertTrue("*.do".equals(am.getExternalMapping()));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]