package org.jboss.resteasy.test.providers.jaxb.resource; import org.jboss.resteasy.core.ExceptionAdapter; import javax.ws.rs.core.MediaType; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLStreamReader; import java.io.InputStream; public final class XmlJaxbProvidersHelper { /** * An HTTP Header than can be passed in order to have the XML response formatted. */ public static final String FORMAT_XML_HEADER = "X-Xml-Formatted"; private XmlJaxbProvidersHelper() { } public static <T> JAXBElement<T> unmarshall(Class<T> type, InputStream entityStream) { XMLStreamReader reader = XmlStreamFactory.getXMLStreamReader(entityStream); return unmarshall(type, entityStream, reader); } public static <T> JAXBElement<T> unmarshall(Class<T> type, InputStream entityStream, XMLStreamReader reader) { JAXBContext jaxb = JAXBCache.instance().getJAXBContext(type); return unmarshall(jaxb, type, entityStream, reader); } public static <T> JAXBElement<T> unmarshall(JAXBContext jaxb, Class<T> type, InputStream entityStream, XMLStreamReader reader) { try { Unmarshaller unmarshaller = jaxb.createUnmarshaller(); JAXBElement<T> e = unmarshaller.unmarshal(reader, type); return e; } catch (JAXBException e) { throw new ExceptionAdapter(e); } } public static String getCharset(final MediaType mediaType) { if (mediaType != null) { return mediaType.getParameters().get("charset"); } return null; } }