Return-Path: X-Original-To: apmail-commons-issues-archive@minotaur.apache.org Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E25D0D95D for ; Sun, 1 Jul 2012 14:59:56 +0000 (UTC) Received: (qmail 88638 invoked by uid 500); 1 Jul 2012 14:59:56 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 88031 invoked by uid 500); 1 Jul 2012 14:59:55 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 88004 invoked by uid 99); 1 Jul 2012 14:59:55 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 01 Jul 2012 14:59:55 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id 8F24D142867 for ; Sun, 1 Jul 2012 14:59:53 +0000 (UTC) Date: Sun, 1 Jul 2012 14:59:53 +0000 (UTC) From: "Henri Biestro (JIRA)" To: issues@commons.apache.org Message-ID: <1931738408.76542.1341154793587.JavaMail.jiratomcat@issues-vm> In-Reply-To: <121049112.71133.1340967705466.JavaMail.jiratomcat@issues-vm> Subject: [jira] [Commented] (JEXL-134) Issue with evaluation of concat of variables : \r + \n gives 0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/JEXL-134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13404738#comment-13404738 ] Henri Biestro commented on JEXL-134: ------------------------------------ Thanks for the bug report. The culprit is the usage of trim in JexlArithemtic coercion methods toDouble and toBigDecimal which, in this case, will treat strings as empty and allow coercion to 0. As a workaround, till 2.1.2 is released, you can derive JexlArithmetic and override the add method to treat String arguments early as in the following example. Hope this helps. {code} public static class Arithmetic134 extends JexlArithmetic { public Arithmetic134() { super(false); } @Override public Object add(Object lhs, Object rhs) { if (lhs instanceof String && rhs instanceof String) { return ((String) lhs) + ((String) rhs); } else { return super.add(lhs, rhs); } } } @Test public void test134() throws Exception { JexlEngine jexl = new JexlEngine(null, new Arithmetic134(), null, null); String jexlExp = "$$__INPUT + nl"; Expression e = jexl.createExpression( jexlExp ); // Create a context and add data JexlContext jc = new MapContext(); jc.set("$$__INPUT", "\r" ); jc.set("nl", "\n"); // Now evaluate the expression, getting the result Object o = e.evaluate(jc); assertEquals("\r\n", o); } {code} > Issue with evaluation of concat of variables : \r + \n gives 0 > -------------------------------------------------------------- > > Key: JEXL-134 > URL: https://issues.apache.org/jira/browse/JEXL-134 > Project: Commons JEXL > Issue Type: Bug > Affects Versions: 2.1.1 > Environment: Windows Xp, jdk1.6.0_14 > Reporter: Manoj Mokashi > Assignee: Henri Biestro > Fix For: 2.1.2 > > > Consider the following example : > String jexlExp = "$$__INPUT + nl"; > Expression e = jexl.createExpression( jexlExp ); > // Create a context and add data > JexlContext jc = new MapContext(); > jc.set("$$__INPUT", "\r" ); > jc.set("nl", "\n"); > // Now evaluate the expression, getting the result > Object o = e.evaluate(jc); > The result is 0 instead of "\r\n" -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira