[ https://issues.apache.org/jira/browse/CAMEL-12062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonas Waage updated CAMEL-12062: -------------------------------- Patch Info: Patch Available > Jaxb component does not communicate charset when explicitly set > --------------------------------------------------------------- > > Key: CAMEL-12062 > URL: https://issues.apache.org/jira/browse/CAMEL-12062 > Project: Camel > Issue Type: Bug > Components: camel-jaxb > Affects Versions: 2.20.1 > Reporter: Jonas Waage > Priority: Minor > > This test will cause a UnmappableCharacterException, since jaxb does not > communicate the encoding of the bytes it outputs causing the file endpoint to > assume it is UTF-8. > This can be mitigated by adding an explicit reader in the route, but it would > be nice if it worked OOTB. > {code:java} > /** > * @version > */ > public class ExplicitFileEncodingTest extends CamelTestSupport { > @Override > public void setUp() throws Exception { > deleteDirectory("target/charset"); > super.setUp(); > } > @Test > public void testISOFileEncoding() throws Exception { > PurchaseOrder order = new PurchaseOrder(); > //Data containing characters ÆØÅæøå that differ in utf-8 and iso > String name = "\u00c6\u00d8\u00C5\u00e6\u00f8\u00e5"; > order.setName(name); > order.setAmount(123.45); > order.setPrice(2.22); > MockEndpoint result = getMockEndpoint("mock:file"); > result.expectedFileExists("target/charset/output.txt"); > template.sendBody("direct:start", order); > assertMockEndpointsSatisfied(); > JAXBContext jaxbContext = > JAXBContext.newInstance("org.apache.camel.example"); > Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); > PurchaseOrder obj = (PurchaseOrder)unmarshaller.unmarshal(new > File("target/charset/output.txt")); > assertEquals(obj.getName(), name); > } > @Override > protected RouteBuilder createRouteBuilder() throws Exception { > return new RouteBuilder() { > @Override > public void configure() throws Exception { > JaxbDataFormat jaxb = new > JaxbDataFormat("org.apache.camel.example"); > jaxb.setEncoding("iso-8859-1"); > from("direct:start") > .marshal(jaxb) > > .to("file:target/charset/?fileName=output.txt&charset=iso-8859-1"); > } > }; > } > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)