Uploaded image for project: 'Spring Web Services'
  1. Spring Web Services
  2. SWS-558

Use custom data types for @XPathParam annotations

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Complete
    • Affects Version/s: 1.5.7
    • Fix Version/s: 2.0 GA
    • Component/s: Core
    • Labels:
      None

      Description

      We've been using @XPathParam annotations for a while, but the supported data types are too limiting. This becomes very clear with web services being passed a user context object as their first parameter. Setting up an XPathParam annotation for each user context field in the endpoint methods spoils the elegance of using XPathParam annotations.

      The attached patch makes it possible to define your endpoint methods like this:

          public void supportedTypes(@XPathParam("/root/child/complexType") UserContext userContext) {}

      by creating a UserContextParamConverter handling the conversion from a Node to the UserContext object, and registering this converter using the converters property in the bean definition of the ExtendableXPathParamAnnotationMethodEndpointAdapter class.

      This implementation tries XPathParamAnnotationMethodEndpointAdapter's conversion support first, then asks each converter registered. If my approach makes sense, theres no reason why the existing conversion support cannot be moved into it's own ParamConverter implementation as well.

      Please let me know if this is useful or if there are changes I could make to make it more acceptable.

      The patch depends on my other issue, SWS-557.

        Activity

        Hide
        arjen.poutsma Arjen Poutsma added a comment -

        Closing old issues

        Show
        arjen.poutsma Arjen Poutsma added a comment - Closing old issues
        Hide
        arjen.poutsma Arjen Poutsma added a comment -

        As of Spring-WS 2.0, the @XPathParam-annotated datatypes can now be converted into any type by using a Spring 3.0 ConversionService.

        Show
        arjen.poutsma Arjen Poutsma added a comment - As of Spring-WS 2.0, the @XPathParam-annotated datatypes can now be converted into any type by using a Spring 3.0 ConversionService.
        Hide
        eivindt Eivind Tagseth added a comment -

        A new class that extends XPathParamAnnotationMethodEndpointAdapter with the ability to register custom data type converters. Needs the patch from SWS-557 in order to compile.

        Show
        eivindt Eivind Tagseth added a comment - A new class that extends XPathParamAnnotationMethodEndpointAdapter with the ability to register custom data type converters. Needs the patch from SWS-557 in order to compile.

          People

          • Assignee:
            arjen.poutsma Arjen Poutsma
            Reporter:
            eivindt Eivind Tagseth
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: