XalanJ2
  1. XalanJ2
  2. XALANJ-2475

XObject call to str then num fails / different results on multiple calls

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.7
    • Fix Version/s: None
    • Component/s: XPath-API
    • Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)
    • Labels:
      None
    • Environment:
      Any platform

      Description

      An XObject as obtained via XPath.execute returns different results for each call to str, num, nodeset, or bool. This quite similar to XALANJ-1335 but I wish to emphasize calling a different function, and that the result is different.

      In this case the result cannot be cached and used later as we wish to use a different result.

      For example:

      System.out.println( object.str() );
      int number = object.num() + 5;

      The second line does not work so long as the first line exists. You cannot extract multiple types from the result.

      There is nothing to suggest that these functions should have side-effects, nor is it understood why they would.

      This type of behaviour is vital in our TestPlan web testing suite which uses dynamic typing. We have no workaround.

        Activity

        Hide
        edA-qa mort-ora-y added a comment -

        Evidence to this being a defect is an inconsistency in behaviour.

        Given a simple XML:
        <root><value name='one'>12</value></root>

        And this XPath:
        //value[@name='one']

        object.str() returns "12" the first time, and empty strings subsequence calls

        But if you use this XPath:
        string(//value[@name='one'])

        object.str(), object.num() all return the correct results any number of times they are called

        Indeed it also works with the number() xpath function.

        The fact the the NodeSet implementation iterates over the nodes just appears wrong – there is no reason it should.

        Show
        edA-qa mort-ora-y added a comment - Evidence to this being a defect is an inconsistency in behaviour. Given a simple XML: <root><value name='one'>12</value></root> And this XPath: //value [@name='one'] object.str() returns "12" the first time, and empty strings subsequence calls But if you use this XPath: string(//value [@name='one'] ) object.str(), object.num() all return the correct results any number of times they are called Indeed it also works with the number() xpath function. The fact the the NodeSet implementation iterates over the nodes just appears wrong – there is no reason it should.

          People

          • Assignee:
            Unassigned
            Reporter:
            edA-qa mort-ora-y
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development