Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-81

org.apache.velocity.util.StringUtils.chop(String s, int i, String eol) assumes too much about EOL string

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Invalid
    • 1.3-rc1
    • 1.5
    • Engine
    • None
    • Operating System: Windows XP
      Platform: PC
    • 9205

    Description

      I'm running Velocity with Texen under WinXP/cygwin/SunJDK1.3.1_02-b02

      When I try to generate my pages, I get the following exception:

      org.apache.velocity.exception.MethodInvocationException: Invocation of
      method 'chop' in class org.apache.velocity.util.StringUtils threw exception
      class java.lang.ArrayIndexOutOfBoundsException : null

      I've traced this back to the source code and found out that the reason for
      this exception is most probably the fact that Velocity assumes that the
      templates it is working with are written with the same EOL combination that is
      the default for the platform that it is running on.

      So, to give you an example, I have templates that have Unix-style linebreaks
      in them and I'm executing Velocity on Windows machine with those templates.
      This breaks the whole thing down.

      Workaround? Convert your linebreaks or replace your chop method with this:
      public static String chop(String s, int i, String eol)

      { char[] sa = s.toCharArray(); int length = sa.length; length -= i; return new String(sa, 0, length); }

      This will of course break the system, if you have windows-style linebreaks.

      So, maybe you can come up with some more elegant fix for this problem?

      Attachments

        Activity

          People

            Unassigned Unassigned
            neeme.praks@inpoc.com Neeme Praks
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: