Woden
  1. Woden
  2. WODEN-157

SOAP binding reuses HTTP properties

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: M7a
    • Fix Version/s: 1.0
    • 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.

      (design) the SOAP binding reuses HTTP properties. In Woden, the
      reused properties are returned when looking at the SOAP extensions
      (for instance SOAPBindingExtensions.isHttpCookies(), and all similar
      occurrences). I believe this is counterintuitive - when I'm looking for
      the value of the

      {http cookies} property on a binding, it's defined by a
      WHTTP extension attribute and it should be available under that
      namespace.

      Why do I care? The RDF binding maps {http cookies}

      into the same thing
      whether it is on an HTTP binding or on a SOAP binding, and I must check
      two different extensions to get the value of this property.

      SOAPBindingExtensions.isHttpCookies(), if it's there at all, should IMHO
      be syntactic sugar for HTTPBindingExtensions.isHttpCookies() on the same
      binding, but as it is, I don't even get HTTPBindingExtensions on a SOAP
      binding. The type of a binding should not dictate the namespaces of
      allowed extensions, or under what namespaces one can find some
      properties. I don't think the spec intends that.

        Activity

        Hide
        Lawrence Mandel added a comment -

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

        The workaround for 1 (157) is that my code duplicates the RDF mapping
        for the HTTP properties, getting their values from both SOAP*Extensions
        and HTTP*Extensions.

        Show
        Lawrence Mandel added a comment - Futher info from Jacek. See http://lists.w3.org/Archives/Public/www-ws-desc/2007May/0007.html . The workaround for 1 (157) is that my code duplicates the RDF mapping for the HTTP properties, getting their values from both SOAP*Extensions and HTTP*Extensions.
        Hide
        John Kaputin added a comment -

        With WODEN-47, it's possible to use the new WSDLComponent methods getExtensionProperties(extNSuri) or getExtensionProperty(extNSuri, extPropNameString), which will return all ext props from an ext namespace or just a specific ext property.

        The RDF binding could map

        {http cookies}

        by calling:

        Binding.getExtensionProperty(HTTPConstants.NS_URI_HTTP, HTTPContants.PROP_HTTP_COOKIES);

        ....or by retrieving the set of binding ext props from the HTTP ext namespace:

        Binding.getExtensionProperties(HTTPConstants.NS_URI_HTTP);

        This will work regardless of whether the binding is of type HTTP or SOAP/HTTP.

        The 'static' extension API, SOAPBindingExtensions still contains the HTTP extension accessor methods that apply when the underlying protocol is HTTP, but the new 'generic' extension programming model introduced by WODEN-47 can be used instead. I think we still need to consider removing the HTTP accessor methods from the static SOAP extension APIs because these APIs are really based on extension namespace, not binding type. If it's necessary, we could consider introducing some sort of 'binding-type' extension API, but this would need to cater for other WSDL extensions too, not just those defined by the WSDL spec (i.e. not just SOAP with a few additional HTTP properties).

        Show
        John Kaputin added a comment - With WODEN-47 , it's possible to use the new WSDLComponent methods getExtensionProperties(extNSuri) or getExtensionProperty(extNSuri, extPropNameString), which will return all ext props from an ext namespace or just a specific ext property. The RDF binding could map {http cookies} by calling: Binding.getExtensionProperty(HTTPConstants.NS_URI_HTTP, HTTPContants.PROP_HTTP_COOKIES); ....or by retrieving the set of binding ext props from the HTTP ext namespace: Binding.getExtensionProperties(HTTPConstants.NS_URI_HTTP); This will work regardless of whether the binding is of type HTTP or SOAP/HTTP. The 'static' extension API, SOAPBindingExtensions still contains the HTTP extension accessor methods that apply when the underlying protocol is HTTP, but the new 'generic' extension programming model introduced by WODEN-47 can be used instead. I think we still need to consider removing the HTTP accessor methods from the static SOAP extension APIs because these APIs are really based on extension namespace, not binding type. If it's necessary, we could consider introducing some sort of 'binding-type' extension API, but this would need to cater for other WSDL extensions too, not just those defined by the WSDL spec (i.e. not just SOAP with a few additional HTTP properties).

          People

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

            Dates

            • Created:
              Updated:

              Development