Changes Report

Release History

Version Date Description
1.6.4 2010-05-10
1.6.3 2009-12-16
1.6.2 2009-03-01
1.6.1 2008-12-15
1.6 2008-12-01
1.6-beta2 2008-10-26
1.6-beta1 2008-09-22
1.5 2007-01-28
1.5-beta2 2006-11-24
1.5-beta1 2006-09-13


Release 1.6.4 - 2010-05-10

Type Changes By
fix Fix bug in #parse that threw an NPE when IncludeEventHandler returned null and inline macros are kept local. Fixes VELOCITY-717. Thanks to Jarkko Viinamaki. nbubna
fix Fix double-checked locking in RuntimeInstance's optional lazy-init for Java 1.5+. Users of older JREs in multi-threaded environments MUST manually call init() on any thread-shared Velocity singleton or VelocityEngine instances to avoid race conditions. New auto-init feature is only supported on Java 1.5+. Fixes VELOCITY-750. nbubna
fix Fix 100% CPU loop hang under simultaneous HashMap calls in ClassMap due to classic bug in Sun's implementation. Now uses ConcurrentHashMap when available and Hashtable otherwise. Fixes VELOCITY-718. nbubna

Release 1.6.3 - 2009-12-16

Type Changes By
fix Add directive.if.tostring.nullcheck config switch to match past performance for those who do not need to check whether $foo.toString() returns null when doing #if( $foo ). Fixes VELOCITY-731. Thanks to Jorgen Rydenius. nbubna

Release 1.6.2 - 2009-03-01

Type Changes By
fix Fix obscure caching problem in multiple resource loader situations where resources may exist in more than one loader and appear and disappear from loaders. Fixes VELOCITY-702. nbubna
fix Fix old regression from 1.4 in supporting methods declared as abstract in a public class but implemented in a non-public class. Fixes VELOCITY-701. nbubna
fix Fix problem with FileResourceLoader's resourceExists() when configured w/multiple paths. Fixes VELOCITY-693. nbubna
fix Fix regression in proxying of macro args Fixes VELOCITY-681. nbubna
fix Fix ClassMap missing super interfaces Fixes VELOCITY-689. nbubna
fix Fix loss of inline macros when #evaluate is used. Fixes VELOCITY-682. nbubna
fix Fix name of sources jar for maven deployment. Fixes VELOCITY-554. Thanks to Adrian Tarau. nbubna
fix Pre 1.6 behavior of specifying #macro without parenthesis would throw a VelocityException has been restored. Fixes VELOCITY-667. byron
add Better error reporting when toString() throw an exception when testing an #if conditional. For example #if($foo) Fixes VELOCITY-656. byron
fix Fix $velocityHasNext so that it works in nested foreach blocks. Fixes VELOCITY-658. Thanks to Jarkko Viinamäki. byron
fix Throw an exception in strict mode when >=, <=, < or > comparisons can't be made. Fixes VELOCITY-645. byron
fix Fix $velocityHasNext so it is not always true. Fixes VELOCITY-657. cbrisson

Release 1.6.1 - 2008-12-15

