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

Henri Biestro commented on JEXL-168:
------------------------------------

We can fix the default 'add' behavior: 
- Ensure that add(CharSequence, CharSequence) actually concatenates Strings 
rather than try to coerce to numbers: this ensures that string + string -> 
string
- Use the 'strict' flag in the arithmetic to control if isFloatingPointNumber 
actually performs a check against a regexp (rather than the 3 indexOf, JEXL-169)


> Dedicated operator for String concatenation
> -------------------------------------------
>
>                 Key: JEXL-168
>                 URL: https://issues.apache.org/jira/browse/JEXL-168
>             Project: Commons JEXL
>          Issue Type: Improvement
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>            Priority: Minor
>             Fix For: 3.0
>
>
> While overloaded '\+' operator basically works with Strings in many cases, it 
> works with them in unpredictable manner, for example, if we try to 
> concatenate two parts of IP address with expression "127.0" + "0.1" it will 
> give us the result 127.1 by successfully trying first to convert both 
> operands to numbers and perform addtion. In generic algorithm that combines 
> two parts of some code from database it is hard to say what characters those 
> codes might be consist of, and when this algorithm will eventually break. I 
> understand that this syntax has neverthelless a long history, and changing 
> its behaviour may break many legacy applications. And via the extension of 
> JexlArithmetic we can override *add* method to support different priority for 
> Strings, but that just means that default implementation of the very basic 
> operation is not ideal. In my case I consider refraining from usage of '\+' 
> for Strings altogether and overriding some other operator like '|', with less 
> side effects, but anyway constructs like 127 | 1 will divert to original 
> implementation. So I suggest that we could have a dedicated operator for 
> concatenation, like for example in "EL 3.0" they reserved "+=" for this 
> purpose, and regardless of types of operands it will convert to strings both 
> parts and return concatenation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to