Velocity
  1. Velocity
  2. VELOCITY-151

RuntimeInstance.setDefaultProperties() codepage problem

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.3.1-rc2
    • Fix Version/s: 1.5
    • Component/s: Engine
    • Labels:
      None
    • Environment:
      Operating System: other
      Platform: Other

      Description

      There is a bug in the RuntimeInstance setDefaultProperties method that prevents
      Velocity 1.3.1 from running on an IBM mainframe.

      The code is currently written:

      InputStream inputStream = classLoader
      .getResourceAsStream( DEFAULT_RUNTIME_PROPERTIES );

      configuration.load( inputStream );

      Which loads the default runtime properties into an ExtendedProperties
      object.
      This fails on an OS/390 which has a default codepage of Cp1047 (ebcdic),
      since:

      1) the properties resource is packaged in the Jar in codepage ISO8859_1.
      2) The ExtendedProperties class attempts to load it using the default
      codepage (Cp1047).
      3) Because of the codepage mismatch, the resulting ExtendedProperties
      object is empty and you get the error:
      "It appears that no class was specified as the ResourceManager. Please
      ensure that all configuration information is correct."

      Note that java.util.Properties.load(InputStream) ALWAYS loads using
      "8859_1", since properties files are assumed to be in ASCII.

      A workaround to this bug is to load the default properties manually, add
      your changes and pass them all to the VelocityEngine.init(Properties)
      method.

      The fix is to change the line to:

      configuration.load( inputStream, "8859_1" );

      Which is consistent with java.util.Properties.load(). Also, any other uses
      of the ExtendedProperties.load() should be changed as well. In fact,
      ExtendedProperties.load() should probably default to "8859_1", IMO.

        Activity

        Hide
        Henning Schmiedehausen added a comment -

        Close all resolved issues for Engine 1.5 release.

        Show
        Henning Schmiedehausen added a comment - Close all resolved issues for Engine 1.5 release.
        Hide
        Will Glass-Husain added a comment -

        Updated to latest commons collection jar (3.1) so that this works. Would have switched to commons configuration except that bug still exists in that code base. submitted bugzilla issue 36699 for commons configuration. ( http://issues.apache.org/bugzilla/show_bug.cgi?id=36699 )

        Show
        Will Glass-Husain added a comment - Updated to latest commons collection jar (3.1) so that this works. Would have switched to commons configuration except that bug still exists in that code base. submitted bugzilla issue 36699 for commons configuration. ( http://issues.apache.org/bugzilla/show_bug.cgi?id=36699 )
        Hide
        Daniel Rall added a comment -

        Hmmm, how about Commons Configuration?

        Show
        Daniel Rall added a comment - Hmmm, how about Commons Configuration?
        Hide
        Kirk Wolf added a comment -

        It looks like commons/collections will be patching ExtendedProperties to fix
        this for everyone. See http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17616

        Show
        Kirk Wolf added a comment - It looks like commons/collections will be patching ExtendedProperties to fix this for everyone. See http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17616

          People

          • Assignee:
            Unassigned
            Reporter:
            Kirk Wolf
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development