svn commit: r1783739 - in /velocity/engine/trunk/velocity-engine-core/src: main/java/org/apache/velocity/runtime/ main/java/org/apache/velocity/runtime/parser/node/ main/java/org/apache/velocity/util/
Author: cbrisson Date: Mon Feb 20 10:58:58 2017 New Revision: 1783739 URL: http://svn.apache.org/viewvc?rev=1783739=rev Log: [engine] implements new strategy for reference boolean evaluation 1) return false for a null object 2) return its value for a Boolean object, or the result of the getAsBoolean() method if it exists. 3) If directive.if.emptycheck = false (true by default), stop here and return true. 4) check for emptiness: - return whether an array is empty. - return whether isEmpty() is false (covers String and all Collection classes). - return whether length() is zero (covers CharSequence classes other than String). - returns whether size() is zero. - return whether a Number *strictly* equals zero. 5) check for emptiness after explicit conversion methods: - return whether the result of getAsString() is empty (and false for a null result) if it exists. - return whether the result of getAsNumber() *strictly* equals zero (and false for a null result) if it exists. Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/RuntimeConstants.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/DuckType.java velocity/engine/trunk/velocity-engine-core/src/main/resources/org/apache/velocity/runtime/defaults/velocity.properties 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/RuntimeConstants.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/RuntimeConstants.java?rev=1783739=1783738=1783739=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/RuntimeConstants.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/RuntimeConstants.java Mon Feb 20 10:58:58 2017 @@ -76,6 +76,12 @@ public interface RuntimeConstants String SKIP_INVALID_ITERATOR = "directive.foreach.skip.invalid"; /** + * An empty object (string, collection) or zero number is false. + * @since 2.0 + */ +String CHECK_EMPTY_OBJECTS = "directive.if.emptycheck"; + +/** * Starting tag for error messages triggered by passing a parameter not allowed in the #include directive. Only string literals, * and references are allowed. */ @@ -98,7 +104,7 @@ public interface RuntimeConstants * @since 1.7 */ String PROVIDE_SCOPE_CONTROL = "provide.scope.control"; - + /* * -- * R E S O U R C E M A N A G E R C O N F I G U R A T I O N Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java?rev=1783739=1783738=1783739=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java Mon Feb 20 10:58:58 2017 @@ -579,7 +579,7 @@ public class ASTReference extends Simple } try { -return DuckType.asBoolean(value); +return DuckType.asBoolean(value, rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true)); } catch(Exception e) { Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/DuckType.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/DuckType.java?rev=1783739=1783738=1783739=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/DuckType.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/DuckType.java Mon Feb 20 10:58:58 2017 @@ -23,9 +23,12 @@ import java.lang.reflect.Array; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.math.BigDecimal; +import java.math.BigInteger; import java.util.HashMap; import java.util.Map; +import static org.apache.velocity.runtime.parser.node.MathUtils.isZero; + /** * Support for getAs() convention for rendering (String), evaluating (Boolean) * or doing math with
svn commit: r1783746 - in /velocity/engine/trunk/velocity-engine-core/src: main/java/org/apache/velocity/runtime/parser/node/ test/java/org/apache/velocity/test/
Author: cbrisson Date: Mon Feb 20 11:51:14 2017 New Revision: 1783746 URL: http://svn.apache.org/viewvc?rev=1783746=rev Log: [engine] testcase and literals behavior for emptycheck=false; reference should cache emptycheck for speed Added: velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IfEmptyNoEmptyCheckTestCase.java - copied, changed from r1783739, 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 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/ASTReference.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTStringLiteral.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=1783746=1783745=1783746=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:51:14 2017 @@ -21,6 +21,7 @@ package org.apache.velocity.runtime.pars 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 ext */ public boolean evaluate( InternalContextAdapter context) { -return !MathUtils.isZero(value); +return !rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || !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=1783746=1783745=1783746=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:51:14 2017 @@ -21,6 +21,7 @@ package org.apache.velocity.runtime.pars 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 S */ public boolean evaluate( InternalContextAdapter context) { -return !MathUtils.isZero(value); +return !rsvc.getBoolean(RuntimeConstants.CHECK_EMPTY_OBJECTS, true) || !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=1783746=1783745=1783746=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:51:14 2017 @@ -22,6 +22,7 @@ package org.apache.velocity.runtime.pars 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
svn commit: r1783744 - in /velocity/engine/trunk/velocity-engine-core/src: main/java/org/apache/velocity/runtime/parser/node/ test/java/org/apache/velocity/test/
Author: cbrisson Date: Mon Feb 20 11:32:31 2017 New Revision: 1783744 URL: http://svn.apache.org/viewvc?rev=1783744=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=1783743=1783744=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=1783743=1783744=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=1783743=1783744=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=1783743=1783744=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(
svn commit: r1783776 - in /velocity/engine/trunk/velocity-engine-core/src: main/parser/Parser.jjt test/resources/templates/array.vm test/resources/templates/compare/array.cmp
Author: cbrisson Date: Mon Feb 20 15:12:06 2017 New Revision: 1783776 URL: http://svn.apache.org/viewvc?rev=1783776=rev Log: [engine] allow expressions inside []: $foo[$bar + 1] Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/array.vm velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/array.cmp Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt?rev=1783776=1783775=1783776=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt Mon Feb 20 15:12:06 2017 @@ -1040,7 +1040,7 @@ TOKEN: | } -+ TOKEN : { @@ -1782,12 +1782,8 @@ void IntegerRange() : {} void IndexParameter() #void: {} { (|)* -( -StringLiteral() -| IntegerLiteral() -| True() -| False() -| Reference() +( +Expression() ) (|)* } Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/array.vm URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/array.vm?rev=1783776=1783775=1783776=diff == --- velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/array.vm (original) +++ velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/array.vm Mon Feb 20 15:12:06 2017 @@ -40,3 +40,9 @@ $p.m( [ $A.g(1), $title ]) $pp.messageFormat( [ $Abc.get($sti), $title, $ti, $sti, 'bodytext' ], $subtopicTemplate) #set ($args = [ $pp.nQuestions, $pass, $units ] ) +## expression in index + +#set($arr = [ 0, 1, 2, 3 ]) +#set($index = 1) + +$arr[$index + $index * 2] Modified: velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/array.cmp URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/array.cmp?rev=1783776=1783775=1783776=diff == --- velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/array.cmp (original) +++ velocity/engine/trunk/velocity-engine-core/src/test/resources/templates/compare/array.cmp Mon Feb 20 15:12:06 2017 @@ -20,3 +20,6 @@ a $p.m( [ $A.g(1), $title ]) $pp.messageFormat( [ $Abc.get($sti), $title, $ti, $sti, 'bodytext' ], $subtopicTemplate) + + +3
svn commit: r1783766 - in /velocity/site/cms/trunk/content/engine/devel: configuration.mdtext user-guide.mdtext vtl-reference.mdtext
Author: cbrisson Date: Mon Feb 20 14:07:41 2017 New Revision: 1783766 URL: http://svn.apache.org/viewvc?rev=1783766=rev Log: [site/engine] document condition evaluation new config flag and behavior Modified: velocity/site/cms/trunk/content/engine/devel/configuration.mdtext velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext velocity/site/cms/trunk/content/engine/devel/vtl-reference.mdtext Modified: velocity/site/cms/trunk/content/engine/devel/configuration.mdtext URL: http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/devel/configuration.mdtext?rev=1783766=1783765=1783766=diff == --- velocity/site/cms/trunk/content/engine/devel/configuration.mdtext (original) +++ velocity/site/cms/trunk/content/engine/devel/configuration.mdtext Mon Feb 20 14:07:41 2017 @@ -66,9 +66,19 @@ Below are listed the configuration keys ### #if() Directive -**`directive.if.tostring.nullcheck = true`** +**`directive.if.emptycheck = true`** -> Default behavior is to check return value of toString() and treat an object with toString() that returns null as null. If all objects have toString() methods that never return null, this check is unnecessary and can be disabled to gain performance. In Velocity 1.5, no such null check was performed. +> When evaluating if a reference resolves to `true` or `false` in a boolean context, the engine first checks if its value is null, if it is a Boolean or if it has a getAsBoolean() method. Then, if none of this applies, the behavior depends upon this configuration flag: +> +> - if `directive.if.emptycheck` is `false`, no further check is performed and the object resolves to `true`. +> - if `directive.if.emptycheck` is `true`, the object is check for emptiness and zero value: +> - return whether an array is empty. +> - return whether isEmpty() is false (covers String and all Collection classes). +> - return whether length() is zero (covers CharSequence classes other than String). +> - returns whether size() is zero (covers all Collections classes). +> - return whether a Number *strictly* equals zero. +> - return whether the result of getAsString() is empty (and false for a null result) if it exists. +> - return whether the result of getAsNumber() *strictly* equals zero (and false for a null result) if it exists. ### #set() Directive Modified: velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext URL: http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext?rev=1783766=1783765=1783766=diff == --- velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext (original) +++ velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext Mon Feb 20 14:07:41 2017 @@ -500,11 +500,14 @@ The *#if* directive in Velocity allows f Velocity! #end -The variable *$foo* is evaluated to determine whether it is true, which will happen under one of three circumstances: +The variable *$foo* is evaluated to determine whether it is true, which will happen under one of those circumstances: + *$foo* is a boolean (true/false) which has a true value + *$foo* is a string or a collection which is not null **and** not empty -+ *$foo* is an object (other than a string or a collection) which is not null ++ *$foo* is a number which equals to zero ++ *$foo* is an object (other than a string, a number or a collection) which is not null + +(please note that this is the default behavior, but Velocity can be configured to [skip all checks beyond boolean and nullity ones](configuration.html#if-directive)). Remember that the Velocity context only contains Objects, so when we say 'boolean', it will be represented as a Boolean (the class). This is true even for methods that return `boolean` - the introspection infrastructure will return a `Boolean` of the same logical value. Modified: velocity/site/cms/trunk/content/engine/devel/vtl-reference.mdtext URL: http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/devel/vtl-reference.mdtext?rev=1783766=1783765=1783766=diff == --- velocity/site/cms/trunk/content/engine/devel/vtl-reference.mdtext (original) +++ velocity/site/cms/trunk/content/engine/devel/vtl-reference.mdtext Mon Feb 20 14:07:41 2017 @@ -88,7 +88,18 @@ Format: Usage: -+ *condition* - If a boolean, considered true if it has a true false; if not a boolean, considered true if not null. ++ *condition* - Expression to evaluate. When tis result is null, evaluate to false. Otherwise, check for conversion towards Boolean and non-emptiness as follow: + - return its value for a Boolean object, or the result of the getAsBoolean() method if it exists. + - if `directive.if.emptycheck` = `false` (`true` by default),
svn commit: r1783725 - in /velocity/engine/trunk: ./ velocity-engine-core/src/main/java/org/apache/velocity/ velocity-engine-core/src/main/java/org/apache/velocity/runtime/ velocity-engine-core/src/ma
Author: cbrisson Date: Mon Feb 20 08:41:00 2017 New Revision: 1783725 URL: http://svn.apache.org/viewvc?rev=1783725=rev Log: [engine] several coding style fixes (Michael remarks) Modified: velocity/engine/trunk/README.md velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/Template.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/RuntimeInstance.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/VelocimacroFactory.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/Macro.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/directive/Parse.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTReference.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/ASTSetDirective.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/resource/ResourceManagerImpl.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/resource/loader/ClasspathResourceLoader.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/resource/loader/FileResourceLoader.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/resource/loader/JarResourceLoader.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/resource/loader/StringResourceLoader.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/runtime/resource/loader/URLResourceLoader.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/ExtProperties.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/StringUtils.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/Introspector.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/BaseTestCase.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/IntrospectorTestCase.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/InvalidEventHandlerTestCase.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/NumberMethodCallsTestCase.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/eventhandler/Handler1.java Modified: velocity/engine/trunk/README.md URL: http://svn.apache.org/viewvc/velocity/engine/trunk/README.md?rev=1783725=1783724=1783725=diff == --- velocity/engine/trunk/README.md (original) +++ velocity/engine/trunk/README.md Mon Feb 20 08:41:00 2017 @@ -19,7 +19,7 @@ Here's a description of the top level di Apache Velocity will run with any Java runtime engine v1.7 or greater. -Building from source requires Java development kit v1.7 or greater and Maven 3 (3.3.3 at the time of writing). +Building from source requires Java development kit v1.7 or greater and Maven 3 (3.0.5+). At compile time, Maven should fetch all needed dependencies, which are: * commons-lang v3.5 @@ -80,7 +80,7 @@ all arguments are evaluated once at star copy of the reference to each argument). * the UberspectLoggable interface has been removed. - VTL Changes: + VTL Changes: * the hypen ( - ) cannot be used in variable names anymore * method arguments can be arithmetic expressions @@ -93,11 +93,11 @@ following values: none, bc (aka. backwar See the related documentation section for details. To maximize backward compatibility with 1.x, set it to bc. - Dependencies changes: + Dependencies changes: * Velocity now requires a JDK version of 1.7 or higher. * commons-collections and commons-logging aren't needed any more at runtime. -* there's a new runtime dependency, slf4j-api 1.7.12. +* there's a new compile-time and runtime dependency, slf4j-api 1.7.12. * you'll need an SLF4J binding. * commons-lang has to be upgraded to 3.5. Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/Template.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/Template.java?rev=1783725=1783724=1783725=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/Template.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/Template.java Mon Feb 20 08:41:00 2017 @@ -325,8 +325,7 @@ public class Template extends Resource /*
svn commit: r1783729 - in /velocity/engine/trunk/velocity-engine-core/src: main/java/org/apache/velocity/util/ExtProperties.java main/java/org/apache/velocity/util/StringUtils.java test/java/org/apach
Author: cbrisson Date: Mon Feb 20 08:57:19 2017 New Revision: 1783729 URL: http://svn.apache.org/viewvc?rev=1783729=rev Log: [engine] fix compilation and tests after last commits Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/ExtProperties.java velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/StringUtils.java velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/BaseTestCase.java Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/ExtProperties.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/ExtProperties.java?rev=1783729=1783728=1783729=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/ExtProperties.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/ExtProperties.java Mon Feb 20 08:57:19 2017 @@ -26,6 +26,7 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.security.AccessController; import java.util.ArrayList; import java.util.Enumeration; Modified: velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/StringUtils.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/StringUtils.java?rev=1783729=1783728=1783729=diff == --- velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/StringUtils.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/main/java/org/apache/velocity/util/StringUtils.java Mon Feb 20 08:57:19 2017 @@ -23,8 +23,6 @@ import org.apache.velocity.runtime.direc import org.apache.velocity.runtime.parser.node.Node; import org.apache.velocity.util.introspection.Info; -import org.apache.commons.lang3.StringUtils; - /** * This class provides some methods for dynamically * invoking methods in objects, and some string @@ -77,7 +75,7 @@ public class StringUtils public static String formatFileString(String template, int linenum, int colnum) { StringBuilder buffer = new StringBuilder(); -if (StringUtils.isEmpty(template)) +if (org.apache.commons.lang3.StringUtils.isEmpty(template)) { template = ""; } Modified: velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/BaseTestCase.java URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/BaseTestCase.java?rev=1783729=1783728=1783729=diff == --- velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/BaseTestCase.java (original) +++ velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/BaseTestCase.java Mon Feb 20 08:57:19 2017 @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Locale; /** @@ -467,11 +468,11 @@ public abstract class BaseTestCase exten protected String getFileContents(String file) { -String contents; +String contents = null; try { -contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); +contents = new String(Files.readAllBytes(Paths.get(file)), StandardCharsets.UTF_8); } catch (Exception e) {