You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by nl...@apache.org on 2014/12/07 07:48:00 UTC
svn commit: r1643653 [1/2] - in /tiles/autotag/trunk: maven-autotag-plugin/
maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/
maven-autotag-plugin/src/main/resources/
maven-autotag-plugin/src/main/resources/META-INF/ maven-autotag-plu...
Author: nlebas
Date: Sun Dec 7 06:47:59 2014
New Revision: 1643653
URL: http://svn.apache.org/r1643653
Log:
AUTOTAG-20 Add support for Eclipse's M2E plugin
Added:
tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/
tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/
tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/m2e/
tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/DirectoryOutputLocator.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/OutputLocator.java
Modified:
tiles/autotag/trunk/maven-autotag-plugin/pom.xml
tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojo.java
tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java
tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateVelocityMojo.java
tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojoTest.java
tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojoTest.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGenerator.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateSuiteGenerator.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/BasicTemplateGenerator.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateClassGenerator.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateGeneratorBuilder.java
tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateSuiteGenerator.java
tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/AbstractTemplateSuiteGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/BasicTemplateGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/TemplateGeneratorBuilderTest.java
tiles/autotag/trunk/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelGenerator.java
tiles/autotag/trunk/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGenerator.java
tiles/autotag/trunk/tiles-autotag-freemarker/src/main/java/org/apache/tiles/autotag/freemarker/FMTemplateGeneratorFactory.java
tiles/autotag/trunk/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMModelRepositoryGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-freemarker/src/test/java/org/apache/tiles/autotag/freemarker/FMTemplateGeneratorFactoryTest.java
tiles/autotag/trunk/tiles-autotag-jsp/src/main/java/org/apache/tiles/autotag/jsp/JspTemplateGeneratorFactory.java
tiles/autotag/trunk/tiles-autotag-jsp/src/main/java/org/apache/tiles/autotag/jsp/TLDGenerator.java
tiles/autotag/trunk/tiles-autotag-jsp/src/main/java/org/apache/tiles/autotag/jsp/TagClassGenerator.java
tiles/autotag/trunk/tiles-autotag-jsp/src/test/java/org/apache/tiles/autotag/jsp/JspTemplateGeneratorFactoryTest.java
tiles/autotag/trunk/tiles-autotag-jsp/src/test/java/org/apache/tiles/autotag/jsp/TLDGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-jsp/src/test/java/org/apache/tiles/autotag/jsp/TagClassGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGenerator.java
tiles/autotag/trunk/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityPropertiesGenerator.java
tiles/autotag/trunk/tiles-autotag-velocity/src/main/java/org/apache/tiles/autotag/velocity/VelocityTemplateGeneratorFactory.java
tiles/autotag/trunk/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityDirectiveGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityPropertiesGeneratorTest.java
tiles/autotag/trunk/tiles-autotag-velocity/src/test/java/org/apache/tiles/autotag/velocity/VelocityTemplateGeneratorFactoryTest.java
Modified: tiles/autotag/trunk/maven-autotag-plugin/pom.xml
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/pom.xml?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/pom.xml (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/pom.xml Sun Dec 7 06:47:59 2014
@@ -38,15 +38,21 @@ under the License.
<version>2.2.1</version>
</dependency>
<dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <version>3.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-compiler-api</artifactId>
- <version>1.7</version>
+ <groupId>org.sonatype.plexus</groupId>
+ <artifactId>plexus-build-api</artifactId>
+ <version>0.0.7</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
@@ -65,10 +71,25 @@ under the License.
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-autotag-freemarker</artifactId>
<version>1.2-SNAPSHOT</version>
@@ -92,4 +113,65 @@ under the License.
<scope>test</scope>
</dependency>
</dependencies>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>3.2</version>
+ <configuration>
+ <!-- see http://jira.codehaus.org/browse/MNG-5346 -->
+ <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+ </configuration>
+ <executions>
+ <execution>
+ <id>default-descriptor</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>default-addPluginArtifactMetadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>addPluginArtifactMetadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>
+ org.apache.maven.plugins
+ </groupId>
+ <artifactId>
+ maven-plugin-plugin
+ </artifactId>
+ <versionRange>
+ [3.2,)
+ </versionRange>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
</project>
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojo.java Sun Dec 7 06:47:59 2014
@@ -21,23 +21,27 @@
package org.apache.tiles.autotag.plugin;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.generate.TemplateGenerator;
import org.apache.tiles.autotag.generate.TemplateGeneratorFactory;
import org.apache.tiles.autotag.model.TemplateSuite;
import org.apache.velocity.app.VelocityEngine;
+import org.sonatype.plexus.build.incremental.BuildContext;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider;
@@ -48,65 +52,63 @@ import com.thoughtworks.xstream.converte
* @version $Rev$ $Date$
*/
public abstract class AbstractGenerateMojo extends AbstractMojo {
- /**
+ /**
* The position of the template suite XML descriptor.
*/
static final String META_INF_TEMPLATE_SUITE_XML = "META-INF/template-suite.xml";
/**
* The classpath elements.
- *
- * @parameter expression="${project.compileClasspathElements}"
- * @required
- * @readonly
*/
+ @Parameter(property = "project.compileClasspathElements", required = true, readonly = true)
List<String> classpathElements;
/**
* Location of the generated classes.
- *
- * @parameter expression="${project.build.directory}/autotag-classes"
- * @required
*/
- File classesOutputDirectory;
+ @Parameter(defaultValue = "${project.build.directory}/autotag-classes", required = true)
+ File classesOutputDirectory;
/**
* Location of the generated resources.
- *
- * @parameter expression="${project.build.directory}/autotag-resources"
- * @required
*/
+ @Parameter(defaultValue = "${project.build.directory}/autotag-resources", required = true)
File resourcesOutputDirectory;
/**
* Name of the request class.
- * @parameter expression="org.apache.tiles.request.Request"
- * @required
*/
+ @Parameter(defaultValue = "org.apache.tiles.request.Request", required = true)
String requestClass;
/**
* Name of the package.
- * @parameter expression="sample"
- * @required
*/
+ @Parameter(required = true)
String packageName;
- /**
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
+ @Component
MavenProject project;
+ @Component
+ BuildContext buildContext;
+
+ OutputLocator classesOutputLocator;
+ OutputLocator resourcesOutputLocator;
+
/** {@inheritDoc} */
public void execute() throws MojoExecutionException {
try {
- InputStream stream = findTemplateSuiteDescriptor();
- XStream xstream = new XStream(new Sun14ReflectionProvider());
- TemplateSuite suite = (TemplateSuite) xstream.fromXML(stream);
- stream.close();
-
+ TemplateSuite suite;
+ InputStream stream = findTemplateSuiteDescriptor();
+ try {
+ XStream xstream = new XStream(new Sun14ReflectionProvider());
+ suite = (TemplateSuite) xstream.fromXML(stream);
+ } finally {
+ stream.close();
+ }
+ classesOutputLocator = new MavenOutputLocator(classesOutputDirectory);
+ resourcesOutputLocator = new MavenOutputLocator(resourcesOutputDirectory);
Properties props = new Properties();
InputStream propsStream = getClass().getResourceAsStream("/org/apache/tiles/autotag/velocity.properties");
props.load(propsStream);
@@ -115,11 +117,13 @@ public abstract class AbstractGenerateMo
new VelocityEngine(props)).createTemplateGenerator();
generator.generate(packageName, suite, getParameters(), getRuntimeClass(), requestClass);
if (generator.isGeneratingResources()) {
+ buildContext.refresh(resourcesOutputDirectory);
Resource resource = new Resource();
resource.setDirectory(resourcesOutputDirectory.getAbsolutePath());
project.addResource(resource);
}
if (generator.isGeneratingClasses()) {
+ buildContext.refresh(classesOutputDirectory);
project.addCompileSourceRoot(classesOutputDirectory.getAbsolutePath());
}
} catch (IOException e) {
@@ -153,25 +157,15 @@ public abstract class AbstractGenerateMo
* @throws IOException If something goes wrong.
*/
private InputStream findTemplateSuiteDescriptor() throws IOException {
- InputStream retValue = null;
-
- for (String path : classpathElements) {
- File file = new File(path);
- if (file.isDirectory()) {
- File candidate = new File(file, META_INF_TEMPLATE_SUITE_XML);
- if (candidate.exists()) {
- return new FileInputStream(candidate);
- }
- } else if (file.getPath().endsWith(".jar")) {
- JarFile jar = new JarFile(file);
- ZipEntry entry = jar.getEntry(META_INF_TEMPLATE_SUITE_XML);
- if (entry != null) {
- return jar.getInputStream(entry);
- }
- }
+ URL[] urls = new URL[classpathElements.size()];
+ int i = 0;
+ for ( String classpathElement: classpathElements )
+ {
+ urls[i++] = new File(classpathElement).toURI().toURL();
}
- return retValue;
+ ClassLoader cl = new URLClassLoader( urls );
+ return cl.getResourceAsStream(META_INF_TEMPLATE_SUITE_XML);
}
/**
@@ -179,4 +173,21 @@ public abstract class AbstractGenerateMo
* @return The name of the Runtime class.
*/
protected abstract String getRuntimeClass();
+
+ private final class MavenOutputLocator implements OutputLocator {
+
+ private File outputDirectory;
+
+ private MavenOutputLocator(File outputDirectory) {
+ this.outputDirectory = outputDirectory;
+ }
+
+ @Override
+ public OutputStream getOutputStream(String resourcePath)
+ throws IOException {
+ File target = new File(outputDirectory, resourcePath);
+ target.getParentFile().mkdirs();
+ return buildContext.newFileOutputStream(target);
+ }
+ }
}
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojo.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojo.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojo.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojo.java Sun Dec 7 06:47:59 2014
@@ -37,97 +37,90 @@ package org.apache.tiles.autotag.plugin;
*/
import java.io.File;
-import java.io.FileWriter;
import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.io.Writer;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.tiles.autotag.core.QDoxTemplateSuiteFactory;
import org.apache.tiles.autotag.model.TemplateSuite;
-import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
-import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
-import org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner;
-import org.codehaus.plexus.compiler.util.scan.mapping.SourceMapping;
+import org.codehaus.plexus.util.Scanner;
+import org.sonatype.plexus.build.incremental.BuildContext;
import com.thoughtworks.xstream.XStream;
/**
* Creates a descriptor for the template model in XML format.
- *
- * @goal create-descriptor
- *
- * @phase generate-resources
*/
+@Mojo(name = "create-descriptor", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class CreateDescriptorMojo extends AbstractMojo {
/**
* Location of the file.
- *
- * @parameter expression="${project.build.directory}/autotag-template-suite"
- * @required
*/
+ @Parameter(defaultValue = "${project.build.directory}/autotag-template-suite", required = true)
File outputDirectory;
/**
* Location of the file.
- *
- * @parameter expression="${project.build.sourceDirectory}"
- * @required
*/
+ @Parameter(property = "project.build.sourceDirectory", required = true)
File sourceDirectory;
/**
- * @parameter
+ * included files.
*/
+ @Parameter
Set<String> includes;
/**
* The name of the template.
- *
- * @parameter
- * @required
*/
+ @Parameter(required = true)
String name;
/**
* The documentation of the suite.
- *
- * @parameter
*/
+ @Parameter
String documentation;
/**
- * @parameter
+ * Excluded files.
*/
+ @Parameter
Set<String> excludes;
/**
* Name of the request class.
- * @parameter expression="org.apache.tiles.request.Request"
- * @required
*/
+ @Parameter(defaultValue="org.apache.tiles.request.Request", required = true)
String requestClass;
- /**
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
+ @Parameter(property = "project", required = true, readonly = true)
MavenProject project;
+ @Component
+ BuildContext buildContext;
+
/** {@inheritDoc} */
- @SuppressWarnings("unchecked")
public void execute() throws MojoExecutionException {
try {
- Set<File> filesSet = getSourceInclusionScanner().getIncludedSources(
- sourceDirectory, outputDirectory);
- File[] files = new File[filesSet.size()];
- QDoxTemplateSuiteFactory factory = new QDoxTemplateSuiteFactory(filesSet.toArray(files));
+ String[] fileNames = getSourceInclusionScanner().getIncludedFiles();
+ File[] files = new File[fileNames.length];
+ for(int i=0; i<fileNames.length; i++) {
+ files[i] = new File(sourceDirectory, fileNames[i]);
+ }
+ QDoxTemplateSuiteFactory factory = new QDoxTemplateSuiteFactory(files);
factory.setSuiteName(name);
factory.setSuiteDocumentation(documentation);
factory.setRequestClass(requestClass);
@@ -136,15 +129,14 @@ public class CreateDescriptorMojo extend
File dir = new File(outputDirectory, "META-INF");
dir.mkdirs();
File outputFile = new File(dir, "template-suite.xml");
- outputFile.createNewFile();
- Writer writer = new FileWriter(outputFile);
+ OutputStream os = buildContext.newFileOutputStream(outputFile);
+ Writer writer = new OutputStreamWriter(os);
xstream.toXML(suite, writer);
writer.close();
+ buildContext.refresh(outputDirectory);
Resource resource = new Resource();
resource.setDirectory(outputDirectory.getAbsolutePath());
project.addResource(resource);
- } catch (InclusionScanException e) {
- throw new MojoExecutionException("error", e);
} catch (IOException e) {
throw new MojoExecutionException("error", e);
}
@@ -155,8 +147,8 @@ public class CreateDescriptorMojo extend
*
* @return The inclusion scanner.
*/
- private SourceInclusionScanner getSourceInclusionScanner() {
- SourceInclusionScanner scanner = null;
+ private Scanner getSourceInclusionScanner() {
+ Scanner scanner = buildContext.newScanner( sourceDirectory );
if (includes == null) {
includes = new HashSet<String>();
}
@@ -164,24 +156,16 @@ public class CreateDescriptorMojo extend
excludes = new HashSet<String>();
}
- if (includes.isEmpty() && excludes.isEmpty()) {
- includes = Collections.singleton("**/*Model.java");
- scanner = new SimpleSourceInclusionScanner(includes, excludes);
- } else {
- if (includes.isEmpty()) {
- includes = Collections.singleton("**/*Model.java");
- }
- scanner = new SimpleSourceInclusionScanner(includes, excludes);
+ if (includes.isEmpty()) {
+ scanner.setIncludes(new String[] {"**/*Model.java"});
}
- scanner.addSourceMapping(new SourceMapping() {
-
- @SuppressWarnings("rawtypes")
- @Override
- public Set getTargetFiles(File targetDir, String source) {
- return null;
- }
- });
-
+ else {
+ scanner.setIncludes(includes.toArray(new String[includes.size()]));
+ }
+ if (!excludes.isEmpty()) {
+ scanner.setExcludes(excludes.toArray(new String[excludes.size()]));
+ }
+ scanner.scan();
return scanner;
}
}
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateFreemarkerMojo.java Sun Dec 7 06:47:59 2014
@@ -22,6 +22,10 @@ package org.apache.tiles.autotag.plugin;
import java.util.Map;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.tiles.autotag.freemarker.FMTemplateGeneratorFactory;
import org.apache.tiles.autotag.generate.TemplateGeneratorBuilder;
import org.apache.tiles.autotag.generate.TemplateGeneratorFactory;
@@ -29,19 +33,17 @@ import org.apache.velocity.app.VelocityE
/**
* Generates Freemarker code.
- *
- * @goal generate-freemarker
- *
- * @phase generate-sources
- * @requiresDependencyResolution compile
*/
+@Mojo(
+ name = "generate-freemarker",
+ defaultPhase = LifecyclePhase.GENERATE_SOURCES,
+ requiresDependencyResolution = ResolutionScope.COMPILE)
public class GenerateFreemarkerMojo extends AbstractGenerateMojo {
/**
* Name of the Runtime.
- * @parameter expression="org.apache.tiles.autotag.freemarker.runtime.Runtime"
- * @required
*/
+ @Parameter(defaultValue = "org.apache.tiles.autotag.freemarker.runtime.Runtime", required = true)
String freemarkerRuntime;
/** {@inheritDoc} */
@@ -59,7 +61,7 @@ public class GenerateFreemarkerMojo exte
@Override
protected TemplateGeneratorFactory createTemplateGeneratorFactory(
VelocityEngine velocityEngine) {
- return new FMTemplateGeneratorFactory(classesOutputDirectory,
+ return new FMTemplateGeneratorFactory(classesOutputLocator,
velocityEngine, TemplateGeneratorBuilder.createNewInstance());
}
}
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateJspMojo.java Sun Dec 7 06:47:59 2014
@@ -39,6 +39,10 @@ package org.apache.tiles.autotag.plugin;
import java.util.HashMap;
import java.util.Map;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.tiles.autotag.generate.TemplateGeneratorBuilder;
import org.apache.tiles.autotag.generate.TemplateGeneratorFactory;
import org.apache.tiles.autotag.jsp.JspTemplateGeneratorFactory;
@@ -47,26 +51,23 @@ import org.apache.velocity.app.VelocityE
/**
* Goal which touches a timestamp file.
- *
- * @goal generate-jsp
- *
- * @phase generate-sources
- * @requiresDependencyResolution compile
*/
+@Mojo(
+ name = "generate-jsp",
+ defaultPhase = LifecyclePhase.GENERATE_SOURCES,
+ requiresDependencyResolution = ResolutionScope.COMPILE)
public class GenerateJspMojo extends AbstractGenerateMojo {
/**
* URI of the tag library.
- *
- * @parameter expression="http://www.example.com/tags/example"
*/
+ @Parameter(required = true)
String taglibURI;
/**
* Name of the Runtime.
- * @parameter expression="org.apache.tiles.autotag.jsp.runtime.Runtime"
- * @required
*/
+ @Parameter(defaultValue = "org.apache.tiles.autotag.jsp.runtime.Runtime", required = true)
String jspRuntime;
/** {@inheritDoc} */
@@ -86,8 +87,8 @@ public class GenerateJspMojo extends Abs
@Override
protected TemplateGeneratorFactory createTemplateGeneratorFactory(
VelocityEngine velocityEngine) {
- return new JspTemplateGeneratorFactory(classesOutputDirectory,
- resourcesOutputDirectory, velocityEngine,
+ return new JspTemplateGeneratorFactory(classesOutputLocator,
+ resourcesOutputLocator, velocityEngine,
TemplateGeneratorBuilder.createNewInstance());
}
}
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateVelocityMojo.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateVelocityMojo.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateVelocityMojo.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/main/java/org/apache/tiles/autotag/plugin/GenerateVelocityMojo.java Sun Dec 7 06:47:59 2014
@@ -38,6 +38,10 @@ package org.apache.tiles.autotag.plugin;
import java.util.Map;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.tiles.autotag.generate.TemplateGeneratorBuilder;
import org.apache.tiles.autotag.generate.TemplateGeneratorFactory;
import org.apache.tiles.autotag.velocity.VelocityTemplateGeneratorFactory;
@@ -46,19 +50,17 @@ import org.apache.velocity.app.VelocityE
/**
* Generates Velocity code.
- *
- * @goal generate-velocity
- *
- * @phase generate-sources
- * @requiresDependencyResolution compile
*/
+@Mojo(
+ name = "generate-velocity",
+ defaultPhase = LifecyclePhase.GENERATE_SOURCES,
+ requiresDependencyResolution = ResolutionScope.COMPILE)
public class GenerateVelocityMojo extends AbstractGenerateMojo {
/**
* Name of the Runtime.
- * @parameter expression="org.apache.tiles.autotag.velocity.runtime.Runtime"
- * @required
*/
+ @Parameter(defaultValue = "org.apache.tiles.autotag.velocity.runtime.Runtime", required = true)
String velocityRuntime;
/** {@inheritDoc} */
@@ -76,8 +78,8 @@ public class GenerateVelocityMojo extend
@Override
protected TemplateGeneratorFactory createTemplateGeneratorFactory(
VelocityEngine velocityEngine) {
- return new VelocityTemplateGeneratorFactory(classesOutputDirectory,
- resourcesOutputDirectory, velocityEngine,
+ return new VelocityTemplateGeneratorFactory(classesOutputLocator,
+ resourcesOutputLocator, velocityEngine,
TemplateGeneratorBuilder.createNewInstance());
}
}
Added: tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml?rev=1643653&view=auto
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml (added)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml Sun Dec 7 06:47:59 2014
@@ -0,0 +1,56 @@
+<lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <goals>
+ <goal>create-descriptor</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <execute>
+ <runOnConfiguration>true</runOnConfiguration>
+ <runOnIncremental>true</runOnIncremental>
+ </execute>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <goals>
+ <goal>generate-freemarker</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <execute>
+ <runOnConfiguration>true</runOnConfiguration>
+ <runOnIncremental>true</runOnIncremental>
+ </execute>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <goals>
+ <goal>generate-jsp</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <execute>
+ <runOnConfiguration>true</runOnConfiguration>
+ <runOnIncremental>true</runOnIncremental>
+ </execute>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <goals>
+ <goal>generate-velocity</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <execute>
+ <runOnConfiguration>true</runOnConfiguration>
+ <runOnIncremental>true</runOnIncremental>
+ </execute>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+</lifecycleMappingMetadata>
\ No newline at end of file
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojoTest.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojoTest.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojoTest.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/AbstractGenerateMojoTest.java Sun Dec 7 06:47:59 2014
@@ -37,6 +37,7 @@ import org.apache.tiles.autotag.generate
import org.apache.tiles.autotag.model.TemplateSuite;
import org.apache.velocity.app.VelocityEngine;
import org.junit.Test;
+import org.sonatype.plexus.build.incremental.BuildContext;
/**
* Tests {@link AbstractGenerateMojo}.
@@ -53,6 +54,7 @@ public class AbstractGenerateMojoTest {
@Test
public void testExecute() throws IOException, MojoExecutionException {
MavenProject mavenProject = createMock(MavenProject.class);
+ BuildContext buildContext = createMock(BuildContext.class);
TemplateGeneratorFactory factory = createMock(TemplateGeneratorFactory.class);
TemplateGenerator generator = createMock(TemplateGenerator.class);
@SuppressWarnings("unchecked")
@@ -74,7 +76,10 @@ public class AbstractGenerateMojoTest {
mojo.packageName = "my.package";
mojo.project = mavenProject;
mojo.requestClass = "my.package.Request";
+ mojo.buildContext = buildContext;
+ buildContext.refresh(isA(File.class));
+ buildContext.refresh(isA(File.class));
expect(mojo.createTemplateGeneratorFactory(isA(VelocityEngine.class))).andReturn(factory);
expect(factory.createTemplateGenerator()).andReturn(generator);
expect(mojo.getParameters()).andReturn(params);
@@ -85,10 +90,10 @@ public class AbstractGenerateMojoTest {
mavenProject.addResource(isA(Resource.class));
mavenProject.addCompileSourceRoot(classesOutputDirectory.getAbsolutePath());
- replay(mavenProject, mojo, factory, generator, params);
+ replay(mavenProject, buildContext, mojo, factory, generator, params);
mojo.execute();
FileUtils.deleteDirectory(temp);
- verify(mavenProject, mojo, factory, generator, params);
+ verify(mavenProject, buildContext, mojo, factory, generator, params);
}
}
Modified: tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojoTest.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojoTest.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojoTest.java (original)
+++ tiles/autotag/trunk/maven-autotag-plugin/src/test/java/org/apache/tiles/autotag/plugin/CreateDescriptorMojoTest.java Sun Dec 7 06:47:59 2014
@@ -20,11 +20,20 @@
*/
package org.apache.tiles.autotag.plugin;
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.*;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -44,7 +53,9 @@ import org.apache.tiles.autotag.plugin.i
import org.apache.tiles.autotag.plugin.internal.ExampleModel;
import org.apache.tiles.autotag.plugin.internal.ExampleRequest;
import org.apache.tiles.autotag.plugin.internal.NotFeasibleExampleModel;
+import org.codehaus.plexus.util.Scanner;
import org.junit.Test;
+import org.sonatype.plexus.build.incremental.BuildContext;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider;
@@ -64,9 +75,12 @@ public class CreateDescriptorMojoTest {
@Test
public void testExecute() throws IOException, MojoExecutionException {
MavenProject mavenProject = createMock(MavenProject.class);
+ BuildContext buildContext = createMock(BuildContext.class);
+ Scanner scanner = createMock(Scanner.class);
CreateDescriptorMojo mojo = new CreateDescriptorMojo();
mojo.sourceDirectory = new File(System.getProperty("basedir"), "src/test/java");
+ String[] models = getModels(mojo.sourceDirectory);
File temp = File.createTempFile("autotagmojo", ".tmp");
temp.delete();
temp.mkdirs();
@@ -75,10 +89,18 @@ public class CreateDescriptorMojoTest {
mojo.documentation = "This are the docs";
mojo.project = mavenProject;
mojo.requestClass = ExampleRequest.class.getName();
+ mojo.buildContext = buildContext;
mavenProject.addResource(isA(Resource.class));
-
- replay(mavenProject);
+ expect(buildContext.newScanner(isA(File.class))).andReturn(scanner);
+ scanner.setIncludes(isA(String[].class));
+ scanner.scan();
+ expect(scanner.getIncludedFiles()).andReturn(models);
+ File file = new File(temp, "META-INF/template-suite.xml");
+ file.getParentFile().mkdirs();
+ expect(buildContext.newFileOutputStream(isA(File.class))).andReturn(new FileOutputStream(file));
+ buildContext.refresh(isA(File.class));
+ replay(mavenProject, buildContext, scanner);
mojo.execute();
InputStream sis = new FileInputStream(new File(temp, "META-INF/template-suite.xml"));
XStream xstream = new XStream(new Sun14ReflectionProvider());
@@ -158,7 +180,22 @@ public class CreateDescriptorMojoTest {
assertNull(suite.getTemplateClassByName(NotFeasibleExampleModel.class.getName()));
FileUtils.deleteDirectory(temp);
- verify(mavenProject);
+ verify(mavenProject, buildContext);
}
+ private String[] getModels(File sourceDirectory) {
+ File modelDir = new File(sourceDirectory, "org/apache/tiles/autotag/plugin/internal/");
+ String[] models = modelDir.list(new FilenameFilter() {
+
+ @Override
+ public boolean accept(File dir, String name) {
+ return name.endsWith("Model.java");
+ }
+ });
+ for(int i = 0; i<models.length; i++) {
+ models[i] = "org/apache/tiles/autotag/plugin/internal/" + models[i];
+ }
+ return models;
+ }
+
}
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/AutotagRuntimeException.java Sun Dec 7 06:47:59 2014
@@ -27,7 +27,9 @@ package org.apache.tiles.autotag.core;
*/
public class AutotagRuntimeException extends RuntimeException {
- /**
+ private static final long serialVersionUID = -7265964601637841559L;
+
+ /**
* Constructor.
*/
public AutotagRuntimeException() {
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/ClassParseException.java Sun Dec 7 06:47:59 2014
@@ -27,7 +27,9 @@ package org.apache.tiles.autotag.core;
*/
public class ClassParseException extends AutotagRuntimeException {
- /**
+ private static final long serialVersionUID = -8579521283073016196L;
+
+ /**
* Constructor.
*/
public ClassParseException() {
Added: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/DirectoryOutputLocator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/DirectoryOutputLocator.java?rev=1643653&view=auto
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/DirectoryOutputLocator.java (added)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/DirectoryOutputLocator.java Sun Dec 7 06:47:59 2014
@@ -0,0 +1,46 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.autotag.core;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * Outputs the files in the test directory.
+ */
+public class DirectoryOutputLocator implements OutputLocator {
+
+ private File directory;
+
+ public DirectoryOutputLocator(File directory) {
+ this.directory = directory;
+ }
+
+ @Override
+ public OutputStream getOutputStream(String resourcePath) throws IOException {
+ File file = new File(directory, resourcePath);
+ file.getParentFile().mkdirs();
+ return new FileOutputStream(file);
+ }
+
+}
Added: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/OutputLocator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/OutputLocator.java?rev=1643653&view=auto
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/OutputLocator.java (added)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/core/OutputLocator.java Sun Dec 7 06:47:59 2014
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.autotag.core;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * Decouples the autotag generator from the actual location of the files.
+ */
+public interface OutputLocator {
+ /**
+ * Returns a writer for the file at this path.
+ * @param resourcePath the path of the file to write
+ * @return a Writer for the file.
+ */
+ OutputStream getOutputStream(String resourcePath) throws IOException;
+}
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGenerator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGenerator.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGenerator.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGenerator.java Sun Dec 7 06:47:59 2014
@@ -21,12 +21,13 @@
package org.apache.tiles.autotag.generate;
import java.io.File;
-import java.io.FileWriter;
import java.io.IOException;
+import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;
import org.apache.tiles.autotag.core.AutotagRuntimeException;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.model.TemplateClass;
import org.apache.tiles.autotag.model.TemplateSuite;
import org.apache.tiles.autotag.tool.StringTool;
@@ -59,13 +60,13 @@ public abstract class AbstractTemplateCl
}
@Override
- public void generate(File directory, String packageName,
+ public void generate(OutputLocator outputLocator, String packageName,
TemplateSuite suite, TemplateClass clazz, Map<String, String> parameters,
String runtimeClass, String requestClass) {
- File dir = new File(directory, getDirectoryName(directory, packageName,
- suite, clazz, parameters, runtimeClass, requestClass));
- dir.mkdirs();
- File file = new File(dir, getFilename(dir, packageName, suite, clazz, parameters, runtimeClass, requestClass));
+ String filePath =
+ getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)
+ + File.separator
+ + getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass);
VelocityContext context = new VelocityContext();
context.put("packageName", packageName);
context.put("suite", suite);
@@ -75,10 +76,9 @@ public abstract class AbstractTemplateCl
context.put("runtimeClass", runtimeClass);
context.put("requestClass", requestClass);
try {
- file.createNewFile();
- Template template = velocityEngine.getTemplate(getTemplatePath(dir,
+ Template template = velocityEngine.getTemplate(getTemplatePath(
packageName, suite, clazz, parameters, runtimeClass, requestClass));
- Writer writer = new FileWriter(file);
+ Writer writer = new OutputStreamWriter(outputLocator.getOutputStream(filePath));
try {
template.merge(context, writer);
} finally {
@@ -105,42 +105,39 @@ public abstract class AbstractTemplateCl
/**
* Calculates and returns the template path.
*
- * @param directory The directory where the file will be written.
* @param packageName The name of the package.
* @param suite The template suite.
* @param clazz The template class.
* @param parameters The map of parameters.
* @return The template path.
*/
- protected abstract String getTemplatePath(File directory,
+ protected abstract String getTemplatePath(
String packageName, TemplateSuite suite, TemplateClass clazz, Map<String, String> parameters,
String runtimeClass, String requestClass);
/**
* Calculates and returns the filename of the generated file.
*
- * @param directory The directory where the file will be written.
* @param packageName The name of the package.
* @param suite The template suite.
* @param clazz The template class.
* @param parameters The map of parameters.
* @return The template path.
*/
- protected abstract String getFilename(File directory, String packageName,
+ protected abstract String getFilename(String packageName,
TemplateSuite suite, TemplateClass clazz, Map<String, String> parameters, String runtimeClass,
String requestClass);
/**
* Calculates and returns the directory where the file will be written..
*
- * @param directory The directory where the file will be written.
* @param packageName The name of the package.
* @param suite The template suite.
* @param clazz The template class.
* @param parameters The map of parameters.
* @return The template path.
*/
- protected abstract String getDirectoryName(File directory,
+ protected abstract String getDirectoryName(
String packageName, TemplateSuite suite, TemplateClass clazz, Map<String, String> parameters,
String runtimeClass, String requestClass);
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateSuiteGenerator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateSuiteGenerator.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateSuiteGenerator.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/AbstractTemplateSuiteGenerator.java Sun Dec 7 06:47:59 2014
@@ -21,12 +21,13 @@
package org.apache.tiles.autotag.generate;
import java.io.File;
-import java.io.FileWriter;
import java.io.IOException;
+import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;
import org.apache.tiles.autotag.core.AutotagRuntimeException;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.model.TemplateSuite;
import org.apache.tiles.autotag.tool.StringTool;
import org.apache.velocity.Template;
@@ -57,20 +58,20 @@ public abstract class AbstractTemplateSu
}
@Override
- public void generate(File directory, String packageName, TemplateSuite suite, Map<String, String> parameters) {
- File dir = new File(directory, getDirectoryName(directory, packageName, suite, parameters));
- dir.mkdirs();
- File file = new File(dir, getFilename(dir, packageName, suite, parameters));
+ public void generate(OutputLocator outputLocator, String packageName, TemplateSuite suite, Map<String, String> parameters) {
+ String filePath =
+ getDirectoryName(packageName, suite, parameters)
+ + File.separator
+ + getFilename(packageName, suite, parameters);
VelocityContext context = new VelocityContext();
context.put("packageName", packageName);
context.put("suite", suite);
context.put("stringTool", new StringTool());
context.put("parameters", parameters);
try {
- file.createNewFile();
- Template template = velocityEngine.getTemplate(getTemplatePath(dir,
+ Template template = velocityEngine.getTemplate(getTemplatePath(
packageName, suite, parameters));
- Writer writer = new FileWriter(file);
+ Writer writer = new OutputStreamWriter(outputLocator.getOutputStream(filePath));
try {
template.merge(context, writer);
} finally {
@@ -95,38 +96,35 @@ public abstract class AbstractTemplateSu
/**
* Calculates and returns the template path.
*
- * @param directory The directory where the file will be written.
* @param packageName The name of the package.
* @param suite The template suite.
* @param parameters The map of parameters.
* @return The template path.
*/
- protected abstract String getTemplatePath(File directory,
+ protected abstract String getTemplatePath(
String packageName, TemplateSuite suite,
Map<String, String> parameters);
/**
* Calculates and returns the filename of the generated file.
*
- * @param directory The directory where the file will be written.
* @param packageName The name of the package.
* @param suite The template suite.
* @param parameters The map of parameters.
* @return The template path.
*/
- protected abstract String getFilename(File directory, String packageName,
+ protected abstract String getFilename(String packageName,
TemplateSuite suite, Map<String, String> parameters);
/**
* Calculates and returns the directory where the file will be written..
*
- * @param directory The directory where the file will be written.
* @param packageName The name of the package.
* @param suite The template suite.
* @param parameters The map of parameters.
* @return The template path.
*/
- protected abstract String getDirectoryName(File directory,
+ protected abstract String getDirectoryName(
String packageName, TemplateSuite suite,
Map<String, String> parameters);
}
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/BasicTemplateGenerator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/BasicTemplateGenerator.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/BasicTemplateGenerator.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/BasicTemplateGenerator.java Sun Dec 7 06:47:59 2014
@@ -20,10 +20,10 @@
*/
package org.apache.tiles.autotag.generate;
-import java.io.File;
import java.util.List;
import java.util.Map;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.model.TemplateClass;
import org.apache.tiles.autotag.model.TemplateSuite;
@@ -79,11 +79,11 @@ class BasicTemplateGenerator implements
public void generate(String packageName, TemplateSuite suite, Map<String, String> parameters,
String runtimeClass, String requestClass) {
for (TSGeneratorDirectoryPair pair : templateSuiteGenerators) {
- pair.getGenerator().generate(pair.getDirectory(), packageName, suite, parameters);
+ pair.getGenerator().generate(pair.getOutputLocator(), packageName, suite, parameters);
}
for (TemplateClass templateClass : suite.getTemplateClasses()) {
for (TCGeneratorDirectoryPair pair : templateClassGenerators) {
- pair.getGenerator().generate(pair.getDirectory(), packageName,
+ pair.getGenerator().generate(pair.getOutputLocator(), packageName,
suite, templateClass, parameters, runtimeClass, requestClass);
}
}
@@ -98,7 +98,7 @@ class BasicTemplateGenerator implements
/**
* The directory where files are generated.
*/
- private File directory;
+ private OutputLocator outputLocator;
/**
* The generator.
@@ -111,9 +111,9 @@ class BasicTemplateGenerator implements
* @param directory The directory where files are generated.
* @param generator The generator.
*/
- public TSGeneratorDirectoryPair(File directory,
+ public TSGeneratorDirectoryPair(OutputLocator outputLocator,
TemplateSuiteGenerator generator) {
- this.directory = directory;
+ this.outputLocator = outputLocator;
this.generator = generator;
}
@@ -122,8 +122,8 @@ class BasicTemplateGenerator implements
*
* @return The directory where files are generated.
*/
- public File getDirectory() {
- return directory;
+ public OutputLocator getOutputLocator() {
+ return outputLocator;
}
/**
@@ -145,7 +145,7 @@ class BasicTemplateGenerator implements
/**
* The directory where files are generated.
*/
- private File directory;
+ private OutputLocator outputLocator;
/**
* The generator.
@@ -158,9 +158,9 @@ class BasicTemplateGenerator implements
* @param directory The directory where files are generated.
* @param generator The generator.
*/
- public TCGeneratorDirectoryPair(File directory,
+ public TCGeneratorDirectoryPair(OutputLocator outputLocator,
TemplateClassGenerator generator) {
- this.directory = directory;
+ this.outputLocator = outputLocator;
this.generator = generator;
}
@@ -169,8 +169,8 @@ class BasicTemplateGenerator implements
*
* @return The directory where files are generated.
*/
- public File getDirectory() {
- return directory;
+ public OutputLocator getOutputLocator() {
+ return outputLocator;
}
/**
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateClassGenerator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateClassGenerator.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateClassGenerator.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateClassGenerator.java Sun Dec 7 06:47:59 2014
@@ -20,9 +20,9 @@
*/
package org.apache.tiles.autotag.generate;
-import java.io.File;
import java.util.Map;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.model.TemplateClass;
import org.apache.tiles.autotag.model.TemplateSuite;
@@ -43,7 +43,7 @@ public interface TemplateClassGenerator
* @param parameters Configuration parameters.
* @param runtimeClass The RequestBuilder implementation.
*/
- void generate(File directory, String packageName, TemplateSuite suite,
+ void generate(OutputLocator directory, String packageName, TemplateSuite suite,
TemplateClass clazz, Map<String, String> parameters,
String runtimeClass, String requestClass);
}
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateGeneratorBuilder.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateGeneratorBuilder.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateGeneratorBuilder.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateGeneratorBuilder.java Sun Dec 7 06:47:59 2014
@@ -20,10 +20,10 @@
*/
package org.apache.tiles.autotag.generate;
-import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.generate.BasicTemplateGenerator.TCGeneratorDirectoryPair;
import org.apache.tiles.autotag.generate.BasicTemplateGenerator.TSGeneratorDirectoryPair;
@@ -57,12 +57,12 @@ public class TemplateGeneratorBuilder {
/**
* The classes output directory.
*/
- private File classesOutputDirectory;
+ private OutputLocator classesOutputLocator;
/**
* The resources output directory.
*/
- private File resourcesOutputDirectory;
+ private OutputLocator resourcesOutputLocator;
/**
* Constructor.
@@ -87,8 +87,8 @@ public class TemplateGeneratorBuilder {
* @param classesOutputDirectory The classes output directory.
* @return This instance.
*/
- public TemplateGeneratorBuilder setClassesOutputDirectory(File classesOutputDirectory) {
- this.classesOutputDirectory = classesOutputDirectory;
+ public TemplateGeneratorBuilder setClassesOutputLocator(OutputLocator classesOutputLocator) {
+ this.classesOutputLocator = classesOutputLocator;
return this;
}
@@ -98,8 +98,8 @@ public class TemplateGeneratorBuilder {
* @param resourcesOutputDirectory The resources output directory.
* @return This instance.
*/
- public TemplateGeneratorBuilder setResourcesOutputDirectory(File resourcesOutputDirectory) {
- this.resourcesOutputDirectory = resourcesOutputDirectory;
+ public TemplateGeneratorBuilder setResourcesOutputLocator(OutputLocator resourcesOutputLocator) {
+ this.resourcesOutputLocator = resourcesOutputLocator;
return this;
}
@@ -110,12 +110,12 @@ public class TemplateGeneratorBuilder {
* @return This instance.
*/
public TemplateGeneratorBuilder addClassesTemplateSuiteGenerator(TemplateSuiteGenerator generator) {
- if (classesOutputDirectory == null) {
+ if (classesOutputLocator == null) {
throw new NullPointerException(
- "Classes output directory not specified, call 'setClassesOutputDirectory' first");
+ "Classes output locator not specified, call 'setClassesOutputLocator' first");
}
templateSuiteGenerators.add(new TSGeneratorDirectoryPair(
- classesOutputDirectory, generator));
+ classesOutputLocator, generator));
generatingClasses = true;
return this;
}
@@ -127,12 +127,12 @@ public class TemplateGeneratorBuilder {
* @return This instance.
*/
public TemplateGeneratorBuilder addClassesTemplateClassGenerator(TemplateClassGenerator generator) {
- if (classesOutputDirectory == null) {
+ if (classesOutputLocator == null) {
throw new NullPointerException(
- "Classes output directory not specified, call 'setClassesOutputDirectory' first");
+ "Classes output locator not specified, call 'setClassesOutputLocator' first");
}
templateClassGenerators.add(new TCGeneratorDirectoryPair(
- classesOutputDirectory, generator));
+ classesOutputLocator, generator));
generatingClasses = true;
return this;
}
@@ -144,12 +144,12 @@ public class TemplateGeneratorBuilder {
* @return This instance.
*/
public TemplateGeneratorBuilder addResourcesTemplateSuiteGenerator(TemplateSuiteGenerator generator) {
- if (resourcesOutputDirectory == null) {
+ if (resourcesOutputLocator == null) {
throw new NullPointerException(
- "Resources output directory not specified, call 'setClassesOutputDirectory' first");
+ "Resources output locator not specified, call 'setClassesOutputLocator' first");
}
templateSuiteGenerators.add(new TSGeneratorDirectoryPair(
- resourcesOutputDirectory, generator));
+ resourcesOutputLocator, generator));
generatingResources = true;
return this;
}
@@ -161,12 +161,12 @@ public class TemplateGeneratorBuilder {
* @return This instance.
*/
public TemplateGeneratorBuilder addResourcesTemplateClassGenerator(TemplateClassGenerator generator) {
- if (resourcesOutputDirectory == null) {
+ if (resourcesOutputLocator == null) {
throw new NullPointerException(
- "Resources output directory not specified, call 'setClassesOutputDirectory' first");
+ "Resources output locator not specified, call 'setClassesOutputLocator' first");
}
templateClassGenerators.add(new TCGeneratorDirectoryPair(
- resourcesOutputDirectory, generator));
+ resourcesOutputLocator, generator));
generatingResources = true;
return this;
}
Modified: tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateSuiteGenerator.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateSuiteGenerator.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateSuiteGenerator.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/main/java/org/apache/tiles/autotag/generate/TemplateSuiteGenerator.java Sun Dec 7 06:47:59 2014
@@ -20,9 +20,9 @@
*/
package org.apache.tiles.autotag.generate;
-import java.io.File;
import java.util.Map;
+import org.apache.tiles.autotag.core.OutputLocator;
import org.apache.tiles.autotag.model.TemplateSuite;
/**
@@ -35,10 +35,10 @@ public interface TemplateSuiteGenerator
/**
* Generates the code.
*
- * @param directory The base directory where the code will be put.
+ * @param outputLocator The base directory where the code will be put.
* @param packageName The package name.
* @param suite The template suite.
* @param parameters Configuration parameters.
*/
- void generate(File directory, String packageName, TemplateSuite suite, Map<String, String> parameters);
+ void generate(OutputLocator outputLocator, String packageName, TemplateSuite suite, Map<String, String> parameters);
}
Modified: tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGeneratorTest.java
URL: http://svn.apache.org/viewvc/tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGeneratorTest.java?rev=1643653&r1=1643652&r2=1643653&view=diff
==============================================================================
--- tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGeneratorTest.java (original)
+++ tiles/autotag/trunk/tiles-autotag-core/src/test/java/org/apache/tiles/autotag/generate/AbstractTemplateClassGeneratorTest.java Sun Dec 7 06:47:59 2014
@@ -20,16 +20,24 @@
*/
package org.apache.tiles.autotag.generate;
-import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createMockBuilder;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
import java.io.File;
-import java.io.FileWriter;
import java.io.IOException;
+import java.io.Writer;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.tiles.autotag.core.AutotagRuntimeException;
import org.apache.tiles.autotag.core.ClassParseException;
+import org.apache.tiles.autotag.core.OutputLocator;
+import org.apache.tiles.autotag.core.DirectoryOutputLocator;
import org.apache.tiles.autotag.model.TemplateClass;
import org.apache.tiles.autotag.model.TemplateSuite;
import org.apache.velocity.Template;
@@ -93,6 +101,7 @@ public class AbstractTemplateClassGenera
public void testGenerate() throws Exception {
directory.delete();
directory.mkdir();
+ OutputLocator locator = new DirectoryOutputLocator(directory);
TemplateSuite suite = createMock(TemplateSuite.class);
TemplateClass clazz = createMock(TemplateClass.class);
Template template = createMock(Template.class);
@@ -102,16 +111,15 @@ public class AbstractTemplateClassGenera
String runtimeClass = "org.apache.tiles.autotag.test.DoStuffRuntime";
String requestClass = "org.apache.tiles.autotag.test.DoStuffRequest";
- expect(generator.getDirectoryName(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
- File mydir = new File(directory, "mydir");
- expect(generator.getFilename(mydir , packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
+ expect(generator.getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
+ expect(generator.getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
String sampleVmPath = "/sample.vm";
- expect(generator.getTemplatePath(mydir, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
+ expect(generator.getTemplatePath(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
expect(velocityEngine.getTemplate("/sample.vm")).andReturn(template);
- template.merge(isA(VelocityContext.class), isA(FileWriter.class));
+ template.merge(isA(VelocityContext.class), isA(Writer.class));
replay(velocityEngine, generator, suite, clazz, template, parameters);
- generator.generate(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass);
+ generator.generate(locator, packageName, suite, clazz, parameters, runtimeClass, requestClass);
verify(velocityEngine, generator, suite, clazz, template, parameters);
}
@@ -123,6 +131,7 @@ public class AbstractTemplateClassGenera
public void testGenerateException1() throws Exception {
directory.delete();
directory.mkdir();
+ OutputLocator locator = new DirectoryOutputLocator(directory);
TemplateSuite suite = createMock(TemplateSuite.class);
TemplateClass clazz = createMock(TemplateClass.class);
Template template = createMock(Template.class);
@@ -132,15 +141,14 @@ public class AbstractTemplateClassGenera
String runtimeClass = "org.apache.tiles.autotag.test.DoStuffRuntime";
String requestClass = "org.apache.tiles.autotag.test.DoStuffRequest";
- expect(generator.getDirectoryName(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
- File mydir = new File(directory, "mydir");
- expect(generator.getFilename(mydir , packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
+ expect(generator.getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
+ expect(generator.getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
String sampleVmPath = "/sample.vm";
- expect(generator.getTemplatePath(mydir, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
+ expect(generator.getTemplatePath(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
expect(velocityEngine.getTemplate("/sample.vm")).andThrow(new ResourceNotFoundException("hello"));
replay(velocityEngine, generator, suite, clazz, template, parameters);
- generator.generate(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass);
+ generator.generate(locator, packageName, suite, clazz, parameters, runtimeClass, requestClass);
verify(velocityEngine, generator, suite, clazz, template, parameters);
}
@@ -152,6 +160,7 @@ public class AbstractTemplateClassGenera
public void testGenerateException2() throws Exception {
directory.delete();
directory.mkdir();
+ OutputLocator locator = new DirectoryOutputLocator(directory);
TemplateSuite suite = createMock(TemplateSuite.class);
TemplateClass clazz = createMock(TemplateClass.class);
Template template = createMock(Template.class);
@@ -161,15 +170,14 @@ public class AbstractTemplateClassGenera
String runtimeClass = "org.apache.tiles.autotag.test.DoStuffRuntime";
String requestClass = "org.apache.tiles.autotag.test.DoStuffRequest";
- expect(generator.getDirectoryName(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
- File mydir = new File(directory, "mydir");
- expect(generator.getFilename(mydir , packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
+ expect(generator.getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
+ expect(generator.getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
String sampleVmPath = "/sample.vm";
- expect(generator.getTemplatePath(mydir, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
+ expect(generator.getTemplatePath(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
expect(velocityEngine.getTemplate("/sample.vm")).andThrow(new ParseErrorException("hello"));
replay(velocityEngine, generator, suite, clazz, template, parameters);
- generator.generate(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass);
+ generator.generate(locator, packageName, suite, clazz, parameters, runtimeClass, requestClass);
verify(velocityEngine, generator, suite, clazz, template, parameters);
}
@@ -181,6 +189,7 @@ public class AbstractTemplateClassGenera
public void testGenerateException3() throws Exception {
directory.delete();
directory.mkdir();
+ OutputLocator locator = new DirectoryOutputLocator(directory);
TemplateSuite suite = createMock(TemplateSuite.class);
TemplateClass clazz = createMock(TemplateClass.class);
Template template = createMock(Template.class);
@@ -190,15 +199,14 @@ public class AbstractTemplateClassGenera
String runtimeClass = "org.apache.tiles.autotag.test.DoStuffRuntime";
String requestClass = "org.apache.tiles.autotag.test.DoStuffRequest";
- expect(generator.getDirectoryName(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
- File mydir = new File(directory, "mydir");
- expect(generator.getFilename(mydir , packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
+ expect(generator.getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
+ expect(generator.getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
String sampleVmPath = "/sample.vm";
- expect(generator.getTemplatePath(mydir, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
+ expect(generator.getTemplatePath(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
expect(velocityEngine.getTemplate("/sample.vm")).andThrow(new Exception());
replay(velocityEngine, generator, suite, clazz, template, parameters);
- generator.generate(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass);
+ generator.generate(locator, packageName, suite, clazz, parameters, runtimeClass, requestClass);
verify(velocityEngine, generator, suite, clazz, template, parameters);
}
@@ -212,6 +220,7 @@ public class AbstractTemplateClassGenera
public void testGenerateException4() throws Exception {
directory.delete();
directory.mkdir();
+ OutputLocator locator = new DirectoryOutputLocator(directory);
TemplateSuite suite = createMock(TemplateSuite.class);
TemplateClass clazz = createMock(TemplateClass.class);
Template template = createMock(Template.class);
@@ -221,17 +230,16 @@ public class AbstractTemplateClassGenera
String runtimeClass = "org.apache.tiles.autotag.test.DoStuffRuntime";
String requestClass = "org.apache.tiles.autotag.test.DoStuffRequest";
- expect(generator.getDirectoryName(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
- File mydir = new File(directory, "mydir");
- expect(generator.getFilename(mydir , packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
+ expect(generator.getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
+ expect(generator.getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
String sampleVmPath = "/sample.vm";
- expect(generator.getTemplatePath(mydir, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
+ expect(generator.getTemplatePath(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
expect(velocityEngine.getTemplate("/sample.vm")).andReturn(template);
- template.merge(isA(VelocityContext.class), isA(FileWriter.class));
+ template.merge(isA(VelocityContext.class), isA(Writer.class));
expectLastCall().andThrow(new IOException());
replay(velocityEngine, generator, suite, clazz, template, parameters);
- generator.generate(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass);
+ generator.generate(locator, packageName, suite, clazz, parameters, runtimeClass, requestClass);
verify(velocityEngine, generator, suite, clazz, template, parameters);
}
@@ -245,6 +253,7 @@ public class AbstractTemplateClassGenera
public void testGenerateException5() throws Exception {
directory.delete();
directory.mkdir();
+ OutputLocator locator = new DirectoryOutputLocator(directory);
TemplateSuite suite = createMock(TemplateSuite.class);
TemplateClass clazz = createMock(TemplateClass.class);
Template template = createMock(Template.class);
@@ -254,17 +263,16 @@ public class AbstractTemplateClassGenera
String runtimeClass = "org.apache.tiles.autotag.test.DoStuffRuntime";
String requestClass = "org.apache.tiles.autotag.test.DoStuffRequest";
- expect(generator.getDirectoryName(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
- File mydir = new File(directory, "mydir");
- expect(generator.getFilename(mydir , packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
+ expect(generator.getDirectoryName(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("mydir");
+ expect(generator.getFilename(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn("myfile.txt");
String sampleVmPath = "/sample.vm";
- expect(generator.getTemplatePath(mydir, packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
+ expect(generator.getTemplatePath(packageName, suite, clazz, parameters, runtimeClass, requestClass)).andReturn(sampleVmPath);
expect(velocityEngine.getTemplate("/sample.vm")).andReturn(template);
- template.merge(isA(VelocityContext.class), isA(FileWriter.class));
+ template.merge(isA(VelocityContext.class), isA(Writer.class));
expectLastCall().andThrow(new ClassParseException());
replay(velocityEngine, generator, suite, clazz, template, parameters);
- generator.generate(directory, packageName, suite, clazz, parameters, runtimeClass, requestClass);
+ generator.generate(locator, packageName, suite, clazz, parameters, runtimeClass, requestClass);
verify(velocityEngine, generator, suite, clazz, template, parameters);
}