[ 
https://issues.apache.org/jira/browse/CXF-6137?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Beryozkin resolved CXF-6137.
-----------------------------------
       Resolution: Fixed
    Fix Version/s: 2.7.15
                   3.0.4
                   3.1.0
         Assignee: Sergey Beryozkin

> WADL generation does not correctly support query parameters
> -----------------------------------------------------------
>
>                 Key: CXF-6137
>                 URL: https://issues.apache.org/jira/browse/CXF-6137
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS, Tooling
>    Affects Versions: 3.0.2
>         Environment: Windows/Linux; Red Hat JBoss EAP 6.2.2; Java 7u40
>            Reporter: Michael Schechter
>            Assignee: Sergey Beryozkin
>             Fix For: 3.1.0, 3.0.4, 2.7.15
>
>
> I have created a REST API that takes a bean as its only parameter, and 
> specifies the GET method. This converts the bean fields to query parameters. 
> Two of the bean fields are {{java.util.Date}} instances.
> When the WADL is generated for this service, the {{Date}} objects are 
> rendered as beans instead of {{xs:dateTime}} instances, which means our 
> clients cannot use the WADL for code generation. 
> As far as we can tell, this issue has the same root cause as CXF-5988; it 
> appears that the {{WadlGenerator.doWriteBeanParam(...)}} method on line 807 
> needs to have the same fix applied where {{java.util.Date}} is treated as a 
> special case.
> {code:java|title=API definition}
>     @GET
>     @Path("/")
>     @WebMethod(action = "get")
>     @WebResult(name = "getResponse")
>     GetResponse get(@QueryParam("") @WebParam(name = "getRequest") GetRequest 
> request)
> {code}
> {code:java|title=Bean definition}
> @XmlRootElement(namespace = ...)
> @XmlType(namespace = ...)
> public class GetRequest {
>     /**
>      * Serial version UID.
>      */
>     private static final long serialVersionUID = 1L;
>     /**
>      * Optional end date defining the lower boundary for the date range 
> within which the entries are searched.
>      */
>     @Past
>     @XmlSchemaType(name = "dateTime")
>     private Date endDate;
>     /**
>      * Required start date defining the lower boundary for the date range 
> within which the entries are searched.
>      */
>     @NotNull
>     @Past
>     @XmlElement(required = true)
>     @XmlSchemaType(name = "dateTime")
>     private Date startDate;
>     /**
>      * Retrieves the value for {@link #endDate}.
>      * 
>      * @return the current value
>      */
>     public Date getEndDate() {
>         return this.endDate;
>     }
>     /**
>      * Retrieves the value for {@link #startDate}.
>      * 
>      * @return the current value
>      */
>     public Date getStartDate() {
>         return this.startDate;
>     }
>     /**
>      * Provides a value for {@link #endDate}.
>      * 
>      * @param endDate the new value to set
>      */
>     public void setEndDate(Date endDate) {
>         this.endDate = endDate;
>     }
>     /**
>      * Provides a value for {@link #startDate}.
>      * 
>      * @param startDate the new value to set
>      */
>     public void setStartDate(Date startDate) {
>         this.startDate = startDate;
>     }
> }
> {code}
> {code:xml|title=Current WADL content}
> <method name="GET" id="get">
>     <request>
>         <param name="applicationId.name" style="query" type="xs:string"/>
>         <param name="applicationId.version" style="query" type="xs:string"/>
>         <param name="startDate.date" style="query" type="xs:int"/>
>         <param name="startDate.hours" style="query" type="xs:int"/>
>         <param name="startDate.minutes" style="query" type="xs:int"/>
>         <param name="startDate.month" style="query" type="xs:int"/>
>         <param name="startDate.seconds" style="query" type="xs:int"/>
>         <param name="startDate.time" style="query" type="xs:long"/>
>         <param name="startDate.year" style="query" type="xs:int"/>
>         <param name="startDate.day" style="query" type="xs:int"/>
>         <param name="startDate.timezoneOffset" style="query" type="xs:int"/>
>         <param name="groupByType" style="query" type="xs:string">
>             <option value="DAY"/>
>             <option value="MONTH"/>
>         </param>
>         <param name="pageNumber" style="query" type="xs:int"/>
>         <param name="pageSize" style="query" type="xs:int"/>
>     </request>
>     <response>
>         <representation mediaType="application/json" 
> element="api1:getApplicationUsageResponse"/>
>     </response>
> </method>
> {code}
> {code:xml|title=Expected WADL content}
> <method name="GET" id="get">
>   <request>
>     <param name="applicationId.version" style="query" type="xs:string"/>
>     <param name="applicationId.name" style="query" type="xs:string"/>
>     <param name="groupByType" style="query" type="xs:string">...</param>
>     <param name="startDate" style="query" required="true" type="xs:datetime"/>
>     <param name="pageNumber" style="query" type="xs:int"/>
>     <param name="pageSize" style="query" type="xs:int"/>
>   </request>
>   <response>
>     <representation mediaType="application/json" 
> element="api1:getApplicationUsageResponse"/>
>   </response>
> </method>
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to