Details

    • Type: New Feature
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: XML
    • Labels:
      None

      Description

      Previously mentioned here:
      http://forum.springframework.org/showthread.php?t=41191

      I will paraphrase in case the forums ever get changed again

      I've built something here that might be a nice addition to an xml-tiger package.

      Basically, it allows me to access xml like this (from my unit test):

      <?xml version="1.0" encoding="UTF-8"?>
      <s:Test xmlns:s="http://www.springframework.org/ws">
        <s:someString>Hello</s:someString>
        <s:anotherString sneaky='boo'>World</s:anotherString>
        <s:booleanExists/>
        <s:booleanTrue>true</s:booleanTrue>
        <s:booleanFalse>false</s:booleanFalse>
        <s:someDouble>123.456</s:someDouble>
        <s:yes>YES</s:yes>
      </s:Test>

      With a proxy generated for an interface that looks like this (again from the unit test):

      @NamespaceMapping(prefix = "s", uri = "http://www.springframework.org/ws")
      public interface Sample {
       
          @XPathMethod("/s:Test/s:someString")
          String getHello();
       
          @XPathMethod("/s:Test/s:anotherString[@sneaky=$0]")
          String getWorld(String sneaky);
       
          @XPathMethod("/s:Test/s:booleanExists")
          Boolean booleanExists();
       
          @XPathMethod("/s:Test/s:doesNotExist")
          Boolean booleanDoesNotExist();
       
          @XPathMethod("/s:Test/s:booleanTrue")
          Boolean booleanTrueValue();
       
          @XPathMethod("/s:Test/s:booleanFalse")
          Boolean booleanFalseValue();
       
          @XPathMethod("/s:Test/s:yes")
          YesNo yesNo();
       
          @XPathMethod("/s:Test/s:someDouble")
          Double doubleValue();
      }

      Quick notes...
      The "getWorld" method uses an XPathVariableResolver to map the method arguments to xpath variables.

      Like the XPathParam stuff in spring-ws, it supports the standard XPath types (String, Boolean, Double, Node, NodeList...). as well as using special Converters.

      YesNo in the example above is an enum, a converter is registered with the XPathProxyFactory that allows the conversion of a string to some object.

      XPath Booleans are touchy, they are based on existence, not content. This is the default behavior for the XPath proxy as well. Registering a Converter for Booleans though allows s:booleanFalse element above to evaluate to 'false'.

      I figured that a spring-xml-tiger package would be a good home for it as it is all JAXP and Annotations. If not, maybe I'll toss it up to sourceforge or googlecode.

      I'll attach a zip containing the code. Mind you it's totally "first-draft" quality; the package is "raykrueger.xpathproxy" and has almost no javadoc yet...

        Issue Links

          Activity

          raykrueger Ray Krueger created issue -
          raykrueger Ray Krueger made changes -
          Field Original Value New Value
          Attachment xpathproxy.zip [ 12714 ]
          raykrueger Ray Krueger made changes -
          Attachment xml-tiger.zip [ 12721 ]
          raykrueger Ray Krueger made changes -
          Link This issue depends on SWS-159 [ SWS-159 ]
          raykrueger Ray Krueger made changes -
          Status Open [ 1 ] Closed [ 6 ]
          Resolution Fixed [ 1 ]
          raykrueger Ray Krueger made changes -
          Assignee Arjen Poutsma [ arjen.poutsma ] Ray Krueger [ raykrueger ]
          Resolution Fixed [ 1 ]
          Status Closed [ 6 ] Reopened [ 4 ]
          raykrueger Ray Krueger made changes -
          Resolution Won't Fix [ 2 ]
          Status Reopened [ 4 ] Closed [ 6 ]
          raykrueger Ray Krueger made changes -
          Status Closed [ 6 ] Reopened [ 4 ]
          Resolution Won't Fix [ 2 ]
          raykrueger Ray Krueger made changes -
          Fix Version/s 1.1 [ 10543 ]
          arjen.poutsma Arjen Poutsma made changes -
          Component/s XML [ 10200 ]
          raykrueger Ray Krueger made changes -
          Attachment xml-tiger-2007-11-20.zip [ 13130 ]
          raykrueger Ray Krueger made changes -
          Assignee Ray Krueger [ raykrueger ] Arjen Poutsma [ arjen.poutsma ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 1.5 M1 [ 10543 ]
          Fix Version/s 1.5 M2 [ 10720 ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 1.5 M2 [ 10720 ]
          Fix Version/s 1.5 RC1 [ 10652 ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 1.5.1 [ 10917 ]
          Fix Version/s 1.5 RC1 [ 10652 ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 1.5.1 [ 10917 ]
          Fix Version/s 1.5.2 [ 10966 ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 1.5.2 [ 10966 ]
          Fix Version/s 1.6 [ 10981 ]
          arjen.poutsma Arjen Poutsma made changes -
          Link This issue is related to SWS-291 [ SWS-291 ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 1.6 [ 10981 ]
          Fix Version/s 1.6 M1 [ 11110 ]
          raykrueger Ray Krueger made changes -
          Resolution Fixed [ 1 ]
          Status Reopened [ 4 ] Closed [ 6 ]
          arjen.poutsma Arjen Poutsma made changes -
          Status Closed [ 6 ] Reopened [ 4 ]
          Resolution Fixed [ 1 ]
          arjen.poutsma Arjen Poutsma made changes -
          Fix Version/s 2.0 M1 [ 11110 ]
          arjen.poutsma Arjen Poutsma made changes -
          Resolution Fixed [ 1 ]
          Status Reopened [ 4 ] Closed [ 6 ]

            People

            • Assignee:
              arjen.poutsma Arjen Poutsma
              Reporter:
              raykrueger Ray Krueger
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: