groovy
  1. groovy
  2. GROOVY-4362

Node.text() returns empty string for non-String or Collection values

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.7.4
    • Fix Version/s: 1.8.6, 2.0-beta-3
    • Component/s: XML Processing
    • Labels:
      None
    • Testcase included:
      yes
    • Number of attachments :
      1

      Description

      The text() method of groovy.util.Node is coded to return an empty string ("") if you set a value that is not a string or a collection. This means if you set the value as a number you get back an empty string.

      Should this method return value.toString() in all cases where value is not a collection?

      For instance -

      def xml = "<root><node1/></root>"
      def root = new XmlParser().parseText(xml)
      root.node1[0].replaceNode() {
          node2() {
             childN(5)
             childS('5')
          }
      }
      
      assert root.node2[0].childS[0].text() == '5'
      assert root.node2[0].childN[0].text() == '5'
      

        Activity

        Hide
        Paul King added a comment -

        add code tags

        Show
        Paul King added a comment - add code tags
        Paul King made changes -
        Field Original Value New Value
        Description The text() method of groovy.util.Node is coded to return an empty string ("") if you set a value that is not a string or a collection. This means if you set the value as a number you get back an empty string.

        Should this method return value.toString() in all cases where value is not a collection?

        For instance -

        def xml = "<root><node1/></root>"
        def root = new XmlParser().parseText(xml)
        root.node1[0].replaceNode() {
            node2() {
               childN(5)
               childS('5')
            }
        }

        assert root.node2[0].childS[0].text() == '5'
        assert root.node2[0].childN[0].text() == '5'
        The text() method of groovy.util.Node is coded to return an empty string ("") if you set a value that is not a string or a collection. This means if you set the value as a number you get back an empty string.

        Should this method return value.toString() in all cases where value is not a collection?

        For instance -
        {code}
        def xml = "<root><node1/></root>"
        def root = new XmlParser().parseText(xml)
        root.node1[0].replaceNode() {
            node2() {
               childN(5)
               childS('5')
            }
        }

        assert root.node2[0].childS[0].text() == '5'
        assert root.node2[0].childN[0].text() == '5'
        {code}
        Hide
        Paul King added a comment -

        I believe this was fixed as a side-effect of GROOVY-5257. At least the fix I was going to apply for this issue was already applied even though it doesn't seem specifically related to GROOVY-5257. Perhaps I was working on both issues and committed both changes back then or perhaps it was required because of the tests required for that issue. Anyway, please report any problems if you still observe them.

        Show
        Paul King added a comment - I believe this was fixed as a side-effect of GROOVY-5257 . At least the fix I was going to apply for this issue was already applied even though it doesn't seem specifically related to GROOVY-5257 . Perhaps I was working on both issues and committed both changes back then or perhaps it was required because of the tests required for that issue. Anyway, please report any problems if you still observe them.
        Paul King made changes -
        Status Open [ 1 ] Closed [ 6 ]
        Assignee Paul King [ paulk ]
        Fix Version/s 2.0-beta-3 [ 18244 ]
        Fix Version/s 1.8.6 [ 18245 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Paul King
            Reporter:
            Jim Speakman
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: