[ https://issues.apache.org/jira/browse/CAMEL-13741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Antoine DESSAIGNE updated CAMEL-13741: -------------------------------------- Description: When converting a {{Map}} to an {{Iterable}} the results is no longer the same since CAMEL-11379. Given the following context {code} <?xml version="1.0" encoding="UTF-8"?> <routes xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="timer:single?repeatCount=1"/> <setBody> <groovy>[A: 'aa', B: 'bb', C: 'cc', D: 'dd']</groovy> </setBody> <convertBodyTo type="java.lang.Iterable"/> <split> <simple>${body}</simple> <log message="${body}"/> </split> </route> </routes> {code} It produces 4 log messages in camel 2.18.3 using the converter {{CollectionConverter.toSet(java.util.Map<K,V>)}}. Using camel 2.24.1 it produces only one message containing the whole list. This is due to {{ObjectConverterOptimised}} calling {{ObjectHelper.createIterable(java.lang.Object)}} which has a fallback to {{Collections.singletonList(value)}} thus producing a single entry with the whole Map. The fix is probably to add a {{if (value instanceof Map) { return ((Map)value).entrySet(); } }} but I would like to know what you think about it before doing a pull request. Thanks was: When converting a {{Map}} to an {{Iterable}} the results is no longer the same since CAMEL-11379. Given the following context {code} <?xml version="1.0" encoding="UTF-8"?> <routes xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="timer:single?repeatCount=1"/> <setBody> <groovy>[A: 'aa', B: 'bb', C: 'cc', D: 'dd']</groovy> </setBody> <convertBodyTo type="java.lang.Iterable"/> <split> <simple>${body}</simple> <log message="${body}"/> </split> </route> </routes> {code} It produces 4 log messages in camel 2.18.3 using the converter {{CollectionConverter.toSet(java.util.Map<K,V>)}}. Using camel 2.24.1 it produces only one message containing the whole list. This is due to {{ObjectConverterOptimised}} calling {{ObjectHelper.createIterable(java.lang.Object)}} which has a fallback to {{Collections.singletonList(value)}} thus producing a single entry with the whole > Map to Iterable converter regression > ------------------------------------ > > Key: CAMEL-13741 > URL: https://issues.apache.org/jira/browse/CAMEL-13741 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.20.0 > Reporter: Antoine DESSAIGNE > Priority: Major > > When converting a {{Map}} to an {{Iterable}} the results is no longer the > same since CAMEL-11379. > Given the following context > {code} > <?xml version="1.0" encoding="UTF-8"?> > <routes xmlns="http://camel.apache.org/schema/spring"> > <route> > <from uri="timer:single?repeatCount=1"/> > <setBody> > <groovy>[A: 'aa', B: 'bb', C: 'cc', D: 'dd']</groovy> > </setBody> > <convertBodyTo type="java.lang.Iterable"/> > <split> > <simple>${body}</simple> > <log message="${body}"/> > </split> > </route> > </routes> > {code} > It produces 4 log messages in camel 2.18.3 using the converter > {{CollectionConverter.toSet(java.util.Map<K,V>)}}. Using camel 2.24.1 it > produces only one message containing the whole list. This is due to > {{ObjectConverterOptimised}} calling > {{ObjectHelper.createIterable(java.lang.Object)}} which has a fallback to > {{Collections.singletonList(value)}} thus producing a single entry with the > whole Map. > The fix is probably to add a {{if (value instanceof Map) { return > ((Map)value).entrySet(); } }} but I would like to know what you think about > it before doing a pull request. > Thanks -- This message was sent by Atlassian JIRA (v7.6.3#76005)