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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]