You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by wg...@apache.org on 2005/10/06 07:14:52 UTC
svn commit: r306528 - in /jakarta/velocity/core/trunk:
src/java/org/apache/velocity/runtime/resource/loader/
src/test/org/apache/velocity/test/ test/absolute/ test/absolute/compare/
Author: wglass
Date: Wed Oct 5 22:14:48 2005
New Revision: 306528
URL: http://svn.apache.org/viewcvs?rev=306528&view=rev
Log:
treat the template name as an absolute path when the template path is empty. See VELOCITY-144 for a discussion about this patch.
Added:
jakarta/velocity/core/trunk/src/test/org/apache/velocity/test/AbsoluteFileResourceLoaderTestCase.java
jakarta/velocity/core/trunk/test/absolute/
jakarta/velocity/core/trunk/test/absolute/absolute.vm
jakarta/velocity/core/trunk/test/absolute/compare/
jakarta/velocity/core/trunk/test/absolute/compare/absolute.cmp
Modified:
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java
Modified: jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java?rev=306528&r1=306527&r2=306528&view=diff
==============================================================================
--- jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java (original)
+++ jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java Wed Oct 5 22:14:48 2005
@@ -35,8 +35,11 @@
import org.apache.commons.collections.ExtendedProperties;
/**
- * A loader for templates stored on the file system.
+ * A loader for templates stored on the file system. Treats the template
+ * as relative to the configured root path. If the root path is empty
+ * treats the template name as an absolute path.
*
+ * @author <a href="mailto:wglass@forio.com">Will Glass-Husain</a>
* @author <a href="mailto:mailmur@yahoo.com">Aki Nieminen</a>
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
* @version $Id$
@@ -161,7 +164,7 @@
{
try
{
- File file = new File( path, template );
+ File file = getFile(path,template);
if ( file.canRead() )
{
@@ -206,13 +209,13 @@
for (int i = 0; currentFile == null && i < paths.size(); i++)
{
String testPath = (String) paths.get(i);
- File testFile = new File(testPath, fileName);
+ File testFile = getFile(testPath, fileName);
if (testFile.canRead())
{
currentFile = testFile;
}
}
- File file = new File(path, fileName);
+ File file = getFile(path, fileName);
if (currentFile == null || !file.exists())
{
/*
@@ -244,7 +247,7 @@
public long getLastModified(Resource resource)
{
String path = (String) templatePaths.get(resource.getName());
- File file = new File(path, resource.getName());
+ File file = getFile(path, resource.getName());
if (file.canRead())
{
@@ -254,5 +257,26 @@
{
return 0;
}
+ }
+
+
+ /**
+ * Create a File based on either a relative path if given, or absolute path otherwise
+ */
+ private File getFile(String path, String template)
+ {
+
+ File file = null;
+
+ if("".equals(path))
+ {
+ file = new File( template );
+ }
+ else
+ {
+ file = new File ( path, template );
+ }
+
+ return file;
}
}
Added: jakarta/velocity/core/trunk/src/test/org/apache/velocity/test/AbsoluteFileResourceLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/test/org/apache/velocity/test/AbsoluteFileResourceLoaderTestCase.java?rev=306528&view=auto
==============================================================================
--- jakarta/velocity/core/trunk/src/test/org/apache/velocity/test/AbsoluteFileResourceLoaderTestCase.java (added)
+++ jakarta/velocity/core/trunk/src/test/org/apache/velocity/test/AbsoluteFileResourceLoaderTestCase.java Wed Oct 5 22:14:48 2005
@@ -0,0 +1,143 @@
+package org.apache.velocity.test;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.io.BufferedWriter;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+import junit.framework.Test;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.runtime.RuntimeSingleton;
+
+/**
+ * Test use of an absolute path with the FileResourceLoader
+ *
+ * @author <a href="mailto:wglass@apache.org">Will Glass-Husain</a>
+ * @version $Id: MultipleFileResourcePathTest.java,v 1.8 2001/10/22 03:53:26 jon Exp $
+ */
+public class AbsoluteFileResourceLoaderTestCase extends BaseTestCase
+{
+ /**
+ * VTL file extension.
+ */
+ private static final String TMPL_FILE_EXT = "vm";
+
+ /**
+ * Comparison file extension.
+ */
+ private static final String CMP_FILE_EXT = "cmp";
+
+ /**
+ * Comparison file extension.
+ */
+ private static final String RESULT_FILE_EXT = "res";
+
+ /**
+ * Path to template file. This will get combined with the
+ * application directory to form an absolute path
+ */
+ private final static String TEMPLATE_PATH = "test/absolute/absolute";
+
+ /**
+ * Results relative to the build directory.
+ */
+ private static final String RESULTS_DIR = "target/test/absolute/results";
+
+ /**
+ * Results relative to the build directory.
+ */
+ private static final String COMPARE_DIR = "test/absolute/compare";
+
+ /**
+ * Default constructor.
+ */
+ AbsoluteFileResourceLoaderTestCase()
+ {
+ super("AbsoluteFileResourceLoaderTest");
+
+ try
+ {
+ assureResultsDirectoryExists(RESULTS_DIR);
+
+
+ // signify we want to use an absolute path
+ Velocity.addProperty(
+ Velocity.FILE_RESOURCE_LOADER_PATH, "");
+
+ Velocity.init();
+ }
+ catch (Exception e)
+ {
+ System.err.println("Cannot setup AbsoluteFileResourceLoaderTest!");
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ public static Test suite ()
+ {
+ return new AbsoluteFileResourceLoaderTestCase();
+ }
+
+ /**
+ * Runs the test.
+ */
+ public void runTest ()
+ {
+ try
+ {
+
+ String curdir = System.getProperty("user.dir");
+ String f = getFileName(curdir, TEMPLATE_PATH, TMPL_FILE_EXT);
+
+ System.out.println("Retrieving template at absolute path: " + f);
+
+ Template template1 = RuntimeSingleton.getTemplate(f);
+
+ FileOutputStream fos1 =
+ new FileOutputStream (
+ getFileName(RESULTS_DIR, "absolute", RESULT_FILE_EXT));
+
+ Writer writer1 = new BufferedWriter(new OutputStreamWriter(fos1));
+
+ /*
+ * put the Vector into the context, and merge both
+ */
+
+ VelocityContext context = new VelocityContext();
+
+ template1.merge(context, writer1);
+ writer1.flush();
+ writer1.close();
+
+ if (!isMatch(RESULTS_DIR, COMPARE_DIR, "absolute",
+ RESULT_FILE_EXT, CMP_FILE_EXT))
+ {
+ fail("Output incorrect.");
+ }
+ }
+ catch (Exception e)
+ {
+ fail(e.getMessage());
+ }
+ }
+}
Added: jakarta/velocity/core/trunk/test/absolute/absolute.vm
URL: http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/test/absolute/absolute.vm?rev=306528&view=auto
==============================================================================
--- jakarta/velocity/core/trunk/test/absolute/absolute.vm (added)
+++ jakarta/velocity/core/trunk/test/absolute/absolute.vm Wed Oct 5 22:14:48 2005
@@ -0,0 +1,12 @@
+#*
+
+@test absolute.vm
+
+This template is used for Velocity regression testing.
+If you alter this template make sure you change the
+corresponding comparison file so that the regression
+test doesn't fail incorrectly.
+
+*#
+
+I am absolute.vm
Added: jakarta/velocity/core/trunk/test/absolute/compare/absolute.cmp
URL: http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/test/absolute/compare/absolute.cmp?rev=306528&view=auto
==============================================================================
--- jakarta/velocity/core/trunk/test/absolute/compare/absolute.cmp (added)
+++ jakarta/velocity/core/trunk/test/absolute/compare/absolute.cmp Wed Oct 5 22:14:48 2005
@@ -0,0 +1,3 @@
+
+
+I am absolute.vm
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org