You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Luca Burgazzoli (JIRA)" <ji...@apache.org> on 2016/11/28 17:08:58 UTC
[jira] [Created] (CAMEL-10541) DataFormat from registry is used for
every dataformat operation (marshal/unmarshal)
Luca Burgazzoli created CAMEL-10541:
---------------------------------------
Summary: DataFormat from registry is used for every dataformat operation (marshal/unmarshal)
Key: CAMEL-10541
URL: https://issues.apache.org/jira/browse/CAMEL-10541
Project: Camel
Issue Type: Bug
Components: camel-core
Reporter: Luca Burgazzoli
While working on an issue related to spring-boot I found out that if a data format is registered in camel registry with the same name as the one camel looks-up with the help of DefaultDataFormatResolver, this object is then re-configured for each data format definition so one definition may override previous configuration with an undefined behavior.
So assume you have an xml route definitions as:
{code:xml}
<routes xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:unmarshal"/>
<unmarshal>
<csv delimiter=";" headerDisabled="true"/>
</unmarshal>
</route>
<route>
<from uri="direct:marshal"/>
<marshal>
<csv headerDisabled="true" quoteDisabled="true"/>
</marshal>
</route>
</routes>
{code}
And some code like:
{code:java}
InputStream is = getClass().getResourceAsStream("...");
SimpleRegistry reg = new SimpleRegistry();
reg.put("csv-dataformat", new CsvDataFormat());
DefaultCamelContext ctx = new DefaultCamelContext(reg);
ctx.addRouteDefinitions(ctx.loadRoutesDefinition(is).getRoutes());
ctx.start();
ProducerTemplate template = ctx.createProducerTemplate();
String result = template.requestBody(
"direct:marshal",
Arrays.asList(Arrays.asList( "A1", "B1", "C1" )),
String.class);
assertEquals("A1,B1,C1", result);
ctx.stop
{code}
Then this test fails with:
{code}
Expected :A1,B1,C1
Actual :A1;B1;C1
{code}
It fails because the object added to the SimpleRegistry is shared among the two csv dataformats so it is configured to have delimiter = ';'
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)