aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Brisson <cbrisson@apache.org>2017-02-20 11:32:31 +0000
committerClaude Brisson <cbrisson@apache.org>2017-02-20 11:32:31 +0000
commitbf0d6d0373e9854e3b70a693e329f26785ceb335 (patch)
tree640d886c18c362d60ca9290e4226799c84004db5
parenta970dc446c23cfec163226111b98e764df5eb128 (diff)
downloadapache-velocity-engine-bf0d6d0373e9854e3b70a693e329f26785ceb335.tar.gz
[engine] literals should follow the same rules
git-svn-id: https://svn.apache.org/repos/asf/velocity/engine/trunk@1783744 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java7
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java8
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java7
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java7
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java10
-rw-r--r--velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java17
6 files changed, 56 insertions, 0 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 7ecdac42..8b357d34 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
@@ -110,5 +110,12 @@ public class ASTFloatingPointLiteral extends SimpleNode
return value;
}
+ /**
+ * @see org.apache.velocity.runtime.parser.node.SimpleNode#evaluate(org.apache.velocity.context.InternalContextAdapter)
+ */
+ public boolean evaluate( InternalContextAdapter context)
+ {
+ return !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 bfef11d9..21a808b9 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
@@ -106,4 +106,12 @@ public class ASTIntegerLiteral extends SimpleNode
{
return value;
}
+
+ /**
+ * @see org.apache.velocity.runtime.parser.node.SimpleNode#evaluate(org.apache.velocity.context.InternalContextAdapter)
+ */
+ public boolean evaluate( InternalContextAdapter context)
+ {
+ return !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 57a6d3ff..b3909d70 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
@@ -97,4 +97,11 @@ public class ASTMap extends SimpleNode
return obj;
}
+ /**
+ * @see org.apache.velocity.runtime.parser.node.SimpleNode#evaluate(org.apache.velocity.context.InternalContextAdapter)
+ */
+ public boolean evaluate( InternalContextAdapter context)
+ {
+ return 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 aa900698..a36b04b6 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
@@ -88,4 +88,11 @@ public class ASTObjectArray extends SimpleNode
return obj;
}
+ /**
+ * @see org.apache.velocity.runtime.parser.node.SimpleNode#evaluate(org.apache.velocity.context.InternalContextAdapter)
+ */
+ public boolean evaluate( InternalContextAdapter context)
+ {
+ return children != null && children.length > 0;
+ }
}
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 44bce6eb..502704b6 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
@@ -341,4 +341,14 @@ public class ASTStringLiteral extends SimpleNode
return image;
}
+
+ /**
+ * @see org.apache.velocity.runtime.parser.node.SimpleNode#evaluate(org.apache.velocity.context.InternalContextAdapter)
+ */
+ public boolean evaluate( InternalContextAdapter context)
+ {
+ String str = (String)value(context);
+ return str != null && !str.isEmpty();
+ }
+
}
diff --git a/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java b/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java
index eb2c2c6b..52631a19 100644
--- a/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java
+++ b/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java
@@ -100,6 +100,23 @@ public class IfEmptyTestCase extends BaseTestCase
assertNotEmpty(builder);
}
+ public void testLiterals()
+ {
+ assertEvalEquals("", "#if( 0 )fail#end");
+ assertEvalEquals("", "#if( 0.0 )fail#end");
+ assertEvalEquals("", "#if( '' )fail#end");
+ assertEvalEquals("", "#if( \"\" )fail#end");
+ assertEvalEquals("", "#if( [] )fail#end");
+ assertEvalEquals("", "#if( {} )fail#end");
+
+ assertEvalEquals("", "#if( !1 )fail#end");
+ assertEvalEquals("", "#if( !1.0 )fail#end");
+ assertEvalEquals("", "#if( !'foo' )fail#end");
+ assertEvalEquals("", "#if( !\"foo\" )fail#end");
+ assertEvalEquals("", "#if( ![ 'foo' ] )fail#end");
+ assertEvalEquals("", "#if( !{ 'foo':'bar' } )fail#end");
+ }
+
public static class NullAsString
{
public String getAsString()