From d713e521e62849c8116e7c45bfce40ead3c60a73 Mon Sep 17 00:00:00 2001 From: Chinmay Kolhatkar Date: Wed, 21 Sep 2016 12:46:54 +0530 Subject: [PATCH] APEXMALHAR-2258 JavaExpressionParser should handle casting of binary expression correctly. --- .../com/datatorrent/lib/expression/JavaExpressionParser.java | 2 +- .../src/test/java/com/datatorrent/lib/util/PojoUtilsTest.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/datatorrent/lib/expression/JavaExpressionParser.java b/library/src/main/java/com/datatorrent/lib/expression/JavaExpressionParser.java index 15a7a91c1e..257f8a04f7 100644 --- a/library/src/main/java/com/datatorrent/lib/expression/JavaExpressionParser.java +++ b/library/src/main/java/com/datatorrent/lib/expression/JavaExpressionParser.java @@ -84,7 +84,7 @@ public String convertToCompilableExpression(String expression, Class objectTy sb.append(tempExpr.replace("\\$", "$")); } - return "return ((" + returnType.getName().replace("$", "\\$") + ")" + sb.toString() + ");"; + return "return ((" + returnType.getName().replace("$", "\\$") + ")(" + sb.toString() + "));"; } /** diff --git a/library/src/test/java/com/datatorrent/lib/util/PojoUtilsTest.java b/library/src/test/java/com/datatorrent/lib/util/PojoUtilsTest.java index e8553beaca..04fef88a55 100644 --- a/library/src/test/java/com/datatorrent/lib/util/PojoUtilsTest.java +++ b/library/src/test/java/com/datatorrent/lib/util/PojoUtilsTest.java @@ -549,6 +549,9 @@ public void testComplexPOJOExpression() expression = createExpression(fqcn, "round(pow({$.innerObj.privateFloatVal}, {$.innerObj.privateDoubleVal}))", long.class, new String[] {"java.lang.Math.*"}); assertEquals(46162L, expression.execute(testObj)); + + expression = createExpression(fqcn, "{$.innerObj.privateFloatVal} > 0 && {$.innerObj.privateStringVal}.length() > 0", boolean.class); + assertEquals(true, expression.execute(testObj)); } @Test