diff options
author | Claude Brisson <cbrisson@apache.org> | 2017-02-20 11:32:31 +0000 |
---|---|---|
committer | Claude Brisson <cbrisson@apache.org> | 2017-02-20 11:32:31 +0000 |
commit | bf0d6d0373e9854e3b70a693e329f26785ceb335 (patch) | |
tree | 640d886c18c362d60ca9290e4226799c84004db5 | |
parent | a970dc446c23cfec163226111b98e764df5eb128 (diff) | |
download | apache-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
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() |