You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/03/29 16:55:01 UTC

[jira] [Commented] (CAMEL-12415) Camel-jaxb option "encoding" with option "filterNonXmlChars" generate wrong data

    [ https://issues.apache.org/jira/browse/CAMEL-12415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16419362#comment-16419362 ] 

ASF GitHub Bot commented on CAMEL-12415:
----------------------------------------

GitHub user IIlllII opened a pull request:

    https://github.com/apache/camel/pull/2276

    CAMEL-12415 - camel-jaxb, fix options combination: encoding,filterNonXmlChars

    Please tell me if anything needs to be changed.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/IIlllII/camel master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/camel/pull/2276.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 #2276
    
----
commit 64169aed7e0c8f07853565fac4e9822f26c83647
Author: Jonas Waage <jo...@...>
Date:   2017-12-04T23:34:55Z

    CAMEL-12062 Propagate encoding in property

commit 8c387e4f40ea13f61fe7cb6c87ea3d6f4f91f4b1
Author: Jonas Waage <jo...@...>
Date:   2018-03-20T19:13:40Z

    Merge remote-tracking branch 'upstream/master'

commit ae41f78bb38f3402fbbf386057f14bd4187cf768
Author: Jonas Waage <jo...@...>
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)