diff options
author | Claude Brisson <cbrisson@apache.org> | 2017-02-20 11:51:14 +0000 |
---|---|---|
committer | Claude Brisson <cbrisson@apache.org> | 2017-02-20 11:51:14 +0000 |
commit | 765ea383e19e4a6dac523d9d7d715ed060bfcf5c (patch) | |
tree | 4bfa3b3d7085f648e57f0702d4db38ab53c9445c /velocity-engine-core/src/main/java | |
parent | bf0d6d0373e9854e3b70a693e329f26785ceb335 (diff) | |
download | apache-velocity-engine-765ea383e19e4a6dac523d9d7d715ed060bfcf5c.tar.gz |
[engine] testcase and literals behavior for emptycheck=false; reference should cache emptycheck for speed
git-svn-id: https://svn.apache.org/repos/asf/velocity/engine/trunk@1783746 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'velocity-engine-core/src/main/java')
6 files changed, 18 insertions, 6 deletions
diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java index 8b357d34..057e4cf6 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java @@ -21,6 +21,7 @@ package org.apache.velocity.runtime.parser.node; import org.apache.velocity.context.InternalContextAdapter; import org.apache.velocity.exception.TemplateInitException; +import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.parser.Parser; import java.math.BigDecimal; @@ -115,7 +116,7 @@ public class ASTFloatingPointLiteral extends SimpleNode */ public boolean evaluate( InternalContextAdapter context) { - return !MathUtils.isZero(value); + return !rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || !MathUtils.isZero(value); } } diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java index 21a808b9..e62950f6 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java @@ -21,6 +21,7 @@ package org.apache.velocity.runtime.parser.node; import org.apache.velocity.context.InternalContextAdapter; import org.apache.velocity.exception.TemplateInitException; +import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.parser.Parser; import java.math.BigInteger; @@ -112,6 +113,6 @@ public class ASTIntegerLiteral extends SimpleNode */ public boolean evaluate( InternalContextAdapter context) { - return !MathUtils.isZero(value); + return !rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || !MathUtils.isZero(value); } } diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java index b3909d70..82a6d892 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java @@ -22,6 +22,7 @@ package org.apache.velocity.runtime.parser.node; import org.apache.velocity.context.InternalContextAdapter; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.TemplateInitException; +import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.parser.Parser; import java.util.LinkedHashMap; @@ -102,6 +103,6 @@ public class ASTMap extends SimpleNode */ public boolean evaluate( InternalContextAdapter context) { - return children != null && children.length > 0; + return !rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || children != null && children.length > 0; } } diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java index a36b04b6..d8039e9c 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java @@ -22,6 +22,7 @@ package org.apache.velocity.runtime.parser.node; import org.apache.velocity.context.InternalContextAdapter; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.TemplateInitException; +import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.parser.Parser; import java.util.ArrayList; @@ -93,6 +94,6 @@ public class ASTObjectArray extends SimpleNode */ public boolean evaluate( InternalContextAdapter context) { - return children != null && children.length > 0; + return !rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || children != null && children.length > 0; } } diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java index 7875020e..20fdff06 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java @@ -72,6 +72,8 @@ public class ASTReference extends SimpleNode private String morePrefix = ""; private String identifier = ""; + private boolean checkEmpty; + private String literal = null; /** @@ -169,6 +171,12 @@ public class ASTReference extends SimpleNode logOnNull = rsvc.getBoolean(RuntimeConstants.RUNTIME_LOG_REFERENCE_LOG_INVALID, true); + /* + * whether to check for emptiness when evaluating + */ + checkEmpty = + rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true); + /** * In the case we are referencing a variable with #if($foo) or * #if( ! $foo) then we allow variables to be undefined and we @@ -579,7 +587,7 @@ public class ASTReference extends SimpleNode } try { - return DuckType.asBoolean(value, rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true)); + return DuckType.asBoolean(value, checkEmpty); } catch(Exception e) { diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java index 502704b6..d3141ca6 100644 --- a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java @@ -348,7 +348,7 @@ public class ASTStringLiteral extends SimpleNode public boolean evaluate( InternalContextAdapter context) { String str = (String)value(context); - return str != null && !str.isEmpty(); + return str != null && (!rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || !str.isEmpty()); } } |