users@wadl.java.net

Re: WADL2Java Disambiguation problem

From: Marc Hadley <Marc.Hadley_at_Sun.COM>
Date: Fri, 11 Dec 2009 09:40:51 -0500

On Dec 9, 2009, at 1:45 PM, Marc Hadley wrote:

> On Dec 9, 2009, at 1:30 PM, Andrew Glowik wrote:
>>
>> 1) Removing element attributes did not improve my lot. The generate code remains ambiguated.
>
> Hmm, that is odd, the doubling up is driven by the presence of an element attribute on the representation so I can't think why its still occurring - must be a logic bug somewhere. I need to debug this but I'm rather busy right now so I won't be able to get to it for a while.
>
I should have some time to look at this today, could you send me your complete WADL file and any ancillary files (customizations, schema files etc) or at least a complete subset that illustrates the problem. I could put something together from the snippet below but I'd prefer to use exactly the same as you to make sure I catch everything. If you'd prefer not share the file with the list then you can send it to me directly at hadley (at) sun (dot) com.

Thanks,
Marc.


>> 2) We call-out Accept, Content-Length or ContentType because we can't count on our clients using wadl2java.
>
> But you can count on them using HTTP properly (or you would hope so) and that is really just restating HTTP requirements.
>
> Marc.
>
>>
>> On Wed, Dec 9, 2009 at 1:02 PM, Marc Hadley <Marc.Hadley_at_sun.com> wrote:
>> I don't understand why you are getting DataSource for the type of all the representations - perhaps the schema that defines the elements like nm:ExtractAndNormalize is not referenced in the WADL ?
>>
>> A quick fix would be to remove the element attribute from the representation elements, that should remove the duplicated methods.
>>
>> Also you shouldn't need the Accept, Content-Length or ContentType params are these headers are set automatically by the generated code.
>>
>> Marc.
>>
>> On Dec 9, 2009, at 12:04 PM, Andrew Glowik wrote:
>>
>>> Sept 11, 2009 version of wadl2java can not disambiguate multiple REQUEST representations with multiple RESPONSE representations. Here is a sample WADL snippet...
>>>
>>> <resource path="norm">
>>> <method id="normalization-and-extraction" name="POST">
>>> <doc>Post single list for normalization and/or extraction. HTTP respose contains the results.</doc>
>>> <request>
>>> <param style="header" name="Accept" type="xsd:string" required="true">
>>> <doc>Payload type</doc>
>>> </param>
>>> <param style="header" name="Content-Length" type="xsd:integer">
>>> <doc>Payload size in bytes. Do not include if also including an HTTP Transfer-Encoding header of "chunked". For HTTP/1.1, the application accepts the "chunked" transfer-coding.</doc>
>>> </param>
>>> <param style="header" name="Content-Type" type="xsd:string" required="true">
>>> <doc>Payload type</doc>
>>> </param>
>>> <param style="header" name="Authorization" type="xsd:string" required="true">
>>> <doc>Scheme of HTTP Basic: Basic base64String(user:password)</doc>
>>> </param>
>>> <representation id="AttachmentXml" mediaType="application/xml" status="200" element="nm:ExtractAndNormalize">
>>> <doc>ExtractAndNormalize.xsd</doc>
>>> </representation>
>>> <representation id="AttachmentJson" mediaType="application/json" status="200">
>>> <doc>JSON equivalent of ExtractAndNormalize.xsd</doc>
>>> </representation>
>>> </request>
>>> <response>
>>> <representation id="AcceptXml" mediaType="application/xml" status="200" element="nm:ExtractAndNormalize"/>
>>> <representation id="AcceptJson" mediaType="application/json" status="200"/>
>>> <fault status="415">
>>> <doc>Unsupported media type.</doc>
>>> </fault>
>>> <fault status="404">
>>> <doc>Not found.</doc>
>>> </fault>
>>> <fault status="401">
>>> <doc>Unauthorized.</doc>
>>> </fault>
>>> </response>
>>> </method>
>>> </resource>
>>>
>>> Maven output...
>>>
>>> [INFO] ------------------------------------------------------------------------
>>> [ERROR] BUILD FAILURE
>>> [INFO] ------------------------------------------------------------------------
>>> [INFO] Compilation failure
>>> /home/tedworkspace-cr-maven2/maven/CoralReefClient/target/generated-sources/wadl/com/berico/client/Endpoint.java:[825,26] postAcceptxmlAsApplicationXml(javax.activation.DataSource,java.lang.String,java.lang.String,java.lang.String) is already defined in com.berico.client.Endpoint.Norm
>>>
>>> /home/tedworkspace-cr-maven2/maven/CoralReefClient/target/generated-sources/wadl/com/berico/client/Endpoint.java:[861,26] postAcceptxmlAsApplicationXml(javax.activation.DataSource,java.lang.String,java.lang.String,java.lang.String,java.lang.Integer) is already defined in com.berico.client.Endpoint.Norm
>>>
>>> /home/ted/workspace-cr-maven2/maven/CoralReefClient/target/generated-sources/wadl/com/berico/client/Endpoint.java:[896,26] postAcceptjsonAsApplicationJson(javax.activation.DataSource,java.lang.String,java.lang.String,java.lang.String) is already defined in com.berico.client.Endpoint.Norm
>>>
>>> Class output .... Does not compile ....
>>>
>>> public Norm()
>>> throws JAXBException
>>> {
>>> _jc = JAXBContext.newInstance("coralreef");
>>> _jaxbDispatcher = new JAXBDispatcher(_jc);
>>> _dsDispatcher = new DSDispatcher();
>>> _uriBuilder = new UriBuilder();
>>> List<String> _matrixParamSet;
>>> _matrixParamSet = _uriBuilder.addPathSegment("https://localhost:8181/coralreef-resource/");
>>> _matrixParamSet = _uriBuilder.addPathSegment("norm");
>>> _templateAndMatrixParameterValues = new HashMap<String, Object>();
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> */
>>> public DataSource postAcceptxmlAsApplicationXml(DataSource input, String accept, String contentType, String authorization)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/xml", _url, _headerParameterValues, "application/xml");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> * @param contentLength
>>> * Payload size in bytes. Do not include if also including an HTTP Transfer-Encoding header of "chunked". For HTTP/1.1, the application accepts the "chunked" transfer-coding.
>>> */
>>> public DataSource postAcceptxmlAsApplicationXml(DataSource input, String accept, String contentType, String authorization, Integer contentLength)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> _headerParameterValues.put("Content-Length", contentLength);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/xml", _url, _headerParameterValues, "application/xml");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> */
>>> public DataSource postAcceptjsonAsApplicationJson(DataSource input, String accept, String contentType, String authorization)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/xml", _url, _headerParameterValues, "application/json");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> * @param contentLength
>>> * Payload size in bytes. Do not include if also including an HTTP Transfer-Encoding header of "chunked". For HTTP/1.1, the application accepts the "chunked" transfer-coding.
>>> */
>>> public DataSource postAcceptjsonAsApplicationJson(DataSource input, String accept, String contentType, String authorization, Integer contentLength)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> _headerParameterValues.put("Content-Length", contentLength);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/xml", _url, _headerParameterValues, "application/json");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * JSON equivalent of ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> */
>>> public DataSource postAcceptxmlAsApplicationXml(DataSource input, String accept, String contentType, String authorization)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/json", _url, _headerParameterValues, "application/xml");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * JSON equivalent of ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> * @param contentLength
>>> * Payload size in bytes. Do not include if also including an HTTP Transfer-Encoding header of "chunked". For HTTP/1.1, the application accepts the "chunked" transfer-coding.
>>> */
>>> public DataSource postAcceptxmlAsApplicationXml(DataSource input, String accept, String contentType, String authorization, Integer contentLength)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptxmlAsApplicationXml is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> _headerParameterValues.put("Content-Length", contentLength);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/json", _url, _headerParameterValues, "application/xml");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * JSON equivalent of ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> */
>>> public DataSource postAcceptjsonAsApplicationJson(DataSource input, String accept, String contentType, String authorization)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/json", _url, _headerParameterValues, "application/json");
>>> return _retVal;
>>> }
>>> /**
>>> * Post single list for normalization and/or extraction. HTTP respose contains the results.
>>> *
>>> * @param input
>>> * JSON equivalent of ExtractAndNormalize.xsd
>>> * @param accept
>>> * Payload type
>>> * @param authorization
>>> * Scheme of HTTP Basic: Basic base64String(user:password)
>>> * @param contentType
>>> * Payload type
>>> * @param contentLength
>>> * Payload size in bytes. Do not include if also including an HTTP Transfer-Encoding header of "chunked". For HTTP/1.1, the application accepts the "chunked" transfer-coding.
>>> */
>>> public DataSource postAcceptjsonAsApplicationJson(DataSource input, String accept, String contentType, String authorization, Integer contentLength)
>>> throws IOException, MalformedURLException
>>> {
>>> HashMap<String, Object> _queryParameterValues = new HashMap<String, Object>();
>>> HashMap<String, Object> _headerParameterValues = new HashMap<String, Object>();
>>> if (accept == null) {
>>> throw new IllegalArgumentException("Parameter Accept of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Accept", accept);
>>> if (contentType == null) {
>>> throw new IllegalArgumentException("Parameter Content-Type of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Content-Type", contentType);
>>> if (authorization == null) {
>>> throw new IllegalArgumentException("Parameter Authorization of method postAcceptjsonAsApplicationJson is required and must not be null");
>>> }
>>> _headerParameterValues.put("Authorization", authorization);
>>> _headerParameterValues.put("Content-Length", contentLength);
>>> String _url = _uriBuilder.buildUri(_templateAndMatrixParameterValues, _queryParameterValues);
>>> DataSource _retVal = _dsDispatcher.doPOST(input, "application/json", _url, _headerParameterValues, "application/json");
>>> return _retVal;
>>> }
>>> }
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_wadl.dev.java.net
>> For additional commands, e-mail: users-help_at_wadl.dev.java.net
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_wadl.dev.java.net
> For additional commands, e-mail: users-help_at_wadl.dev.java.net
>