I'm passing to jersey 0.5 and i don't what to do in my WadlResource.java .
This file was originally build by netbeans before i pass on a maven build.
package com.sun.ws.rest.wadl.resource;
import java.io.InputStream;
import javax.ws.rs.ProduceMime;
import javax.ws.rs.Path;
import javax.ws.rs.core.HttpContext;
import javax.ws.rs.core.UriInfo;
import com.sun.ws.rest.impl.wadl.WadlReader;
import javax.ws.rs.GET;
/**
* This class was generated.
*
* It is used to retrieve a WADL description
* of all of the other resources
*
*
*/
@ProduceMime("application/vnd.sun.wadl+xml")
@Path("/application.wadl")
public class WadlResource {
@HttpContext
public UriInfo uriInfo;
@GET
public String getWadl() {
InputStream is =
this.getClass().getResourceAsStream("application.wadl");
String str = WadlReader.read(is, uriInfo.getBaseUri());
return str;
}
}
WadlReader is no longer available so what i'm supose to do?
Guilhem Legal
Paul Sandoz a écrit :
> Hi Guilhem,
>
> guilhem legal wrote:
>> No I don't get an exception on the server side, it looks like i never
>> received the request.
>
> It has been a long time since i used 0.4 :-) so i am guessing it is
> not printing out the error messages or there is a bug.
>
>
>> And yes I want to handle multiple JAXB type. I m using jersey 0.4,
>> maybe I will pass to 0.5 to see if there is any change.
>
> I verified you will get a meaningful error message for 0.5 but
> unfortunately multiple JAXB types are currently not supported when
> using Object. In any case if you need any help transitioning let me
> know. The changes.txt will help guide you [1].
>
> There are two issues with the current JAXB message body reader:
>
> 1) it only supports types that are annotated with @XmlRootElement, in
> this case the type is Object; and
>
> 2) it has know way of determining what JAXBContext to use.
>
> For the 0.6 release we will be working on a solution for 2) to allow
> an application to define the set of JAXB contexts to use for Java
> types. But a solution for 1) may be a little more tricky.
>
>
>> Maybe a solution is that :
>>
>> @HttpMethod("POST")
>> @ConsumeMime("text/xml")
>> public Response handleObject1Xml(Object1 request) throws
>> JAXBException {
>> ----------------------------------------------------------------
>> }
>>
>> @HttpMethod("POST")
>> @ConsumeMime("text/xml")
>> public Response handleObject2Xml(Object2 request) throws
>> JAXBException {
>> ----------------------------------------------------------------
>> }
>> it not really what i want but is this working?
>>
>
> Unfortunately not because Jersey makes the decision on what Java
> method to choose based on the annotations and HTTP request headers,
> and not on the content of the message. So the above example is
> ambiguous and is actually a validation issue, at least a warning
> should be produced (we are working to improve that).
>
> For now I recommend you implement it this way:
>
> @POST
> @ConsumeMime("text/xml")
> public Response post(InputStream is) throws JAXBException {
> Unmarshaller u = context.createUnmarshaller();
> Object o = null;
> try {
> o = u.unmarshal(is);
> } catch (UnmarshalException e) {
> throw new WebApplicationException(400);
> }
> ...
> }
>
> Note the throwing of WebApplicationException with a 400 (Client Error)
> for the case when the client sends incorrect XML that cannot be
> unmarshalled using the JAXB context.
>
>
> I have logged an issue [2] to track this.
>
> Hope this helps,
> Paul.
>
> [1]
> https://jersey.dev.java.net/source/browse/*checkout*/jersey/tags/jersey-0.5/jersey/changes.txt?rev=697
>
> [2] https://jersey.dev.java.net/issues/show_bug.cgi?id=34
>
>> Guilhem Legal
>>
>> Paul Sandoz a écrit :
>>> guilhem legal wrote:
>>>> hi!
>>>>
>>>> I'm trying to do a simple thing (I think) with jersey but its not
>>>> working.
>>>> I want to handle two different POST request with diferent MIME type.
>>>> I use an other application whitch is supposed to send the request :
>>>>
>>>
>>> Are you getting an exception on the server side when the client
>>> POSTs the request with the content type of "text/xml" ?
>>>
>>> I just wrote a little example and verified that i get an exception
>>> in this case, with the error:
>>>
>>> Caused by: java.lang.IllegalArgumentException: A message body reader
>>> for Java type, class java.lang.Object, and MIME media type, text/xml,
>>> was not found
>>>
>>> Note i am using Jersey 0.6 (but for this case it is equivalent to
>>> that in 0.5).
>>>
>>> I think the problem is you are using the Object type for the request
>>> entity of the doPOSTXml method. The runtime does not know what to do
>>> with Object type. If you use an explicit JAXB type then it should work.
>>>
>>> But maybe you want to handle multiple JAXB types for the request
>>> entity? Unfortunately that is not currently possible. I am not sure
>>> it is possible given the current way message body readers work, i
>>> would need to look more closely at this.
>>>
>>> Paul.
>>>
>>>> my code :
>>>>
>>>> @HttpMethod("GET")
>>>> public Response doGET() throws JAXBException {
>>>>
>>>> return treatIncommingRequest();
>>>> }
>>>> @HttpMethod("POST")
>>>> @ConsumeMime("application/x-www-form-urlencoded")
>>>> public Response doPOSTKvp(String request) throws JAXBException {
>>>> -------------------------------------------------------
>>>> }
>>>> @HttpMethod("POST")
>>>> @ConsumeMime("text/xml")
>>>> public Response doPOSTXml(Object request) throws JAXBException {
>>>>
>>>> ----------------------------------------------------------------
>>>> }
>>>>
>>>> It never enter in the method doPOSTXml. So have i make a mistake?
>>>>
>>>> Guilhem Legal
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>