Camel Bindy Parser One to Many KvP Unmarshall Issue
---------------------------------------------------
Key: CAMEL-4311
URL: https://issues.apache.org/jira/browse/CAMEL-4311
Project: Camel
Issue Type: Bug
Components: camel-bindy
Affects Versions: 2.8.0, 2.7.3, 2.7.2, 2.7.0
Environment: Windows, Linux
Reporter: surya
Priority: Minor
Fix For: 2.9.0
Bindy KvP unmarshall issue.
While unmarshalling FIX messages, camel-bindy causing inconsistencies if the
incoming fix messages are defined to map using 'OneToMany' annotations.
In a given route for eg:
BindyKeyValuePairDataFormat kvpBindyDataFormat = new
BindyKeyValuePairDataFormat("org.apache.camel.dataformat.bindy.model.fix.complex.onetomany");
public void configure() {
from(URI_DIRECT_START).unmarshal(kvpBindyDataFormat).to(URI_MOCK_RESULT);
}
kvpBindyDataFormat is single instance for multiple threads and with in
'BindyKeyValuePairFactory' class instance varialbe below is shared across
multiple threads causing data inconsistencies.
private Map<String, List<Object>> lists = new HashMap<String, List<Object>>();
Values from previous thread/messages are retained in the current thread causing
issues.
For eg in the test case: public class
BindyComplexOneToManyKeyValuePairUnMarshallTest extends CommonBindyTest
if we send another message with no repeating groups are sent.
String message2 = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" +
"1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test"
+ "10=220";
The output message has repeating group data from message processed in earlier
thread are pouplated causing data inconsistencies.
Please suggest the fix considering multi-threading scenario. I am willing to
volunteer for the fix.
Regards,
Surya
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira