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
        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.
        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.
        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.
        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

          People

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development