aboutsummaryrefslogtreecommitdiff
path: root/velocity-engine-core/src/main/java
diff options
context:
space:
mode:
authorClaude Brisson <cbrisson@apache.org>2017-02-20 11:51:14 +0000
committerClaude Brisson <cbrisson@apache.org>2017-02-20 11:51:14 +0000
commit765ea383e19e4a6dac523d9d7d715ed060bfcf5c (patch)
tree4bfa3b3d7085f648e57f0702d4db38ab53c9445c /velocity-engine-core/src/main/java
parentbf0d6d0373e9854e3b70a693e329f26785ceb335 (diff)
downloadapache-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')
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java3
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java3
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java3
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java3
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java10
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java2
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());
}
}