Uploaded image for project: 'Apache Taverna'
  1. Apache Taverna
  2. TAVERNA-60

XML splitters return wrong elements on maxOccurs=0

    XMLWordPrintableJSON

Details

    • Bug
    • Status: To Do
    • Minor
    • Resolution: Unresolved
    • None
    • None

    Description

      If a web service defines an output element with invalid maxOccurs=0, for instance:

        <xsd:element maxOccurs="0" minOccurs="0" name="outputUrl" type="xsd:anyURI"/>
      

      Then Taverna's XML splitters will, instead of giving a warning about the invalid URL, return a list of the content of all elements instead of <outputUrl>. So for instance if the input is:

      <blah>
        <fish>Soup</fish>
        <count>15</count>
        <outputUrl>http://google.com/</outputUrl>
      </blah>
      

      Given that "fish" and "count" are declared properly, their ports from the XML output splitter are correct, but for the port 'outputUrl' instead you get:

      Soup
      15
      http://google.com/
      

      Suggested fix:
      Give warning about invalid WSDL - and return error document on the given port. (Or don't include the port). We can't just return the element when maxOccurs is wrong, what if there's two <outputUrl>s - should we return a list (depth 1) on the port then? What about if it was declared as maxOccurs=1 (ie. we make the port of depth 0) and we get 3 such elements? Probably best to give an error whenever there is a mismatch.

      Attachments

        Activity

          People

            Unassigned Unassigned
            stain Stian Soiland-Reyes
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 2h
                2h
                Remaining:
                Remaining Estimate - 2h
                2h
                Logged:
                Time Spent - Not Specified
                Not Specified