You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "surya (JIRA)" <ji...@apache.org> on 2011/08/06 22:21:27 UTC

[jira] [Commented] (CAMEL-4311) Camel Bindy Parser One to Many KvP Unmarshall Issue

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

surya commented on CAMEL-4311:
------------------------------

changed few files to handle instance variable causing issues while parsing messages in multi threaded situation.

Changed instance variable to local.

added new method     
public void bind(List<String> data, Map<String, Object> model, int line, Map<String, List<Object>> lists) throws Exception {

Map<String, List<Object>> lists was instance variable root cause of bug.

patches for two java classes and 1 test case. Existing test case updated, sending multiple messages would cause test case to fail without the fix.

Please review and let me know if anything else need to be updated.

Regards,
Surya


> 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.7.0, 2.7.2, 2.7.3, 2.8.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