On Jun 8, 2009, at 7:06 PM, Christopher Schmidt wrote:
>
> How is the best way to provide a PUT method that supports two
> different XML parameters (using the same URL path)?
>
By XML parameters do you mean two different types of XML document sent
by the client as a request entity?
If so, Jersey has support for unmarshalling a type of Object if the
JAXBContext is set up correctly with JAXB types for the set of
possible XML documents.
You can define the JAXBContext using an instance of
ContextResolver<JAXBContext> annotated with @Provider.
public class MyProvider implements ContextResolver<JAXBContext> {
public JAXBContext getContext(Class<?> type) {
if (type == Object.class) {
return ... // The JAXBContext for the objects
} else {
return null;
}
}
}
Then you can have a method:
@PUT
@Consumes("application/xml")
public void put(Object o) {
if (o instanceof X) {
} else if (o instanceof Y) {
}
}
Or alternatively you can do this yourself:
@PUT
@Consumes("application/xml")
public void put(InputStream in) {
// Unmarshall a JAXB object from in
}
which may be better if different resources have different XML content
with the same XML root elements.
Hope this helps,
Paul.
> This is because we want to "connect" a legacy system which is not
> fully REST capable.
>
> Thanks CS
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>