Author: cbrisson Date: Mon Feb 20 11:32:31 2017 New Revision: 1783744 URL: http://svn.apache.org/viewvc?rev=1783744&view=rev Log: [engine] literals should follow the same rules
Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java?rev=1783744&r1=1783743&r2=1783744&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTFloatingPointLiteral.java Mon Feb 20 11:32:31 2017 @@ -110,5 +110,12 @@ public class ASTFloatingPointLiteral ext 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); + } } Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java?rev=1783744&r1=1783743&r2=1783744&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTIntegerLiteral.java Mon Feb 20 11:32:31 2017 @@ -106,4 +106,12 @@ public class ASTIntegerLiteral extends S { 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); + } } Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java?rev=1783744&r1=1783743&r2=1783744&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTMap.java Mon Feb 20 11:32:31 2017 @@ -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; + } } Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java?rev=1783744&r1=1783743&r2=1783744&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTObjectArray.java Mon Feb 20 11:32:31 2017 @@ -88,4 +88,11 @@ public class ASTObjectArray extends Simp 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; + } } Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java?rev=1783744&r1=1783743&r2=1783744&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.java Mon Feb 20 11:32:31 2017 @@ -341,4 +341,14 @@ public class ASTStringLiteral extends Si 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(); + } + } Modified: velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java?rev=1783744&r1=1783743&r2=1783744&view=diff ============================================================================== --- velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyTestCase.java Mon Feb 20 11:32:31 2017 @@ -100,6 +100,23 @@ public class IfEmptyTestCase extends Bas 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()