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]