[ https://issues.apache.org/jira/browse/CAMEL-12415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16419589#comment-16419589 ]
ASF GitHub Bot commented on CAMEL-12415: ---------------------------------------- GitHub user IIlllII opened a pull request: https://github.com/apache/camel/pull/2277 CAMEL-12415 - camel-jaxb, fix options combination: encoding,filterNon… You can merge this pull request into a Git repository by running: $ git pull https://github.com/IIlllII/camel CAMEL-12415-2 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/camel/pull/2277.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2277 ---- commit 9e1b372bc8cff1b9189bd4319ea8ea6b085a7e56 Author: Jonas Waage <jonas.h.waage@...> Date: 2018-03-29T16:33:44Z CAMEL-12415 - camel-jaxb, fix options combination: encoding,filterNonXmlChars ---- > Camel-jaxb option "encoding" with option "filterNonXmlChars" generate wrong > data > -------------------------------------------------------------------------------- > > Key: CAMEL-12415 > URL: https://issues.apache.org/jira/browse/CAMEL-12415 > Project: Camel > Issue Type: Bug > Components: camel-jaxb > Affects Versions: 2.21.0 > Environment: OS X 13.3, Java 8 > Reporter: Jonas Waage > Priority: Minor > > When using the jaxb-component to marshal. > The properties: > * Encoding > * FilterNonXmlChars > do not work together correctly. > FilterNonXmlChars will ignore the set encoding, and make the output bytes > UTF-8 encoded. > I would either expect this to just work, and by that I mean bytes should be > encoded as the set encoding, or minimally fail during startup of the route > with an exception explaining that these properties does not work together. > I'd really prefer the first, since I want to use the functionality of both. > I have provided a patch which makes this work.I have done a small refactoring > to not have to duplicate more code. I can rewrite this if it is a problem. > Below is a test which will reproduce the problem. > {code:java} > public class ExplicitEncodingAndXMLCharFilteringTest extends CamelTestSupport > { > @Override > public void setUp() throws Exception { > deleteDirectory("target/charset"); > super.setUp(); > } > @Test > public void testIsoAndCharacterFiltering() throws Exception { > PurchaseOrder order = new PurchaseOrder(); > //Data containing characters ÆØÅæøå that differ in utf-8 and iso + a > spouting whale > String name = > "\u00c6\u00d8\u00C5\u00e6\u00f8\u00e5\uD83D\uDC33\uFFFD"; > String expected = "\u00c6\u00d8\u00C5\u00e6\u00f8\u00e5 \uFFFD"; > //Spouting whale has become spaces > order.setName(name); > order.setAmount(123.45); > order.setPrice(2.22); > MockEndpoint result = getMockEndpoint("mock:file"); > result.expectedFileExists("target/charset/output.xml"); > template.sendBody("direct:start", order); > assertMockEndpointsSatisfied(); > JAXBContext jaxbContext = > JAXBContext.newInstance("org.apache.camel.example"); > Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); > InputStream inputStream = new > FileInputStream("target/charset/output.xml"); > Reader reader = new InputStreamReader(inputStream, "ISO-8859-1"); > PurchaseOrder obj = (PurchaseOrder) unmarshaller.unmarshal(reader); > assertEquals(expected, obj.getName()); > } > @Override > protected RouteBuilder createRouteBuilder() throws Exception { > return new RouteBuilder() { > @Override > public void configure() throws Exception { > JaxbDataFormat jaxb = new > JaxbDataFormat("org.apache.camel.example"); > jaxb.setFilterNonXmlChars(true); > jaxb.setEncoding("iso-8859-1"); > from("direct:start") > .marshal(jaxb) > > .to("file:target/charset/?fileName=output.xml&charset=iso-8859-1"); > } > }; > } > {code} > -- This message was sent by Atlassian JIRA (v7.6.3#76005)