Woden
  1. Woden
  2. WODEN-159

InterfaceImpl.getAllInterfaceOperations and getAllInterfaceFaults are not quite recursive

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: M7a
    • Fix Version/s: M8
    • Component/s: Parser
    • Labels:
      None

      Description

      Jacek Kopecky <jacek.kopecky@deri.org> reported the following Woden bug on the W3C mailing list. See http://lists.w3.org/Archives/Public/www-ws-desc/2007May/0001.html.

      InterfaceImpl.getAllInterfaceOperations and getAllInterfaceFaults are
      not quite recursive, they only go one level of interface extension deep.
      This manifests in the flickr test-suite WSDL file when trying to access
      the InterfaceOperation of the BindingOperation for
      "flickr.groups.pools.add" - the method getInterfaceOperation() returns
      null because the actual operation is too deep in the hierarchy of
      extended interfaces.

      Fix: in both InterfaceImpl.getDerivedInterface*, change getInterface* to
      getAllInterface* - this can get into an infinite loop if a circular
      interface extension is not detected as an error first.

        Activity

        Hide
        Arthur Ryman added a comment -

        John, I committed the test case to the W3C test suite.
        See http://www.w3.org/Bugs/Public/show_bug.cgi?id=5477

        Show
        Arthur Ryman added a comment - John, I committed the test case to the W3C test suite. See http://www.w3.org/Bugs/Public/show_bug.cgi?id=5477
        John Kaputin made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        John Kaputin added a comment -

        r562092
        Fix to detect circular reference and avoid infinite loop.

        Show
        John Kaputin added a comment - r562092 Fix to detect circular reference and avoid infinite loop.
        John Kaputin made changes -
        Comment [ A new testcase for interface extension (assertion Interface-1009) which includes operations, faults and bindings, so any attempt to process these will result in an infinite loop if the circular reference is not correctly handled. Testcase to be contributed to W3C WSDL 2.0 test suite. ]
        Hide
        John Kaputin added a comment -

        The recursion through the interface extension tree has been fixed via JIRA WODEN-172. A further fix will be applied to InterfaceImpl to detect the circular interface reference and avoid an infinite loop when processing interface operations and faults. I have also created a new testcase, Interface-6B, and will contribute this to the W3C WSDL 2.0 test suite.

        Show
        John Kaputin added a comment - The recursion through the interface extension tree has been fixed via JIRA WODEN-172 . A further fix will be applied to InterfaceImpl to detect the circular interface reference and avoid an infinite loop when processing interface operations and faults. I have also created a new testcase, Interface-6B, and will contribute this to the W3C WSDL 2.0 test suite.
        John Kaputin made changes -
        Attachment Interface-6B.patch.txt [ 12363040 ]
        John Kaputin made changes -
        Attachment Interface-6B.patch.txt [ 12363040 ]
        John Kaputin made changes -
        Fix Version/s M8 [ 12312291 ]
        John Kaputin made changes -
        Field Original Value New Value
        Assignee John Kaputin [ jkaputin ]
        Hide
        Lawrence Mandel added a comment -

        Further info from Jacek. See http://lists.w3.org/Archives/Public/www-ws-desc/2007May/0007.html.

        The fix for 3 (159) is easy - in both InterfaceImpl.getDerivedInterface*
        methods, change getInterface* to getAllInterface* - but this can get
        into an infinite loop if a circular interface extension is not detected
        as an error first, which I haven't checked. The WSDL 2.0 test case
        FlickrHTTP-1G has enough interface extension to trigger this.

        Show
        Lawrence Mandel added a comment - Further info from Jacek. See http://lists.w3.org/Archives/Public/www-ws-desc/2007May/0007.html . The fix for 3 (159) is easy - in both InterfaceImpl.getDerivedInterface* methods, change getInterface* to getAllInterface* - but this can get into an infinite loop if a circular interface extension is not detected as an error first, which I haven't checked. The WSDL 2.0 test case FlickrHTTP-1G has enough interface extension to trigger this.
        Lawrence Mandel created issue -

          People

          • Assignee:
            John Kaputin
            Reporter:
            Lawrence Mandel
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development