You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/09/23 19:26:00 UTC
[jira] [Resolved] (CAMEL-24969) simple - collection and misc function fixes
[ https://issues.apache.org/jira/browse/CAMEL-24969?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-24969.
---------------------------------
Resolution: Fixed
Fixed by https://github.com/apache/camel/pull/26806 (merged as cbe03f3fee0d).
_Claude Code on behalf of davsclaus_
> simple - collection and misc function fixes
> -------------------------------------------
>
> Key: CAMEL-24969
> URL: https://issues.apache.org/jira/browse/CAMEL-24969
> Project: Camel
> Issue Type: Sub-task
> Components: camel-core
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> Bugs in CollectionExpressionBuilder, MiscExpressionBuilder and CollectionFunctionFactory.
> * (verified) {{${split(${body},'.')}}} returns [] and {{'|'}} splits every character: the separator is used as a regex. Use Pattern.quote (keep \n working).
> * (verified) {{${sort(${header.list})}}} sorts the body; a single argument is always parsed as the reverse flag.
> * (verified) A space after a comma leaks into the argument: {{${sort(${body}, true)}}} is not reversed; {{${mapAdd(${body}, 'k', 'v')}}} stores " k"/" v". Affects sort, split, listAdd, listRemove, mapAdd, mapRemove, forEach, filter.
> * (verified) {{${range(5)}}} returns [1,2,3,4]; the docs say 0..4 (random(max) starts at 0). CollectionFunctionFactoryTest pins the current result, so this needs a decision.
> * (verified) {{${uuid()}}} fails with "No bean could be found in the registry for: of type UuidGenerator" (empty generator name). Also only "classic" is case-insensitive.
> * (verified) {{${collate(${header.n})}}} with a missing header gives NPE; {{${range(1,${header.n})}}} too; {{${random(5,5)}}} gives "bound must be positive"; {{${range(-2,2)}}} silently returns null.
> * (verified) Body exactly "," crashes isEmpty/distinct/sort/reverse/forEach with StringIndexOutOfBoundsException (camel-util splitOnCharacterAsIterator).
> * kindOfType misclassifies BigDecimal (object), Map/JsonObject (array) and String[] (object); duplicated in safeQuote.
> * hash never closes the InputStream (File/GenericFile body leaks a FileInputStream).
> * mapAdd/mapRemove key is never evaluated ({{${mapAdd(${header.k},'v')}}} stores the literal text). isEmpty is true for [null]. forEach silently drops null results. listRemove(20) on List<Integer> treats 20 as an index.
> _Claude Code on behalf of davsclaus (found by an AI review of the simple language source; each item marked (verified) was reproduced on main at c3ef718de2e8)_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)