[
https://issues.apache.org/jira/browse/CAMEL-24968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-24968.
---------------------------------
Resolution: Fixed
Fixed by https://github.com/apache/camel/pull/26806 (merged as cbe03f3fee0d).
_Claude Code on behalf of davsclaus_
> simple - string, math, date and file function fixes
> ---------------------------------------------------
>
> Key: CAMEL-24968
> URL: https://issues.apache.org/jira/browse/CAMEL-24968
> Project: Camel
> Issue Type: Sub-task
> Components: camel-core
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> Bugs in StringExpressionBuilder, MathExpressionBuilder,
> DateExpressionBuilder, FileExpressionBuilder.
> * (verified) {{${capitalize()}}} on an empty body throws
> ArrayIndexOutOfBoundsException (StringHelper.doCapitalize). Its word loop
> also starts at index 2.
> * (verified) {{${sum()}}} / {{${max()}}} / min / average with no arguments
> return null; the docs say they work on the body.
> * (verified) {{${sum(1.5,2)}}} returns 2: non-integral values are silently
> dropped (Double body values are truncated instead). average truncates, sum
> can overflow, abs(Long.MIN_VALUE) stays negative.
> * (verified) {{${date:header.Last-Modified}}} fails (NumberFormatException
> "Mo"), {{${date:header.X-Date}}} reads header X: the command is split on [+-]
> as offsets. HTTP date headers are the obvious case.
> * (verified) {{${date:header.my.date}}} reads header "date" (lastIndexOf('.')
> in LanguageHelper.dateFromHeader).
> * (verified) {{${date-with-timezone:now:GMT+02:00:yyyy}}} returns "00:2026":
> split(":", 3) cuts inside the timezone. Unknown timezone ids silently fall
> back to GMT.
> * (verified) {{${safeQuote()}}} / quote do not escape: body {{He said "hi"}}
> gives {{"He said "hi""}} (invalid JSON). StringQuoteHelper.jsonQuote exists.
> * (verified) Null argument gives bare NPE: {{${substring(${header.start})}}},
> {{${substringBefore(${header.sep})}}} (also substringAfter/Between). pad
> already has a clear message.
> * (verified) {{${substring(-3,-2)}}} on ABCDEFGHIJK gives DEFGHI; the docs
> ("negative values clip from the opposite end") imply otherwise. Fix code or
> docs.
> * (verified) {{${pad('foo',6,'ab')}}} gives fooabab (7 chars). The docs also
> describe the pad direction backwards.
> * (verified) {{${size()}}} on Integer[]/Object[] returns 1 (only primitive
> arrays and String[] handled). Same gap in length().
> * (verified) Hidden files inconsistent: CamelFileName=.bashrc gives
> file:name.noext=.bashrc but file:ext=bashrc.
> * length() on a non-cached InputStream body reads and closes it (payload
> lost); a StreamCache > 2GB overflows the int cast.
> * trim() uses String.trim(), missing Unicode whitespace (docs say all white
> spaces).
> _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)