<th id="jjh9j"><th id="jjh9j"><ins id="jjh9j"></ins></th></th>

<address id="jjh9j"><strike id="jjh9j"></strike></address><ruby id="jjh9j"><mark id="jjh9j"><progress id="jjh9j"></progress></mark></ruby>

      <p id="jjh9j"><del id="jjh9j"></del></p>
        <ruby id="jjh9j"></ruby>
          <p id="jjh9j"></p>

          <pre id="jjh9j"><ruby id="jjh9j"><mark id="jjh9j"></mark></ruby></pre>


          Velocity Engine




          Translations (outdated)

          Velocity News Feed

          Changes Report

          Release History

          Version Date Description
          2.0 2017-08-06
          1.7 2010-11-29
          1.7-beta1 2010-04-10
          1.6.4 2010-05-10
          1.6.3 2009-12-16
          1.6.2 2009-03-19
          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 2.0 - 2017-08-06

          Type Changes Bye
          Fix DataSourceResourceLoader for UTF-8 correct handling in VARCHAR/CLOB columns, and for connection / statement / result set life cycle. . cbrisson
          Allow expressions inside []: $foo[$bar + 1] . cbrisson
          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 is 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.
          Reviewed event handling API:
          • added a Context argument for all events
          • got rid of the Executor pattern ; event handlers are directly called by the cartridge
          Removed references to ExtProperties from the engine configuration API. . cbrisson
          Default encoding is now UTF-8. . cbrisson
          Make Velocity use the base logger namespace 'org.apache.velocity' unless specified with runtime.log.name in the configuration, and have the runtime instance log with this base namespace, and other modules log with children namespaces:
          • directive, and velocity.directive.[directivename]
          • parser
          • loader and loader.[loadername]
          • macro
          • rendering
          • event
          Get rid of UberspectLoggable interface. .
          Added unary negate math operator . cbrisson
          Add a configurable space gobbling feature, to control indentation in the generated code.
          Possible values for the 'space.gobbling' configuration key:
          • none : no space gobbling at all
          • bc : Velocity 1.x backward compatible space gobbling
          • lines (the default) : gobbles whitespaces and endline from lines containing a single VTL directive
          • structured : like 'lines', but also fixes indentation in children text blocks
          added a new pluggable ConversionHandler class which, by default, converts method arguments as needed between main basic Java data types (boolean, numbers and strings) . cbrisson
          added a runtime.string.interning option to trigger Java String interning on or off . cbrisson
          Applied Jarkko memory-saving patch which frees tokens while parsing. Macros now use a call by sharing convention. . Fixes VELOCITY-841. Thanks to Jarkko Viinam?ki. cbrisson
          support $array.empty, as for $list.empty . Fixes VELOCITY-843. cbrisson
          avoid useless string calculation in ASTStringLiteral . Fixes VELOCITY-833. Thanks to Jarkko Viinam?ki. cbrisson
          nicified AST tree debug output . cbrisson
          fix parsing of $obj._method() . Fixes VELOCITY-830. cbrisson
          loading default properties should not prepend '/' and should use classloader to get resource stream . Fixes VELOCITY-827. Thanks to Dawid Weiss. cbrisson
          Allow conversion of method args from String to Enum constant . Fixes VELOCITY-825. cbrisson
          Applied performance patch for MapGetExecutor: it's faster to directly use object instance rather than to inspect all public interfaces . Fixes VELOCITY-815. Thanks to Oswaldo Hernandez. cbrisson
          The new configuration property context.autoreference.key, if present, allows to specify the name of the reference under which the context is accessible in itself . Fixes VELOCITY-799. cbrisson
          MethodExceptionEventHandler now provide template location infos . Fixes VELOCITY-746. cbrisson
          Attach macros to their defining template. Also fixes VELOCITY-776. Thanks to Simon Kitching for the multithreading testcase. . Fixes VELOCITY-797. Thanks to Jarkko Viinam?ki. cbrisson
          have #foreach honnor the Closeable interface on the iterator . Fixes VELOCITY-820. Thanks to Robert Fuller. cbrisson
          Don't leave 'initializing' to true if a problem occurs during initialization. . Fixes VELOCITY-804. Thanks to Felipe Maschio. cbrisson
          Remove dependency upon commons-collections-3 (except at compile-time for deprecated methods and classes which are needed for backward compatibility), use our own ExtProperties object. . Fixes VELOCITY-790. cbrisson
          Add a first implementation for the JSR 223 standard scripting interface. . Fixes VELOCITY-735. Thanks to Dishara Wijewardana. cbrisson
          Fix Template default encoding initialization problem. . Fixes VELOCITY-809. cbrisson
          The ResourceLoader API now provides a Reader rather than an InputStream. Also fixes VELOCITY-599. . Fixes VELOCITY-793. cbrisson
          InvalidReferenceHandler events should not be triggered by quiet references, null values, or by references testing inside #if / #elseif. Thanks to Renato Steiner for his testcase. . Fixes VELOCITY-553. cbrisson
          Take advantage of the major version jump to enforce String keys in internal Context API . Fixes VELOCITY-266. cbrisson
          Fix regression: #set<tab>left-paren no longer valid grammar Patch from Mike Kienenberger applied + added test . Fixes VELOCITY-863. Thanks to Mike Kienenberger. sdumitriu
          switch to slf4j logging facade . cbrisson
          fix parser for '$map{key}' text rendering (StackOverflow 32805217) . cbrisson
          Vulnerability in dependency: commons-collections: 3.2.1 . Fixes VELOCITY-869. sdumitriu
          Exception displayed when trying to loop over an Iterable private class . Fixes VELOCITY-870. sdumitriu
          #foreach should work over any Iterable class . Fixes VELOCITY-871. sdumitriu
          Catch exceptions raised during chainable uberspector initialization . sdumitriu
          Hypen is no more allowed in variable names . Fixes VELOCITY-542. cbrisson
          Method arguments can now be expressions . Fixes VELOCITY-706. cbrisson
          Parser generation from the .jjt file is now handled by Maven . Fixes VELOCITY-819. Thanks to Jarkko Viinam?ki. cbrisson
          Add a public fields Uberspector . Fixes VELOCITY-12. Thanks to Candid Dauth. cbrisson
          Support query modification in DataSourceResourceLoader . Fixes VELOCITY-814. Thanks to Darren Cruse. nbubna
          Add clear() to ResourceCache . Fixes VELOCITY-813. Thanks to Oswaldo Hernandez. nbubna
          Make #if() return false for empty strings and empty collections . Fixes VELOCITY-692. nbubna
          Add SLF4J logging option . apetrelli
          Use Maven 2 as build system . apetrelli
          Fixed quotes escaping so that doubling single quotes only works when enclosing quotes are single quotes (and same behaviour for double quotes) . Fixes VELOCITY-785. Thanks to Jarkko Viinam?ki. cbrisson
          Removed all remaining "throws Exception" clauses and the now useless ExceptionUtils class. . Fixes VELOCITY-751. nbubna
          Remove directive.if.tostring.nullcheck crutch with intent to replace testing of toString() null status with support for toBoolean() (or similar) method on objects being "#if'd". . Fixes VELOCITY-731. nbubna
          Remove directive.set.null.allowed and instead always allow null to be #set to references. This also means removing all NullSetEventHandler code, since it was only in play when nulls were not allowed to be #set. . nbubna
          Remove features deprecated in 1.7 ($velocityCount, $velocityHasNext, velocimacro.context.localscope, directive.evaluate.context.class and all internal supporting code (ProxyVMContext, EvaluateContext, etc). . Fixes VELOCITY-704. nbubna
          Add ability to specify default values for macro parameters, e.g.; #macro(foo bar=1) . Fixes VELOCITY-697. byron
          Add ability to place line comments next to macro parameter definitions. . Fixes VELOCITY-695. byron
          Block directives no longer require parenthesis so #@foo #end is now allowed. Also, brackets now work with Block Macros so #{@foo}bar#end works. . Fixes VELOCITY-690. byron
          Removed all deprecations (Anakia, Texen, VelocityServlet, etc.) . nbubna
          Changed macro arguments to be pass by value. . Fixes VELOCITY-687. byron

          Release 1.7 - 2010-11-29

          Type Changes Bye
          Fixed quotes escaping so that doubling single quotes only works when enclosing quotes are single quotes (and same behaviour for double quotes) . Fixes VELOCITY-785. Thanks to Jarkko Viinam?ki. cbrisson
          Add access to template and directive debugging info via $/scope/.info. . nbubna
          LogManager now catches UnsupportedOperationExceptions during LogChute init. . Fixes VELOCITY-766. nbubna
          Ensure that DataSourceResourceLoader closes PreparedStatements. . Fixes VELOCITY-760. Thanks to Jarkko Viinam?ki. nbubna
          Mark optional dependencies as such in OSGi bundle manifest. . Fixes VELOCITY-753. Thanks to Matt Ryall. nbubna

          Release 1.7-beta1 - 2010-04-10

          Type Changes Bye
          Add support for OSGi-ready manifests in build/release tasks. . Fixes VELOCITY-694. nbubna
          When comparing parameter types during method mapping, make Object always less specific than other types. . Fixes VELOCITY-753. nbubna
          Avoid NPEs in case of bad #foreach config. . Fixes VELOCITY-759. Thanks to Rachid. nbubna
          Use LinkedHashMap to maintain order of VTL-created maps. . Fixes VELOCITY-755. nbubna
          Treat \ as non-special in string literals, except when specifying unicode sequences. . Fixes VELOCITY-555. Thanks to Jarkko Viinam?ki. nbubna
          Allow escaping of quotes (single or double) within string literals by doubling them ("" or ''). . Fixes VELOCITY-555. Thanks to Jarkko Viinam?ki. nbubna
          Give #parse better log/exception messages and give IncludeEventHandler a chance to handle null #parse args. . Fixes VELOCITY-758. Thanks to Jarkko Viinam?ki. nbubna
          Fix $.x parsing failures (particularly helpful for jQuery users). . Fixes VELOCITY-754,VELOCITY-729. Thanks to Jarkko Viinam?ki. nbubna
          Log Velocimacro additions at debug level, as in pre-1.6 versions. . Fixes VELOCITY-744. nbubna
          Add removeDirective(name) and loadDirective(classname) methods to allow runtime changes to the directive set. . Fixes VELOCITY-742. Thanks to Jarkko Viinam?ki. nbubna
          Throw an informative VelocityException when #define is given no parameter (instead of an ArrayIndexOutOfBoundsException). . Fixes VELOCITY-727. Thanks to Jarkko Viinam?ki. nbubna
          Throw an informative VelocityException when #parse is given no args (instead of an NPE). . Fixes VELOCITY-728. Thanks to Jarkko Viinam?ki. nbubna
          Changed #stop to a directive implementation (get it out of the parser) and allow it to accept a message as an argument to be written to the logs for debugging purposes. . Fixes VELOCITY-704. nbubna
          Change the scoping behavior of Velocity, keeping it optional (everything global scoped by default) but now providing an explicit namespace in content-containing directives (like macros, #foreach, #parse, etc.) in which references that should stay local may be kept. This is accompanied by numerous related changes, including: <ul> <li>A Scope reference can now be automatically made available within each content directive: <ul> <li>$template in Template.merge and #parse content<li> <li>$macro in #macro</li> <li>$foreach in #foreach</li> <li>$evaluate in #evaluate or Velocity.evaluate(...) content</li> <li>$define in #define</li> <li>$&lt;amacro&gt; in #@&lt;amacro&gt; (where &lt;amacro&gt; is the name of a macro being called with a body)</li> </ul> </li> <li>For performance and compatibility these are all off by default, *except* for $foreach. The others may be enabled by setting a velocity property like: <br/><code>macro.provide.scope.control = true</code></li> <li>When scopes of the same type are nested make the parent Scope available through the child (e.g. $foreach.parent or $foreach.topmost).</li> <li>When a Scope reference overrides an existing reference that is not a Scope, make it available through the Scope (e.g. $foreach.replaced).</li> <li>Made #break work in any of the above scopes to exit the most immediate one, unless a different scope is provided as an argument (e.g. #break($macro) or #break($foreach.topmost)).</li> <li>Deprecated $velocityCount; please use $foreach.count or $foreach.index.</li> <li>Deprecated $velocityHasNext; please use $foreach.hasNext, $foreach.first or $foreach.last</li> <li>Deprecated velocimacro.context.localscope setting; please get/set local #macro references as members of the provided $macro scope control instead. (e.g. #set( $macro.foo = 'bar' ) and $macro.foo ).</li> <li>Deprecated directive.evaluate.context.class setting; please get/set local #evaluate references as members of the provided $evaluate scope control instead. (e.g. #set( $evaluate.foo = 'bar' ) and $evaluate.foo ).</li> </ul> All of the deprecated features will be removed in Velocity 2.0. . Fixes VELOCITY-704. nbubna
          Calling #set on a macro argument (for which a #set-able reference was passed) will no longer propagate the new value to the original reference, but merely set the value of the macro argument reference. This was an obscure, infrequently used feature and was decided to be more problematic and unpredictable than useful. . Fixes VELOCITY-681. nbubna
          In strict mode attempts to render references that evaluate to null will throw an exception. In the user wishes to suppress the exception and render nothing then the reference can be preceeded with '$!' as in $!foo. . Fixes VELOCITY-688. byron
          The non default VelocityEngine construtors now do not initialize the runtime system so that properties may be set after construction. Also fixes an Initialization race condition. . Fixes VELOCITY-673. byron
          Make velocimacro.arguments.strict=true work with block macros. . Fixes VELOCITY-685. Thanks to Jarkko Viinam?ki. nbubna
          Added a property for changing escape behavior such that putting a forward slash before a reference or macro always escapes the reference or macro and absorbs the forward slash regardless if the reference or macro is defined. . Fixes VELOCITY-623. byron
          Fix StringIndexOutOfBoundsException caused by #[[##x]]# (line comment on same line as end of textblock). . Fixes VELOCITY-676. Thanks to Jarkko Viinam?ki. nbubna
          Fix NPE caused by #@foo (w/o #end) in template. . Fixes VELOCITY-675. Thanks to Jarkko Viinam?ki. nbubna
          Minor performance tweaks based on Findbugs findings . Fixes VELOCITY-668. Thanks to Jarkko Viinam?ki. byron
          Pre 1.6 behavior of specifying #macro without parenthesis would throw a VelocityException has been restored. . Fixes VELOCITY-667. byron
          Add support for calling velocimacros with body content by prefixing the macro name with @. (e.g. #macro( bold )<strong>$bodyContent</strong>#end #@bold()any valid VTL here#end) The $bodyContent reference may be renamed via a velocimacro.body.reference setting in your velocity.properties. . Fixes VELOCITY-666. Thanks to Jarkko Viinamaki. nbubna
          Added #[[this is included in output but not parsed]]# syntax to replace and deprecate the much more limited #literal directive (which required parse-able content). . Fixes VELOCITY-661. Thanks to Jarkko Viinamaki. nbubna
          Re-implement #stop so that it stops template execution and rendering. This Also addresses a performance bottleneck detected in the old implementation. #stop is a general use directive now, and not just for debugging. . Fixes VELOCITY-663. byron
          Reduce performance bottleneck with the referenceInsert event handler call . Fixes VELOCITY-662. byron
          Better error reporting when toString() throw an exception when testing an #if conditional. For example #if($foo) . Fixes VELOCITY-656. byron
          Added bracketed index syntax, $foo[0], or #set($foo[0] = 1) . Fixes VELOCITY-406. byron
          Removed java.lang.Exception from throws clause of Velocity and VelocityEngine API. Also removed IOException so that all method calls use unchecked exceptions. . Fixes VELOCITY-659. byron
          Removed obsolete WebMacro conversion tool and experimental Veltag (which has been replaced by VelocityViewTag from VelocityTools). . nbubna

          Release 1.6.4 - 2010-05-10

          Type Changes Bye
          Fix double-checked locking in RuntimeInstance's optional lazy-init. . Fixes VELOCITY-750. nbubna
          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 Bye
          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-19

          Type Changes Bye
          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 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 problem with FileResourceLoader's resourceExists() when configured w/multiple paths. . Fixes VELOCITY-693. nbubna
          Fix ClassMap introspection bug introduced in 1.5, where public super-interface methods implemented in protected or private classes were unreachable. . Fixes VELOCITY-689. nbubna
          Fix regression in proxying of macro argument #set calls. Note that in 1.7, calling #set on a macro argument (for which a #set-able reference was passed) will not propagate the new value to the original reference, but merely set the value of the macro argument reference. . Fixes VELOCITY-681. nbubna
          Fix loss of inline macros when #evaluate is used. . Fixes VELOCITY-682. nbubna
          Fix name of sources jar for maven deployment. . Fixes VELOCITY-554. Thanks to Adrian Tarau. nbubna
          Pre 1.6 behavior of specifying #macro without parenthesis would throw a VelocityException has been restored. . Fixes VELOCITY-667. byron
          Better error reporting when toString() throw an exception when testing an #if conditional. For example #if($foo) . Fixes VELOCITY-656. byron
          Fix $velocityHasNext so that it works in nested foreach blocks. . Fixes VELOCITY-658. Thanks to Jarkko Viinam?ki. byron
          Throw an exception in strict mode when >=, <=, < or > comparisons can't be made. . Fixes VELOCITY-645. byron
          Fix $velocityHasNext so it is not always true. . Fixes VELOCITY-657. cbrisson

          Release 1.6.1 - 2008-12-15

          Type Changes Bye
          Correct/enhance template name reporting for #include and #parse. . Fixes VELOCITY-654. Thanks to Byron Foster. nbubna
          Removed redundant error message in ASTReference. . Fixes VELOCITY-653. Thanks to Byron Foster. nbubna
          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 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 Bye
          Fix NPE when null value is passed to array/vararg method. . Fixes VELOCITY-649. Thanks to Byron Foster. nbubna
          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
          Update Finnish and Spanish User Guide sections on division operation. . Fixes VELOCITY-352. Thanks to Gonzalo Diethelm, Joni Salonen. nbubna
          Fix classpath for XMLApp example. . Fixes VELOCITY-641. Thanks to Will Glass-Husain. nbubna
          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
          Remove old Anakia/Texen docs and examples. . Fixes VELOCITY-640. Thanks to Will Glass-Husain. nbubna
          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
          Locked down versions for reporting plugins in Maven POM. . Fixes VELOCITY-638. Thanks to Benjamin Bentmann. nbubna
          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 Bye
          Fix User Guide's Table of Contents anchor links. . Fixes VELOCITY-632. Thanks to Sebb. nbubna
          Fix parser bug that prevented references from immediately preceding #set directives. . Fixes VELOCITY-631. Thanks to Byron Foster. nbubna
          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 line numbers in string literals. . Fixes VELOCITY-629. Thanks to Byron Foster. nbubna
          Fix line number for exceptions with body of #foreach directive. . Fixes VELOCITY-627. Thanks to Byron Foster. nbubna
          Log full macro stack when a RuntimeException occurs in a template. . Fixes VELOCITY-626. Thanks to Byron Foster. nbubna
          Format template and line/column numbers consistently in error and log messages. . Fixes VELOCITY-622. Thanks to Byron Foster. nbubna
          Don't override pre-configured log levels for JdkLogChute or Log4JLogChute. . Fixes VELOCITY-624. Thanks to Byron Foster. nbubna
          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
          Inlude Maven Ant tasks jar in downloads and add support for downloading from Maven2 repos. . Fixes VELOCITY-554. Thanks to Adrian Tarau. nbubna
          Fix problem with single backslash in interpolated (double-quoted) strings. . Fixes VELOCITY-585. Thanks to Jon Seymour. nbubna
          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 Bye
          Uberspectors chaining . Fixes VELOCITY-588. Thanks to Vincent Massol, Sergiu Dumitriu. cbrisson
          Add ability to set a connection timeout for URLResourceLoader. . Fixes VELOCITY-585. Thanks to Tim White. nbubna
          Make it easier to override ResourceFactory.getResource(...) in ResourceManagerImpl. . Fixes VELOCITY-227. Thanks to Charles Morehead. nbubna
          Fix BooleanPropertyExecutor to recognize "public Boolean isFoo" properties. . Fixes VELOCITY-544. Thanks to Adam Bishop, Jarkko Viinamaki. nbubna
          Add a separate resourceExists(String name) method to ResourceLoader(s) to improve performance. . Fixes VELOCITY-439. Thanks to Tassos Bassoukos, Henning Schmiedehausen. nbubna
          Fix missing # and $ characters within #literal() directive output. . Fixes VELOCITY-355. Thanks to Geoffrey Lowney, Dan Ertman. nbubna
          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 #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 #break directive to exit #foreach loops early. . Fixes VELOCITY-612. Thanks to Jarkko Viinamaki. nbubna
          Fixed major performance issues with Velocimacros. . Fixes VELOCITY-607. Thanks to Jarkko Viinamaki. nbubna
          Removed many, various performance bottlenecks and concurrency issues. (Also see VELOCITY-595) . Fixes VELOCITY-606. Thanks to Jarkko Viinamaki. nbubna
          New VTL syntax $velocityHasNext within #foreach loops . Fixes VELOCITY-600. Thanks to Adrian Tarau. nbubna
          Multi-line comments in macros were rendering extra *# when evaluated. . Fixes VELOCITY-580. Thanks to Marnix van Bochove. wglass
          Have VelocityCharStream use an exponential buffer expansion rate. . Fixes VELOCITY-570. Thanks to Ronald Klop. cbrisson
          Prevent exception due to simultaneous rendering of macros. . Fixes VELOCITY-566. Thanks to Etienne Massip. wglass
          New VTL syntax allows arrays to be treated like fixed length lists. . Fixes VELOCITY-533. Thanks to Christopher Schultz. nbubna
          Added support for varargs in method calls. . Fixes VELOCITY-534. nbubna
          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
          Users can now include libraries of macros with #parse in a template. . Fixes VELOCITY-362. Thanks to Supun Kamburugamuva. wglass
          Macro libraries can now be selected programatically when merging templates. . Fixes VELOCITY-529. Thanks to Supun Kamburugamuva. wglass
          Catch IllegalArgumentException when invoking method. . Fixes VELOCITY-452. Thanks to Alexey Panchenko. wglass
          Fixed parse error for map definitions ending with a reference. . Fixes VELOCITY-538. wglass
          Add new property velocimacro.max.depth which limits max macro calling depth. . Fixes VELOCITY-297. Thanks to Supun Kamburugamuva. wglass
          Add ability to add directives programmatically . Fixes VELOCITY-547. Thanks to Adam Heath. wglass
          Allow user directives to have no content. . Fixes VELOCITY-548. Thanks to Adam Heath. wglass
          IncludeNotFound event handler was displaying "not found" template. . Fixes VELOCITY-551. Thanks to Michiel Toneman. wglass
          Fix StringResourceLoader to make it possible to use more than one loader per VM. . Fixes VELOCITY-541. nbubna
          Make unicode encoding work in velocity templates. . Fixes VELOCITY-520. Thanks to Stepan Koltsov. nbubna
          Add a ServletLogChute that allows logging through the servlet API. Ported from the Velocity Tools project. . nbubna
          Add a CommonsLogLogChute that allows logging through commons-logging. . nbubna
          Deprecate integrated texen and anakia, factor it out into separate jars. . wglass
          Added new directive #evaluate() to dynamically evaluate VTL. . Fixes VELOCITY-509. wglass

          Release 1.5 - 2007-01-28

          Type Changes Bye
          Fix to SecureUberspector to work properly with #foreach and iterators. . Fixes VELOCITY-516. Thanks to Vincent Massol. wglass
          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 Bye
          New StringResourceLoader can retrieve templates from repository of in-memory Strings. . Fixes VELOCITY-183. Thanks to Eelco Hillenius. henning
          RuntimeInstance.getProperty now returns value set with RuntimeInstance.setProperty, even before initialization. . Fixes VELOCITY-493. Thanks to Claude Brisson. wglass
          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
          MethodInvocationException now contains line, column, template name allowing application to produce more useful error messages. . Fixes VELOCITY-414. Thanks to Matthijs Lambooy. henning
          Fixed race condition in template retrieval that caused macros to fail under simultaneous load. . Fixes VELOCITY-24. henning
          New event handler InvalidReferenceHandler allows application to catch invalid references. Sample implementation collects them in list and optionally throws exception. . Fixes VELOCITY-423. wglass
          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
          Removed Serializable from InternalContextBase, because one of the members is not serializable anyway so this never worked (Found by Findbugs). . Fixes VELOCITY-458. henning
          Add an additional pair of Executors that are smart about Map. . Fixes VELOCITY-449. Thanks to Alexey Panchenko. henning
          Method caching now uses consistent keys. . Fixes VELOCITY-453. Thanks to Alexey Panchenko. wglass
          Change the meaning of localscope for macros to allow access to references from calling context. . Fixes VELOCITY-459. Thanks to Stephen Haberman. wglass
          Add a test for the DataSourceResource Loader. . henning
          Fix a problem in the DataSourceResource Loader, removing a potential security issue with SQL injection. . henning
          Build now creates the MD5 and SHA1 checksums for archives and jars. . henning
          Fix a number of issues reported by running FindBugs on the Velocity source. . henning

          Release 1.5-beta1 - 2006-09-13

          Type Changes Bye
          Stop references from calling object.toString() twice. . Fixes VELOCITY-438. Thanks to Stephen Haberman. wglass
          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. Thanks to . wglass
          When #include was followed by #parse with the same file name, a ClassCastException was thrown. . Fixes VELOCITY-98. Thanks to Michal Chmielewski. wglass
          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
          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
          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
          The Introspector could throw a NPE when a parameter to an overloaded method was null. . Fixes VELOCITY-370. Thanks to Reggie Riser. wglass
          If toString() returned null in a silent reference then "null" was displayed. . Fixes VELOCITY-381. Thanks to Llwellyn Falco and Dan Powell. wglass
          Fixed bug in which empty body for #if (e.g. <code>#if(some expression)#end</code> caused ParseException. . Fixes VELOCITY-359. Thanks to . wglass
          Added javacc task to build.xml simplifying modification process for editing syntax files. . Fixes VELOCITY-222. Thanks to . wglass
          Velocity Engine was throwing NPE when used without a call to init(). Now gives a more meaningful exception message. . Fixes VELOCITY-374. Thanks to . wglass
          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
          Numerous improvements to the documentation. Reorganized table of contents, moved community content to the Wiki, added article on using Velocity in web applications. . Fixes . Thanks to . wglass
          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. Thanks to . wglass
          Velocity would give error when last line of file was a ## comment. . Fixes VELOCITY-272. Thanks to . wglass
          Added method to retrieve application attributes. . Fixes VELOCITY-412. Thanks to Malcolm Edgar. wglass
          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. Thanks to . wglass
          #set now sets references to null when required. For backwards compatibility this must be enabled by setting the configuration key <code>directive.set.null.allowed</code> to true. . Fixes . Thanks to Thomas Veith. wglass
          New optional event handler that escapes all references. Regular expressions can be used to configure which references have HTML, JavaScript, SQL, or XML escaping. . Fixes . Thanks to . wglass
          New optional event handler implementation that forces #parse / #include to stay in same directory as parent template. . Fixes VELOCITY-154. Thanks to . wglass
          New event handler to modify behavior of #parse / #include. . Fixes VELOCITY-260. Thanks to . wglass
          FileResourceLoader now accepts absolute path when configured to accept it. . Fixes VELOCITY-144. Thanks to . wglass
          String containing "##" was treated as unterminated String. . Fixes VELOCITY-126. Thanks to . wglass
          Spruced up Geir's old URLResourceLoader and promoted it from the whiteboard to the main distribution. . Fixes VELTOOLS-55. Thanks to Charles Harvey. nbubna
          Throw Runtime exceptions from nodes up the chain. . Fixes VELOCITY-424. Thanks to Malcom Edgar. henning
          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
          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. Thanks to . nbubna
          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. Thanks to . henning
          ant build now downloads the required dependency jars from ibiblio.org . Fixes . Thanks to . henning
          Unified template name, line and column number reporting for ParserErrorException . Fixes VELOCITY-373. Thanks to Malcolm Edgar. henning
          Dropped the non-functional Velocity compiler. . Fixes . Thanks to . henning
          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 . Fixes . Thanks to . henning
          Contributed a maven build for Velocity . Fixes . Thanks to . henning
          Reworked the ant build to product only two jars: velocity.jar and velocity-dep.jar. . Fixes . Thanks to . henning
          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. . Fixes . Thanks to . henning
          Added support for decimal numbers. . Fixes VELOCITY-242. Thanks to Peter Romianowski. wglass
          MethodInvocationException now consistently thrown (previously was hidden when in parameter to Velocimacro). . Fixes VELOCITY-284. Thanks to Mike Rettig. wglass
          Fixed problem in which foreach loop would fail to call overloaded method. . Fixes VELOCITY-109. Thanks to . wglass
          Removed ERROR level log message "Can't find 'VM_global_library.vm'". . Fixes VELOCITY-86. Thanks to . wglass
          Anakia now generates consistent line endings based on platform. Requires upgrade to JDom 1.0. . Fixes VELOCITY-348. Thanks to . wglass
          Anakia can now be pre-loaded with custom context values from an optional XML file. . Fixes VELOCITY-190. Thanks to Peter Ryan. wglass
          Directives can now be delimited with curly braces, for example #if($condition)something#{else}otherthing#{end}. . Fixes VELOCITY-43. Thanks to . wglass
          Nulls now handled appropriate within #foreach. . Fixes VELOCITY-254. Thanks to Christopher Reck. wglass
          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
          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
          #stop now works properly. . Fixes VELOCITY-218. Thanks to . wglass
          ClasspathResourceLoader now searches ContextClassLoader for template. . Fixes VELOCITY-196. Thanks to Charles Oliver Nutter. wglass
          Removed use of <a s</a> 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. Thanks to . dlr
          New Map literal syntax. . Fixes VELOCITY-152. Thanks to James Taylor. wglass
          Removed the long-deprecated Log4JLogSystem. Never fear, SimpleLog4JLogSystem remains. . Fixes . Thanks to . dlr
          Enhanced the implementation of ResourceCacheImpl using Jakarta Commons Collections LRUMap class. The previous greedy implementation did not set an upper bound for the cache size, meaning that cached resources were never relinquished (a possible memory leak). You can continue to use that behavior by setting the <code>resource.manager.cache.size</code> for your cache to less than 1. . Fixes . Thanks to . dlr
          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. . Fixes . Thanks to Daniel Rall. geirm
          Deprecated org.apache.velocity.tools.VelocityFormatter class in favor of the various format classes in the Velocity Tools library. . Fixes . Thanks to . wglass
          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. . Fixes . Thanks to . dlr
          Fix to BaseTestCase as suggested by Will Glass-Husain to handle line endings . Fixes VELOCITY-185. Thanks to wglass. geirm
          Parameterized cache and mod time control in TexenTask based on patch from Henning. . Fixes . Thanks to henning.
          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
          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
          Fixes problem with single line comment embedded in a multi-line comment. . Fixes VELOCITY-61. Thanks to wglass. geirm
          Change for VELOCITY-221 and partial for VELOCITY-148, allowing newlines in directives. . Fixes VELOCITY-221. Thanks to . geirm
          Change to finish request VELOCITY-148, allowing '+' as a string concat. We'll have to see how the community likes it. . Fixes VELOCITY-148. Thanks to . geirm
          Didn't allow formal reference notation as first arg to foreach. . Fixes VELOCITY-239. Thanks to . geirm
          To make using w/ XML easier allow alternative logical operators 'and', 'or', 'lt', 'gt', 'le', 'ge', 'eq', 'ne', 'not'. . Fixes . Thanks to . geirm
          Allow newlines in strings. . Fixes . Thanks to . geirm
          Tiny fix to VelocityWriter to prevent a NPE if someone passes it a null . Fixes VELOCITY-148. Thanks to . geirm
          Anakia changes to accomodate finalization of JDOM API. In AnakiaJDOMFactory, AnakiaTask, and OutputWrapper . Fixes . Thanks to . geirm
          Added template, line and column info to MIEs thrown by ASTMethod . Fixes . Thanks to . geirm