Type Changes By
fix Correct/enhance template name reporting for #include and #parse. Fixes VELOCITY-654. Thanks to Byron Foster. nbubna
fix Removed redundant error message in ASTReference. Fixes VELOCITY-653. Thanks to Byron Foster. nbubna
fix Fix limitation in new macro implementation that resisted #set calls to change references defined as arguments for the macro. Fixes VELOCITY-615. Thanks to Steve O'Hara. nbubna
fix Fix vararg bugs when calling overloaded methods like get(String,String,Object[]) and get(String,List). (e.g. in VelocityStruts' MessageTool) Fixes VELOCITY-651. Thanks to Stephan Schmid. nbubna

Release 1.6 - 2008-12-01

Type Changes By
fix Fix NPE when null value is passed to array/vararg method. Fixes VELOCITY-649. Thanks to Byron Foster. nbubna
fix Track template name in Node, to get proper template name in the exception message when a reference in a macro causes that exception. Fixes VELOCITY-644. Thanks to Byron Foster. nbubna
fix Update Finnish and Spanish User Guide sections on division operation. Fixes VELOCITY-352. Thanks to Gonzalo Diethelm, Joni Salonen. nbubna
fix Fix classpath for XMLApp example. Fixes VELOCITY-641. Thanks to Will Glass-Husain. nbubna
fix Fix references to Oro dependency to make it clear that it is only necessary for certain reference event handlers. Fixes VELOCITY-617. Thanks to Adrian Tarau. nbubna
fix Remove old Anakia/Texen docs and examples. Fixes VELOCITY-640. Thanks to Will Glass-Husain. nbubna
fix Fix bug in vararg support where an array passed to a vararg method was being wrapped in another array. Fixes VELOCITY-642. Thanks to Ilkka Priha. nbubna
fix Locked down versions for reporting plugins in Maven POM. Fixes VELOCITY-638. Thanks to Benjamin Bentmann. nbubna
add Add Maven-Ant tasks for installing and deploying Maven artifacts, including previously missing source and javadoc jars (VELOCITY-554). Fixes VELOCITY-466. Thanks to Adrian Tarau. nbubna

Release 1.6-beta2 - 2008-10-26

Type Changes By
fix Fix User Guide's Table of Contents anchor links. Fixes VELOCITY-632. Thanks to Sebb. nbubna
fix Fix parser bug that prevented references from immediately preceding #set directives. Fixes VELOCITY-631. Thanks to Byron Foster. nbubna
fix Revert change made for VELOCITY-285, as it broke pass-by-name nature of macro arguments. Fixes VELOCITY-630. Thanks to Byron Foster. nbubna
fix Fix line numbers in string literals. Fixes VELOCITY-629. Thanks to Byron Foster. nbubna
fix Fix line number for exceptions with body of #foreach directive. Fixes VELOCITY-627. Thanks to Byron Foster. nbubna
add Log full macro stack when a RuntimeException occurs in a template. Fixes VELOCITY-626. Thanks to Byron Foster. nbubna
add Format template and line/column numbers consistently in error and log messages. Fixes VELOCITY-622. Thanks to Byron Foster. nbubna
fix Don't override pre-configured log levels for JdkLogChute or Log4JLogChute. Fixes VELOCITY-624. Thanks to Byron Foster. nbubna
add Add optional 'runtime.references.strict' property that has Velocity throw exceptions when it encounters undefined references or velocimacros in a template. Fixes VELOCITY-618. Thanks to Byron Foster. nbubna
add Inlude Maven Ant tasks jar in downloads and add support for downloading from Maven2 repos. Fixes VELOCITY-554. Thanks to Adrian Tarau. nbubna
fix Fix problem with single backslash in interpolated (double-quoted) strings. Fixes VELOCITY-585. Thanks to Jon Seymour. nbubna
fix Fix escaping of bracketed directives (e.g. \#{if}($foo)$bar\#{end}). Fixes VELOCITY-616. Thanks to Alik. nbubna

Release 1.6-beta1 - 2008-09-22

Type Changes By
add Uberspectors chaining Fixes VELOCITY-588. Thanks to Vincent Massol, Sergiu Dumitriu. cbrisson
add Add ability to set a connection timeout for URLResourceLoader. Fixes VELOCITY-585. Thanks to Tim White. nbubna
add Make it easier to override ResourceFactory.getResource(...) in ResourceManagerImpl. Fixes VELOCITY-227. Thanks to Charles Morehead. nbubna
add Fix BooleanPropertyExecutor to recognize "public Boolean isFoo" properties. Fixes VELOCITY-544. Thanks to Adam Bishop, Jarkko Viinamaki. nbubna
add Add a separate resourceExists(String name) method to ResourceLoader(s) to improve performance. Fixes VELOCITY-439. Thanks to Tassos Bassoukos, Henning Schmiedehausen. nbubna
add Fix missing # and $ characters within #literal() directive output. Fixes VELOCITY-355. Thanks to Geoffrey Lowney, Dan Ertman. nbubna
add Add support for static utility classes: context.put("math", Math.class) -> $math.sin(0) Fixes VELOCITY-102. Thanks to Juozas Baliuka, Adrian Tarau, Jim Seach. nbubna
add Add #define directive set an unrendered block of VTL as a reference. (e.g. #define( $foo )Hello, $bar!#end #set( $bar = 'world') $foo -> Hello, world!) Fixes VELOCITY-174. Thanks to Andrew Tetlaw. nbubna
add Add #break directive to exit #foreach loops early. Fixes VELOCITY-612. Thanks to Jarkko Viinamaki. nbubna
add Fixed major performance issues with Velocimacros. Fixes VELOCITY-607. Thanks to Jarkko Viinamaki. nbubna
add Removed many, various performance bottlenecks and concurrency issues. (Also see VELOCITY-595) Fixes VELOCITY-606. Thanks to Jarkko Viinamaki. nbubna
add New VTL syntax $velocityHasNext within #foreach loops Fixes VELOCITY-600. Thanks to Adrian Tarau. nbubna
fix Multi-line comments in macros were rendering extra *# when evaluated. Fixes VELOCITY-580. Thanks to Marnix van Bochove. wglass
fix Have VelocityCharStream use an exponential buffer expansion rate. Fixes VELOCITY-570. Thanks to Ronald Klop. cbrisson
fix Prevent exception due to simultaneous rendering of macros. Fixes VELOCITY-566. Thanks to Etienne Massip. wglass
add New VTL syntax allows arrays to be treated like fixed length lists. Fixes VELOCITY-533. Thanks to Christopher Schultz. nbubna
add Added support for varargs in method calls. Fixes VELOCITY-534. nbubna
fix Prevent NPE when template is parsed simultaneously by multiple users. (may apply only to macros). Fixes VELOCITY-536. Thanks to Lei Gu, Dima Tkach. wglass
fix Users can now include libraries of macros with #parse in a template. Fixes VELOCITY-362. Thanks to Supun Kamburugamuva. wglass
add Macro libraries can now be selected programatically when merging templates. Fixes VELOCITY-529. Thanks to Supun Kamburugamuva. wglass
fix Catch IllegalArgumentException when invoking method. Fixes VELOCITY-452. Thanks to Alexey Panchenko. wglass
fix Fixed parse error for map definitions ending with a reference. Fixes VELOCITY-538. wglass
add Add new property velocimacro.max.depth which limits max macro calling depth. Fixes VELOCITY-297. Thanks to Supun Kamburugamuva. wglass
add Add ability to add directives programmatically Fixes VELOCITY-547. Thanks to Adam Heath. wglass
fix Allow user directives to have no content. Fixes VELOCITY-548. Thanks to Adam Heath. wglass
fix IncludeNotFound event handler was displaying "not found" template. Fixes VELOCITY-551. Thanks to Michiel Toneman. wglass
fix Fix StringResourceLoader to make it possible to use more than one loader per VM. Fixes VELOCITY-541. nbubna
fix Make unicode encoding work in velocity templates. Fixes VELOCITY-520. Thanks to Stepan Koltsov. nbubna
add Add a ServletLogChute that allows logging through the servlet API. Ported from the Velocity Tools project. nbubna
add Add a CommonsLogLogChute that allows logging through commons-logging. nbubna
update Deprecate integrated texen and anakia, factor it out into separate jars. wglass
add Added new directive #evaluate() to dynamically evaluate VTL. Fixes VELOCITY-509. wglass

Release 1.5 - 2007-01-28

Type Changes By
fix Fix to SecureUberspector to work properly with #foreach and iterators. Fixes VELOCITY-516. Thanks to Vincent Massol. wglass
add Make FileResourceLoader unicode aware to allow skipping over BOM markers like those created by Windows Notepad. This is a workaround for a Java bug, where Java itself does not recognize the UTF-8 BOM as defined by the unicode standard. Fixes VELOCITY-191. Thanks to Aki Nieminen. henning

Release 1.5-beta2 - 2006-11-24

Type Changes By
add New StringResourceLoader can retrieve templates from repository of in-memory Strings. Fixes VELOCITY-183. Thanks to Eelco Hillenius. henning
fix RuntimeInstance.getProperty now returns value set with RuntimeInstance.setProperty, even before initialization. Fixes VELOCITY-493. Thanks to Claude Brisson. wglass
add When macros have incorrect number of arguments, if property "velocimacro.arguments.strict" is set to true a ParseErrorException will be thrown. Fixes VELOCITY-435. wglass
add MethodInvocationException now contains line, column, template name allowing application to produce more useful error messages. Fixes VELOCITY-414. Thanks to Matthijs Lambooy. henning
fix Fixed race condition in template retrieval that caused macros to fail under simultaneous load. Fixes VELOCITY-24. henning
add New event handler InvalidReferenceHandler allows application to catch invalid references. Sample implementation collects them in list and optionally throws exception. Fixes VELOCITY-423. wglass
add New, optional SecureIntrospector prohibits methods that involve manipulation of classes, classloaders or reflection objects. Use this introspector to secure Velocity against a risk of template writers using reflection to perform malicious acts. Fixes VELOCITY-179. wglass
fix Removed Serializable from InternalContextBase, because one of the members is not serializable anyway so this never worked (Found by Findbugs). Fixes VELOCITY-458. henning
fix Add an additional pair of Executors that are smart about Map. Fixes VELOCITY-449. Thanks to Alexey Panchenko. henning
fix Method caching now uses consistent keys. Fixes VELOCITY-453. Thanks to Alexey Panchenko. wglass
fix Change the meaning of localscope for macros to allow access to references from calling context. Fixes VELOCITY-459. Thanks to Stephen Haberman. wglass
add Add a test for the DataSourceResource Loader. henning
add Fix a problem in the DataSourceResource Loader, removing a potential security issue with SQL injection. henning
add Build now creates the MD5 and SHA1 checksums for archives and jars. henning
fix Fix a number of issues reported by running FindBugs on the Velocity source. henning

Release 1.5-beta1 - 2006-09-13

Type Changes By
fix Stop references from calling object.toString() twice. Fixes VELOCITY-438. Thanks to Stephen Haberman. wglass
update Pass through all runtime exceptions. Among other benefits, this allows plugins to throw a runtime exception to signify an application level problem in the calling application. Fixes VELOCITY-429. wglass
fix When #include was followed by #parse with the same file name, a ClassCastException was thrown. Fixes VELOCITY-98. Thanks to Michal Chmielewski. wglass
add Wrapped exceptions now have Cause property set on JDK 1.4. (note that Velocity continues to run under JDK 1.3). Fixes VELOCITY-425. Thanks to Llewellyn Falco. wglass
fix When Velocity is initialized, default.properties stream was not being closed. This made it difficult to undeploy webapps on Windows with Velocity unpacked. Fixes VELOCITY-418. Thanks to Jason Weinstein. wglass
fix Upgraded to latest commons collection, fixing problem with non-recognition of configuration file encoding in rare circumstances. Fixes VELOCITY-151. Thanks to Kirk Wolf. wglass
fix The Introspector could throw a NPE when a parameter to an overloaded method was null. Fixes VELOCITY-370. Thanks to Reggie Riser. wglass
fix If toString() returned null in a silent reference then "null" was displayed. Fixes VELOCITY-381. Thanks to Llwellyn Falco and Dan Powell. wglass
fix caused ParseException. Fixes VELOCITY-359. wglass
add Added javacc task to build.xml simplifying modification process for editing syntax files. Fixes VELOCITY-222. wglass
fix Velocity Engine was throwing NPE when used without a call to init(). Now gives a more meaningful exception message. Fixes VELOCITY-374. wglass
update Fixed problem with Uberspect Info class being created incorrectly. Added template name to Info allowing better error reporting. Fixes VELOCITY-404. Thanks to Llewellyn Falco. wglass
update Numerous improvements to the documentation. Reorganized table of contents, moved community content to the Wiki, added article on using Velocity in web applications. wglass
update When testing objects in VTL for equality, if both objects are a number, use number equality. If both objects are the same class, use the equals method. New behavior: If objects are different classes, compare the String representation of both objects rather than logging an error. Fixes VELOCITY-350. wglass
fix Velocity would give error when last line of file was a ## comment. Fixes VELOCITY-272. wglass
update Added method to retrieve application attributes. Fixes VELOCITY-412. Thanks to Malcolm Edgar. wglass
update Velocity now searches in the current thread's context classloader before the system classloader for all templates loaded with the ClasspathResourceLoader and for all user-defined ResourceLoaders, introspectors, event handlers, etc. A typical use for this is to have Velocity in the application container classpath while keeping templates and plugins in the webapp classpath. Fixes VELOCITY-196. wglass
update to true. Thanks to Thomas Veith. wglass
add New optional event handler that escapes all references. Regular expressions can be used to configure which references have HTML, JavaScript, SQL, or XML escaping. wglass
add New optional event handler implementation that forces #parse / #include to stay in same directory as parent template. Fixes VELOCITY-154. wglass
add New event handler to modify behavior of #parse / #include. Fixes VELOCITY-260. wglass
update FileResourceLoader now accepts absolute path when configured to accept it. Fixes VELOCITY-144. wglass
fix String containing "##" was treated as unterminated String. Fixes VELOCITY-126. wglass
add Spruced up Geir's old URLResourceLoader and promoted it from the whiteboard to the main distribution. Fixes VELTOOLS-55. Thanks to Charles Harvey. nbubna
update Throw Runtime exceptions from nodes up the chain. Fixes VELOCITY-424. Thanks to Malcom Edgar. henning
update Revert the split between org.apache.velocity.runtime.parser.node.Node and org.apache.velocity.runtime.parser.Node. The parser now only uses ...parser.node.Node because this change broke custom directives. Fixes VELOCITY-426. Thanks to Malcom Edgar. henning
update Made a lot of internal logging upgrades including: Deprecated LogSystem interface and replaced it (and all its implementations) with a new LogChute interface and implementations, added getLog() to RuntimeServices (and all its friends) to improve on and replace its now deprecated logging methods, added a JdkLogChute as a 3rd default option for those using JDK 1.4+, and added a StandardOutLogChute as final resort if other LogChute inits fail. See JIRA issues VELOCITY-403, VELOCITY-166, VELOCITY-403,VELOCITY-166,VELOCITY-78, VELOCITY-157, VELOCITY-159, VELOCITY-193. Fixes VELOCITY-403. nbubna
remove Removed all J2EE build tasks. Now automatically detects availability of javax.sql.Datasource (in JDK 1.4+) and builds DatasourceResourceLoader when allowed. Fixes VELOCITY-401. henning
add ant build now downloads the required dependency jars from ibiblio.org henning
update Unified template name, line and column number reporting for ParserErrorException Fixes VELOCITY-373. Thanks to Malcolm Edgar. henning
remove Dropped the non-functional Velocity compiler. henning
update Started separating out the JavaCC generated parts of the Velocity Parser. Not yet complete to avoid user visible changes. Scheduled to be completed for 2.0 henning
add Contributed a maven build for Velocity henning
fix Reworked the ant build to product only two jars: velocity.jar and velocity-dep.jar. henning
remove Removed the Configuration class and all methods that references it. This class was deprecated since Velocity 1.1 and was scheduled to be gone for Velocity 1.3 or 1.4. Now it was finally removed in 1.5. henning
add Added support for decimal numbers. Fixes VELOCITY-242. Thanks to Peter Romianowski. wglass
fix MethodInvocationException now consistently thrown (previously was hidden when in parameter to Velocimacro). Fixes VELOCITY-284. Thanks to Mike Rettig. wglass
fix Fixed problem in which foreach loop would fail to call overloaded method. Fixes VELOCITY-109. wglass
fix Removed ERROR level log message "Can't find 'VM_global_library.vm'". Fixes VELOCITY-86. wglass
fix Anakia now generates consistent line endings based on platform. Requires upgrade to JDom 1.0. Fixes VELOCITY-348. wglass
add Anakia can now be pre-loaded with custom context values from an optional XML file. Fixes VELOCITY-190. Thanks to Peter Ryan. wglass
add Directives can now be delimited with curly braces, for example #if($condition)something#{else}otherthing#{end}. Fixes VELOCITY-43. wglass
fix Nulls now handled appropriate within #foreach. Fixes VELOCITY-254. Thanks to Christopher Reck. wglass
fix Upgraded JavaCC to version 3.2, providing JDK 1.5 compatibility. (Older version used keyword 'enum' which is reserved in JDK 1.5). Fixes VELOCITY-324. Thanks to Shinobu Kuwai. wglass
update DatasourceResourceLoader now allows injection of Datasource, allowing it to be used in Inversion of Control (IOC) frameworks. Fixes VELOCITY-267. Thanks to Matt Raible . wglass
fix #stop now works properly. Fixes VELOCITY-218. wglass
update ClasspathResourceLoader now searches ContextClassLoader for template. Fixes VELOCITY-196. Thanks to Charles Oliver Nutter. wglass
remove deprecated Category and Priority classes in favor of the corresponding and supported Logger and Level. To update, replace necessary references, and Category.getInstance() with Logger.getLogger(). Fixes VELOCITY-164. dlr
add New Map literal syntax. Fixes VELOCITY-152. Thanks to James Taylor. wglass
remove Removed the long-deprecated Log4JLogSystem. Never fear, SimpleLog4JLogSystem remains. dlr
update for your cache to less than 1. dlr
update Took dan's modified SimpleLog4jLogSystem, and renamed Log4JLogSystem, and put back old version of SimpleLog4JLogSystem, as deprecated. That way we can move forward with an up-to-date version that uses Logger, and for one release, be backwards compatile for the Category-using log4j crowd. Thanks to Daniel Rall. geirm
remove Deprecated org.apache.velocity.tools.VelocityFormatter class in favor of the various format classes in the Velocity Tools library. wglass
remove Deprecated the org.apache.velocity.servlet.VelocityServlet class in favor of org.apache.velocity.tools.view.servlet.VelocityViewServlet from the Velocity Tools library. Servlet interaction is more a core competency of the Velocity Tools package than of Velocity's core. dlr
fix Fix to BaseTestCase as suggested by Will Glass-Husain to handle line endings Fixes VELOCITY-185. Thanks to wglass. geirm
update Parameterized cache and mod time control in TexenTask based on patch from Henning. Thanks to henning.
fix Fix to DatasourceResourceLoader - stop using the old Runtime singleton as would leak a little memory for each instance of VelocityEngine created. Hunted down by Will Glass-Husain. Fixes VELOCITY-150. Thanks to wglass. geirm
fix SimplePool now removes elements from pool on a get(). NOTE : Previously, it left the reference to the object in the pool. Fixes VELOCITY-161. Thanks to wglass. geirm
fix Fixes problem with single line comment embedded in a multi-line comment. Fixes VELOCITY-61. Thanks to wglass. geirm
fix Change for VELOCITY-221 and partial for VELOCITY-148, allowing newlines in directives. Fixes VELOCITY-221. geirm
update Change to finish request VELOCITY-148, allowing '+' as a string concat. We'll have to see how the community likes it. Fixes VELOCITY-148. geirm
fix Didn't allow formal reference notation as first arg to foreach. Fixes VELOCITY-239. geirm
update To make using w/ XML easier allow alternative logical operators 'and', 'or', 'lt', 'gt', 'le', 'ge', 'eq', 'ne', 'not'. geirm
update Allow newlines in strings. geirm
fix Tiny fix to VelocityWriter to prevent a NPE if someone passes it a null Fixes VELOCITY-148. geirm
fix Anakia changes to accomodate finalization of JDOM API. In AnakiaJDOMFactory, AnakiaTask, and OutputWrapper geirm
update Added template, line and column info to MIEs thrown by ASTMethod geirm