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 2006/09/26 21:34:53 UTC
svn commit: r450163 - in /jakarta/velocity/engine/trunk:
src/java/org/apache/velocity/app/event/implement/
src/test/org/apache/velocity/test/ test/includeevent/
test/includeevent/compare/ test/includeevent/subdir/
Author: wglass
Date: Tue Sep 26 12:34:52 2006
New Revision: 450163
URL: http://svn.apache.org/viewvc?view=rev&rev=450163
Log:
applied patch VELOCITY-460 - IncludeRelativePath handler should treat paths beginning with a slash as absolute paths
Added:
jakarta/velocity/engine/trunk/test/includeevent/include-c.vm (with props)
jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm (with props)
jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm (with props)
jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm (with props)
Modified:
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/app/event/implement/IncludeRelativePath.java
jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/IncludeEventHandlingTestCase.java
jakarta/velocity/engine/trunk/test/includeevent/compare/test2.cmp
jakarta/velocity/engine/trunk/test/includeevent/subdir/test2.vm
Modified: jakarta/velocity/engine/trunk/src/java/org/apache/velocity/app/event/implement/IncludeRelativePath.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/app/event/implement/IncludeRelativePath.java?view=diff&rev=450163&r1=450162&r2=450163
==============================================================================
--- jakarta/velocity/engine/trunk/src/java/org/apache/velocity/app/event/implement/IncludeRelativePath.java (original)
+++ jakarta/velocity/engine/trunk/src/java/org/apache/velocity/app/event/implement/IncludeRelativePath.java Tue Sep 26 12:34:52 2006
@@ -19,7 +19,7 @@
import org.apache.velocity.app.event.IncludeEventHandler;
/**
- * Event handler that looks for included files relative to the path of the
+ * <p>Event handler that looks for included files relative to the path of the
* current template. The handler assumes that paths are separated by a forward
* slash "/" or backwards slash "\".
*
@@ -41,33 +41,22 @@
String currentResourcePath,
String directiveName)
{
+ // if the resource name starts with a slash, it's not a relative path
+ if (includeResourcePath.startsWith("/") || includeResourcePath.startsWith("\\") ) {
+ return includeResourcePath;
+ }
- // strip the starting slash from includeResourcePath, if it exists
- if (includeResourcePath.startsWith("/") || includeResourcePath.startsWith("\\") )
- includeResourcePath = includeResourcePath.substring(1);
-
- int slashpos1 = currentResourcePath.lastIndexOf("/");
- int slashpos2 = currentResourcePath.lastIndexOf("\\");
- int lastslashpos = -1;
- if ( (slashpos1 != -1) && (slashpos2 != -1) && (slashpos1 <= slashpos2) )
- lastslashpos = slashpos2;
-
- else if ( (slashpos1 != -1) && (slashpos2 != -1) && (slashpos1 > slashpos2) )
- lastslashpos = slashpos1;
-
- else if ( (slashpos1 != -1) && (slashpos2 == -1) )
- lastslashpos = slashpos1;
-
- else if ( (slashpos1 == -1) && (slashpos2 != -1) )
- lastslashpos = slashpos2;
+ int lastslashpos = Math.max(
+ currentResourcePath.lastIndexOf("/"),
+ currentResourcePath.lastIndexOf("\\")
+ );
// root of resource tree
- if ( (lastslashpos == -1) || (lastslashpos == 0) )
+ if (lastslashpos == -1) {
return includeResourcePath;
+ }
// prepend path to the include path
- else
- return currentResourcePath.substring(0,lastslashpos) + "/" + includeResourcePath;
-
+ return currentResourcePath.substring(0,lastslashpos) + "/" + includeResourcePath;
}
}
Modified: jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/IncludeEventHandlingTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/IncludeEventHandlingTestCase.java?view=diff&rev=450163&r1=450162&r2=450163
==============================================================================
--- jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/IncludeEventHandlingTestCase.java (original)
+++ jakarta/velocity/engine/trunk/src/test/org/apache/velocity/test/IncludeEventHandlingTestCase.java Tue Sep 26 12:34:52 2006
@@ -206,28 +206,18 @@
// treat as relative path
else if (EventHandlerBehavior == RELATIVE_PATH)
{
-
- // strip the starting slash from includeResourcePath, if it exists
- if (includeResourcePath.startsWith("/") || includeResourcePath.startsWith("\\") )
- includeResourcePath = includeResourcePath.substring(1);
-
- int slashpos1 = currentResourcePath.lastIndexOf("/");
- int slashpos2 = currentResourcePath.lastIndexOf("\\");
- int lastslashpos = -1;
- if ( (slashpos1 != -1) && (slashpos2 != -1) && (slashpos1 <= slashpos2) )
- lastslashpos = slashpos2;
-
- else if ( (slashpos1 != -1) && (slashpos2 != -1) && (slashpos1 > slashpos2) )
- lastslashpos = slashpos1;
-
- else if ( (slashpos1 != -1) && (slashpos2 == -1) )
- lastslashpos = slashpos1;
-
- else if ( (slashpos1 == -1) && (slashpos2 != -1) )
- lastslashpos = slashpos2;
+ // if the resource name starts with a slash, it's not a relative path
+ if (includeResourcePath.startsWith("/") || includeResourcePath.startsWith("\\") ) {
+ return includeResourcePath;
+ }
+
+ int lastslashpos = Math.max(
+ currentResourcePath.lastIndexOf("/"),
+ currentResourcePath.lastIndexOf("\\")
+ );
// root of resource tree
- if ( (lastslashpos == -1) || (lastslashpos == 0) )
+ if ( (lastslashpos == -1))
return includeResourcePath;
// prepend path to the input path
Modified: jakarta/velocity/engine/trunk/test/includeevent/compare/test2.cmp
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/test/includeevent/compare/test2.cmp?view=diff&rev=450163&r1=450162&r2=450163
==============================================================================
--- jakarta/velocity/engine/trunk/test/includeevent/compare/test2.cmp (original)
+++ jakarta/velocity/engine/trunk/test/includeevent/compare/test2.cmp Tue Sep 26 12:34:52 2006
@@ -1,3 +1,5 @@
Test File 2
Good include file b
-Good parse file b
\ No newline at end of file
+Good parse file b
+Good include file c
+Good parse file c
Added: jakarta/velocity/engine/trunk/test/includeevent/include-c.vm
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/test/includeevent/include-c.vm?view=auto&rev=450163
==============================================================================
--- jakarta/velocity/engine/trunk/test/includeevent/include-c.vm (added)
+++ jakarta/velocity/engine/trunk/test/includeevent/include-c.vm Tue Sep 26 12:34:52 2006
@@ -0,0 +1 @@
+Good include file c
\ No newline at end of file
Propchange: jakarta/velocity/engine/trunk/test/includeevent/include-c.vm
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/velocity/engine/trunk/test/includeevent/include-c.vm
------------------------------------------------------------------------------
svn:keywords = Id Author Date Revision
Added: jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm?view=auto&rev=450163
==============================================================================
--- jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm (added)
+++ jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm Tue Sep 26 12:34:52 2006
@@ -0,0 +1 @@
+Good parse file c
Propchange: jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/velocity/engine/trunk/test/includeevent/parse-c.vm
------------------------------------------------------------------------------
svn:keywords = Id Author Date Revision
Added: jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm?view=auto&rev=450163
==============================================================================
--- jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm (added)
+++ jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm Tue Sep 26 12:34:52 2006
@@ -0,0 +1 @@
+BAD include file c
Propchange: jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/velocity/engine/trunk/test/includeevent/subdir/include-c.vm
------------------------------------------------------------------------------
svn:keywords = Id Author Date Revision
Added: jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm?view=auto&rev=450163
==============================================================================
--- jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm (added)
+++ jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm Tue Sep 26 12:34:52 2006
@@ -0,0 +1 @@
+BAD parse file c
Propchange: jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/velocity/engine/trunk/test/includeevent/subdir/parse-c.vm
------------------------------------------------------------------------------
svn:keywords = Id Author Date Revision
Modified: jakarta/velocity/engine/trunk/test/includeevent/subdir/test2.vm
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/test/includeevent/subdir/test2.vm?view=diff&rev=450163&r1=450162&r2=450163
==============================================================================
--- jakarta/velocity/engine/trunk/test/includeevent/subdir/test2.vm (original)
+++ jakarta/velocity/engine/trunk/test/includeevent/subdir/test2.vm Tue Sep 26 12:34:52 2006
@@ -2,3 +2,7 @@
#include("include-b.vm")
#parse("parse-b.vm")
+
+#include("/include-c.vm")
+
+#parse("/parse-c.vm")
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org