XStream
  1. XStream
  2. XSTR-260

PropertiesConverter does not handle tabs and newlines

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.4.2
    • Component/s: None
    • Labels:
      None
    • JDK version and platform:
      Sun 1.4.2_08-b03 for Windows

      Description

      PropertiesConverter makes some bad assumptions about the Strings that
      appear in the name-value pairs. From the PropertiesConverter javadoc:

      Special converter for java.util.Properties that stores properties in a
      more compact form than java.util.Map. Because all entries of a
      Properties instance are Strings, a single element is used for each
      property with two attributes; one for key and one for value.

      The problem is that the XML spec
      (http://www.w3.org/TR/REC-xml/#AVNormalize) and the
      org.xmlpull.mxp1.MXParser "normalize" attributes to remove tabs,
      newlines, and carriage returns.

      So a value inside a Properties object called "my<tab>property" gets
      normalized to "my<space>property" when reading the attribute (see
      MXParser.parseAttribute()).

      When writing Properties to a file, Java escapes the tabs with a \t so
      that it would appear in the property files as

      key=my\tproperty

      PropertiesConverter should probably be removed entirely and Properties
      should be encoded just like any other Map using XML entities. It could
      still use attributes, but it would have to use [[CDATA]] in order to
      work with the XML spec.

        Issue Links

          People

          • Assignee:
            Jörg Schaible
            Reporter:
            Scott McFarland
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: