Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-5701

wadl response with JAXB + headers should optionally generate JAX-RS Response

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.7.10
    • Fix Version/s: 3.0, 2.7.12
    • Component/s: JAX-RS
    • Labels:
      None
    • Environment:

      Little-Net:users-api minfrin$ java -version
      java version "1.6.0_65"
      Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
      Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

    • Estimated Complexity:
      Unknown

      Description

      When I run wadl2java on the following fragment of wadl, I get the API interface defined below:

             <response status="200">
               <representation mediaType="application/json" element="user:users"/>
               <representation mediaType="application/xml" element="user:users"/>
               <param name="ETag" style="header" type="xsd:string">
                 <doc>The SHA1 hash of the sum of DN and modifiedTimestamp of the matching users.</doc>
               </param>
               <param name="Cache-Control" style="header" type="xsd:string">
                 <doc>The Cache-Control header as specified through configuration in context.xml.</doc>
               </param>
               <param name="Vary" style="header" type="xsd:string">
                 <doc>MUST have the value "Authorization", as we vary on the Authorization header.</doc>
               </param>
               <doc>Return list of users.  Must have admin role to receive the response. 
                    Note: no users = empty list with status:200</doc>
             </response>
      
         @GET
         @Produces({"application/json", "application/xml" })
         Users getUsers(@QueryParam("page") Long page, @QueryParam("pageSize") Long pageSize, @QueryParam("sort") String sort, @QueryParam("fl") String fl, 
                     @HeaderParam("If-None-Match") String If_None_Match, @HeaderParam("Authorization") String Authorization);
      

      The problem with the interface that is being produced above is that we return a JAXB Users object, with no mechanism to return any of the ETag, Cache-Control or Vary headers as required by the wadl.

      To maintain backwards compatibility we need an option to send the correct response based on whether headers are present or not.

        Attachments

          Activity

            People

            • Assignee:
              sergey_beryozkin Sergey Beryozkin
              Reporter:
              minfrin Graham Leggett
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: