package org.jboss.resteasy.test.providers; import org.jboss.logging.Logger; import org.jboss.resteasy.plugins.providers.jaxb.XmlNamespacePrefixMapper; import org.jboss.resteasy.resteasy_jaxrs.i18n.LogMessages; import org.jboss.resteasy.test.providers.resource.jaxbNameSpacePrefix.JaxbNameSpacePrefixItems; import org.jboss.resteasy.test.providers.resource.jaxbNameSpacePrefix.JaxbNameSpacePrefixPurchaseOrderType; import org.jboss.resteasy.test.providers.resource.jaxbNameSpacePrefix.JaxbNameSpacePrefixItem; import org.jboss.resteasy.test.providers.resource.jaxbNameSpacePrefix.ObjectFactory; import org.junit.Assert; import org.junit.Test; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.PropertyException; import javax.xml.bind.annotation.XmlSchema; import java.io.ByteArrayOutputStream; import java.math.BigDecimal; /** * @tpSubChapter Providers - jaxb * @tpChapter Unit tests * @tpSince RESTEasy 3.0.16 */ public class JaxbNamespacePrefixTest { private static final LogMessages logger = Logger.getMessageLogger(LogMessages.class, JaxbNamespacePrefixTest.class.getName()); /** * @tpTestDetails Create xml schema from provided class and set "namespacePrefixMapper" for the Marshaller * @tpSince RESTEasy 3.0.16 */ @Test public void testNamespacePrefix() throws Exception { JAXBContext ctx = JAXBContext.newInstance(JaxbNameSpacePrefixPurchaseOrderType.class); JaxbNameSpacePrefixPurchaseOrderType po = new JaxbNameSpacePrefixPurchaseOrderType(); JaxbNameSpacePrefixItems jaxbNameSpacePrefixItems = new JaxbNameSpacePrefixItems(); JaxbNameSpacePrefixItem jaxbNameSpacePrefixItem = new JaxbNameSpacePrefixItem(); jaxbNameSpacePrefixItem.setComment("Tetsing"); jaxbNameSpacePrefixItem.setPartNum("242-GZ"); jaxbNameSpacePrefixItem.setProductName("My Thing"); jaxbNameSpacePrefixItem.setQuantity(6); jaxbNameSpacePrefixItem.setUSPrice(new BigDecimal(13.99)); jaxbNameSpacePrefixItems.getJaxbNameSpacePrefixItem().add(jaxbNameSpacePrefixItem); po.setJaxbNameSpacePrefixItems(jaxbNameSpacePrefixItems); Marshaller marshaller = ctx.createMarshaller(); XmlSchema xmlSchema = JaxbNameSpacePrefixPurchaseOrderType.class.getPackage().getAnnotation(XmlSchema.class); Assert.assertNotNull("Couldn't create xml schema for JaxbNameSpacePrefixPurchaseOrderType class", xmlSchema); XmlNamespacePrefixMapper mapper = new XmlNamespacePrefixMapper(xmlSchema.xmlns()); try { marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper); } catch (PropertyException e) { logger.error(e.getMessage(), e); } marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); ObjectFactory factory = new ObjectFactory(); ByteArrayOutputStream out = new ByteArrayOutputStream(); marshaller.marshal(factory.createPurchaseOrder(po), out); } }