<?xml version="1.0" encoding="UTF-8"?>

<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.    
-->

<document>
  <properties>
    <title>Changelog</title>
  </properties>

  <body>
    <release version="1.7" date="2010-11-20">
      <action type="fix" dev="cbrisson" issue="VELOCITY-785" due-to="Jarkko Viinamäki">
        Fixed quotes escaping so that doubling single quotes only works when enclosing quotes are single quotes
        (and same behaviour for double quotes)
      </action>

      <action type="add" dev="nbubna">
    Add access to template and directive debugging info via $<scope>.info.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-766">
    LogManager now catches UnsupportedOperationExceptions during LogChute init.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-760" due-to="Jarkko Viinamäki">
    Ensure that DataSourceResourceLoader closes PreparedStatements.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-753" due-to="Matt Ryall">
    Mark optional dependencies as such in OSGi bundle manifest.
      </action>
    </release>

    <release version="1.7-beta1" date="2010-04-10">
      <action type="add" dev="nbubna" issue="VELOCITY-694">
    Add support for OSGi-ready manifests in build/release tasks.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-753">
    When comparing parameter types during method mapping, make Object always less specific than other types.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-759" due-to="Rachid">
    Avoid NPEs in case of bad #foreach config.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-755">
    Use LinkedHashMap to maintain order of VTL-created maps.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-555" due-to="Jarkko Viinamäki">
    Treat \ as non-special in string literals, except when specifying unicode sequences.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-555" due-to="Jarkko Viinamäki">
    Allow escaping of quotes (single or double) within string literals by doubling them ("" or '').
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-758" due-to="Jarkko Viinamäki">
    Give #parse better log/exception messages and give IncludeEventHandler a chance to handle null #parse args.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-754,VELOCITY-729" due-to="Jarkko Viinamäki">
    Fix $.x parsing failures (particularly helpful for jQuery users).
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-744">
    Log Velocimacro additions at debug level, as in pre-1.6 versions.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-742" due-to="Jarkko Viinamäki">
    Add removeDirective(name) and loadDirective(classname) methods to allow runtime changes to the directive set.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-727" due-to="Jarkko Viinamäki">
    Throw an informative VelocityException when #define is given no parameter (instead of an ArrayIndexOutOfBoundsException).
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-728" due-to="Jarkko Viinamäki">
    Throw an informative VelocityException when #parse is given no args (instead of an NPE).
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-731" due-to="Jorgen Rydenius">
    Add directive.if.tostring.nullcheck config switch to allow
    improved performance for those who do not need to check whether
    $foo.toString() returns null when doing #if( $foo ).
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-704">
    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.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-704">
    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:
    &lt;ul&gt;
    &lt;li&gt;A Scope reference can now be automatically made
              available within each content directive:
        &lt;ul&gt;
        &lt;li&gt;$template in Template.merge and #parse content&lt;/li&gt;
        &lt;li&gt;$macro in #macro&lt;/li&gt;
        &lt;li&gt;$foreach in #foreach&lt;/li&gt;
        &lt;li&gt;$evaluate in #evaluate or Velocity.evaluate(...) content&lt;/li&gt;
        &lt;li&gt;$define in #define&lt;/li&gt;
        &lt;li&gt;$&amp;lt;amacro&amp;gt; in #@&amp;lt;amacro&amp;gt;
              (where &amp;lt;amacro&amp;gt; is the name of a macro being called with a body)&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;For performance and compatibility these are all off by
    default, *except* for $foreach. The others may be enabled by setting a velocity property like:
        &lt;br/&gt;&lt;code&gt;macro.provide.scope.control = true&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;When scopes of the same type are nested make the parent Scope available
        through the child (e.g. $foreach.parent or $foreach.topmost).&lt;/li&gt;
    &lt;li&gt;When a Scope reference overrides an existing reference that is not a Scope,
        make it available through the Scope (e.g. $foreach.replaced).&lt;/li&gt;
    &lt;li&gt;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)).&lt;/li&gt;
    &lt;li&gt;Deprecated $velocityCount;
        please use $foreach.count or $foreach.index.&lt;/li&gt;
    &lt;li&gt;Deprecated $velocityHasNext;
        please use $foreach.hasNext, $foreach.first or $foreach.last&lt;/li&gt;
    &lt;li&gt;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 ).&lt;/li&gt;
    &lt;li&gt;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 ).&lt;/li&gt;
    &lt;/ul&gt;
    All of the deprecated features will be removed in Velocity 2.0.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-681">
    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.
      </action>

      <action type="add" dev="byron"  issue="VELOCITY-688">
	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
	proceeded with '$!' as in $!foo.
      </action>
      
      <action type="add" dev="byron"  issue="VELOCITY-673">
	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.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-685" due-to="Jarkko Viinamäki">
        Make velocimacro.arguments.strict=true work with block macros.
      </action>

      <action type="add" dev="byron" issue="VELOCITY-623">
	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.
      </action>
      
      <action type="fix" dev="nbubna" issue="VELOCITY-676" due-to="Jarkko Viinamäki">
        Fix StringIndexOutOfBoundsException caused by #[[##x]]# (line comment on
        same line as end of textblock).
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-675" due-to="Jarkko Viinamäki">
        Fix NPE caused by #@foo (w/o #end) in template.
      </action>

      <action type="add" dev="byron" issue="VELOCITY-668" due-to="Jarkko Viinamäki">
	Minor performance tweaks based on Findbugs findings
      </action>
      
      <action type="fix" dev="byron" issue="VELOCITY-667">
	Pre 1.6 behavior of specifying #macro without parenthesis
	would throw a VelocityException has been restored.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-666" due-to="Jarkko Viinamaki">
        Add support for calling velocimacros with body content by prefixing the macro
        name with @.
        (e.g. #macro( foo )Here is $bodyContent#end #@foo()any valid VTL here#end)
        The $bodyContent reference may be renamed via a velocimacro.body.reference
        setting in your velocity.properties.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-661" due-to="Jarkko Viinamaki">
        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).
      </action>

      <action type="add" dev="byron" issue="VELOCITY-663">
	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.
      </action>
      
      <action type="add" dev="byron" issue="VELOCITY-662">
	Reduce performance bottleneck with the referenceInsert event handler call
      </action>
      
      <action type="add" dev="byron" issue="VELOCITY-656">
	Better error reporting when toString() throw an exception when testing
	an #if conditional. For example #if($foo)
      </action>
      
      <action type="add" dev="byron" issue="VELOCITY-406">
 	  Added bracketed index syntax, $foo[0], or #set($foo[0] = 1)
      </action>
      
      <action type="add" dev="byron" issue="VELOCITY-659">
          Removed java.lang.Exception from throws clause of Velocity
          and VelocityEngine API. Also removed IOException so that all
          method calls use unchecked exceptions.
      </action>

      <action type="add" dev="nbubna">
          Removed obsolete WebMacro conversion tool and experimental Veltag
          (which has been replaced by VelocityViewTag from VelocityTools).
      </action>

    </release>

    <release version="1.6.4" date="2010-05-10">
        <action type="fix" dev="nbubna" issue="VELOCITY-717" due-to="Jarkko Viinamaki">
            Fix bug in #parse that threw an NPE when IncludeEventHandler returned null
            and inline macros are kept local.
        </action>
        <action type="fix" dev="nbubna" issue="VELOCITY-750">
            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+.
        </action>
        <action type="fix" dev="nbubna" issue="VELOCITY-718">
            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.
        </action>
    </release>

    <release version="1.6.3" date="2009-12-16">
        <action type="fix" dev="nbubna" issue="VELOCITY-731" due-to="Jorgen Rydenius">
            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 ).
        </action>
    </release>

    <release version="1.6.2" date="In Subversion">

      <action type="fix" dev="nbubna" issue="VELOCITY-702">
        Fix obscure caching problem in multiple resource loader situations
        where resources may exist in more than one loader and appear and
        disappear from loaders.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-701">
        Fix old regression from 1.4 in supporting methods declared as abstract
        in a public class but implemented in a non-public class.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-693">
        Fix problem with FileResourceLoader's resourceExists() when
        configured w/multiple paths.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-689">
        Fix ClassMap introspection bug introduced in 1.5,
        where public super-interface methods implemented in
        protected or private classes were unreachable.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-681">
        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.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-682">
        Fix loss of inline macros when #evaluate is used.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-554" due-to="Adrian Tarau">
        Fix name of sources jar for maven deployment.
      </action>

      <action type="fix" dev="byron" issue="VELOCITY-667">
         Pre 1.6 behavior of specifying #macro without parenthesis
         would throw a VelocityException has been restored.
      </action>
      
      <action type="add" dev="byron" issue="VELOCITY-656">
     Better error reporting when toString() throw an exception
     when testing an #if conditional. For example #if($foo)
      </action>

      <action type="fix" dev="byron" issue="VELOCITY-658" due-to="Jarkko Viinamäki">
          Fix $velocityHasNext so that it works in nested foreach blocks.
      </action>

      <action type="fix" dev="byron" issue="VELOCITY-645">
          Throw an exception in strict mode when >=, &lt;=, &lt; or >
          comparisons can't be made.
      </action>
      
      <action type="fix" dev="cbrisson" issue="VELOCITY-657">
          Fix $velocityHasNext so it is not always true.
      </action>

    </release>

    <release version="1.6.1" date="2008-12-15">

      <action type="fix" dev="nbubna" issue="VELOCITY-654" due-to="Byron Foster">
          Correct/enhance template name reporting for #include and #parse.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-653" due-to="Byron Foster">
          Removed redundant error message in ASTReference.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-615" due-to="Steve O'Hara">
          Fix limitation in new macro implementation that resisted #set calls
          to change references defined as arguments for the macro.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-651" due-to="Stephan Schmid">
          Fix vararg bugs when calling overloaded methods like get(String,String,Object[])
          and get(String,List). (e.g. in VelocityStruts' MessageTool)
      </action>

    </release>

    <release version="1.6" date="2008-12-01">

      <action type="fix" dev="nbubna" issue="VELOCITY-649" due-to="Byron Foster">
          Fix NPE when null value is passed to array/vararg method.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-644" due-to="Byron Foster">
          Track template name in Node, to get proper template name in the exception
          message when a reference in a macro causes that exception.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-352" due-to="Gonzalo Diethelm, Joni Salonen">
          Update Finnish and Spanish User Guide sections on division operation.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-641" due-to="Will Glass-Husain">
          Fix classpath for XMLApp example.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-617" due-to="Adrian Tarau">
          Fix references to Oro dependency to make it clear that it is
          only necessary for certain reference event handlers.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-640" due-to="Will Glass-Husain">
          Remove old Anakia/Texen docs and examples.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-642" due-to="Ilkka Priha">
          Fix bug in vararg support where an array passed to a vararg method
          was being wrapped in another array.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-638" due-to="Benjamin Bentmann">
          Locked down versions for reporting plugins in Maven POM.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-466" due-to="Adrian Tarau">
          Add Maven-Ant tasks for installing and deploying Maven artifacts, including
          previously missing source and javadoc jars (VELOCITY-554).
      </action>

    </release>

    <release version="1.6-beta2" date="2008-10-26">

      <action type="fix" dev="nbubna" issue="VELOCITY-632" due-to="Sebb">
          Fix User Guide's Table of Contents anchor links.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-631" due-to="Byron Foster">
          Fix parser bug that prevented references from immediately preceding #set directives.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-630" due-to="Byron Foster">
          Revert change made for VELOCITY-285, as it broke pass-by-name nature
          of macro arguments.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-629" due-to="Byron Foster">
          Fix line numbers in string literals.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-627" due-to="Byron Foster">
          Fix line number for exceptions with body of #foreach directive.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-626" due-to="Byron Foster">
          Log full macro stack when a RuntimeException occurs in a template.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-622" due-to="Byron Foster">
          Format template and line/column numbers consistently in error and log messages.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-624" due-to="Byron Foster">
          Don't override pre-configured log levels for JdkLogChute or Log4JLogChute.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-618" due-to="Byron Foster">
          Add optional 'runtime.references.strict' property that has Velocity throw
          exceptions when it encounters undefined references or velocimacros in a template.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-554" due-to="Adrian Tarau">
          Inlude Maven Ant tasks jar in downloads and add support for downloading from Maven2 repos.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-585" due-to="Jon Seymour">
          Fix problem with single backslash in interpolated (double-quoted) strings.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-616" due-to="Alik">
          Fix escaping of bracketed directives (e.g. \#{if}($foo)$bar\#{end}).
      </action>

    </release>

    <release version="1.6-beta1" date="2008-09-22">

      <action type="add" dev="cbrisson" issue="VELOCITY-588" due-to="Vincent Massol, Sergiu Dumitriu">
          Uberspectors chaining
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-585" due-to="Tim White">
          Add ability to set a connection timeout for URLResourceLoader.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-227" due-to="Charles Morehead">
          Make it easier to override ResourceFactory.getResource(...) in ResourceManagerImpl.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-544" due-to="Adam Bishop, Jarkko Viinamaki">
          Fix BooleanPropertyExecutor to recognize "public Boolean isFoo" properties.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-439" due-to="Tassos Bassoukos, Henning Schmiedehausen">
          Add a separate resourceExists(String name) method to ResourceLoader(s) to improve performance.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-355" due-to="Geoffrey Lowney, Dan Ertman">
          Fix missing # and $ characters within #literal() directive output.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-102" due-to="Juozas Baliuka, Adrian Tarau, Jim Seach">
          Add support for static utility classes: context.put("math", Math.class) -> $math.sin(0)
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-174" due-to="Andrew Tetlaw">
          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!)
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-612" due-to="Jarkko Viinamaki">
          Add #break directive to exit #foreach loops early.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-607" due-to="Jarkko Viinamaki">
          Fixed major performance issues with Velocimacros.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-606" due-to="Jarkko Viinamaki">
          Removed many, various performance bottlenecks and concurrency issues. (Also see VELOCITY-595)
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-600" due-to="Adrian Tarau">
          New VTL syntax $velocityHasNext within #foreach loops
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-580" due-to="Marnix van Bochove">
          Multi-line comments in macros were rendering extra *# when evaluated.
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-570" due-to="Ronald Klop">
          Have VelocityCharStream use an exponential buffer expansion rate.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-566" due-to="Etienne Massip">
          Prevent exception due to simultaneous rendering of macros.  
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-533" due-to="Christopher Schultz">
          New VTL syntax allows arrays to be treated like fixed length lists.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-534">
          Added support for varargs in method calls.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-536" due-to="Lei Gu, Dima Tkach">
          Prevent NPE when template is parsed simultaneously by multiple users.  (may apply only to macros).  
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-362" due-to="Supun Kamburugamuva">
          Users can now include libraries of macros with #parse in a template.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-529" due-to="Supun Kamburugamuva">
          Macro libraries can now be selected programatically when merging templates.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-452" due-to="Alexey Panchenko">
          Catch IllegalArgumentException when invoking method.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-538">
          Fixed parse error for map definitions ending with a reference.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-297" due-to="Supun Kamburugamuva">
          Add new property velocimacro.max.depth which limits max macro calling depth.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-547" due-to="Adam Heath">
          Add ability to add directives programmatically
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-548" due-to="Adam Heath">
          Allow user directives to have no content.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-551" due-to="Michiel Toneman">
          IncludeNotFound event handler was displaying "not found" template.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-541">
        Fix StringResourceLoader to make it possible to use more than one loader per VM.
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-520" due-to="Stepan Koltsov">
        Make unicode encoding work in velocity templates.
      </action>

      <action type="add" dev="nbubna">
        Add a ServletLogChute that allows logging through the servlet API. Ported from the
        Velocity Tools project.
      </action>

      <action type="add" dev="nbubna">
        Add a CommonsLogLogChute that allows logging through commons-logging.
      </action>

      <action type="update" dev="wglass">
        Deprecate integrated texen and anakia, factor it out into separate jars.
      </action>
 
      <action type="add" dev="wglass" issue="VELOCITY-509">
        Added new directive #evaluate() to dynamically evaluate VTL.
      </action>
    </release>

    <release version="1.5" date="2007-01-28">
      <action type="fix" dev="wglass" issue="VELOCITY-516" due-to="Vincent Massol">
        Fix to SecureUberspector to work properly with #foreach and iterators.
      </action>

      <action type="add" dev="henning" issue="VELOCITY-191" due-to="Aki Nieminen">
        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.
      </action>

    </release>
    
    <release version="1.5-beta2" date="2006-11-24">

      <action type="add" dev="henning" issue="VELOCITY-183" due-to="Eelco Hillenius">
        New StringResourceLoader can retrieve templates from repository of in-memory Strings.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-493" due-to="Claude Brisson">
    RuntimeInstance.getProperty now returns value set with RuntimeInstance.setProperty,
    even before initialization.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-435">
    When macros have incorrect number of arguments, if property
    "velocimacro.arguments.strict" is set to true a ParseErrorException
    will be thrown.
      </action>

      <action type="add" dev="henning" issue="VELOCITY-414" due-to="Matthijs Lambooy">
    MethodInvocationException now contains line, column, template name
    allowing application to produce more useful error messages.
      </action>

      <action type="fix" dev="henning" issue="VELOCITY-24">
    Fixed race condition in template retrieval that caused macros to
    fail under simultaneous load.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-423">
    New event handler InvalidReferenceHandler allows application
    to catch invalid references.  Sample implementation collects
    them in list and optionally throws exception.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-179">
          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.
      </action>

      <action type="fix" dev="henning" issue="VELOCITY-458">
    Removed Serializable from InternalContextBase, because one of the members is not serializable anyway so this never worked (Found by Findbugs).
      </action>

      <action type="fix" dev="henning" issue="VELOCITY-449" due-to="Alexey Panchenko">
    Add an additional pair of Executors that are smart about Map. 
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-453" due-to="Alexey Panchenko">
      Method caching now uses consistent keys.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-459" due-to="Stephen Haberman">
    Change the meaning of localscope for macros to allow access to references from 
    calling context.
      </action>

      <action type="add" dev="henning">
               Add a test for the DataSourceResource Loader.
      </action>

      <action type="add" dev="henning">
               Fix a problem in the DataSourceResource Loader, removing a potential security issue with SQL injection.
      </action>

      <action type="add" dev="henning">
               Build now creates the MD5 and SHA1 checksums for archives and jars.
      </action>

      <action type="fix" dev="henning">
    Fix a number of issues reported by running FindBugs on the Velocity source.
      </action>
    </release>

    <release version="1.5-beta1" date="2006-09-13">
      <action type="fix" dev="wglass" issue="VELOCITY-438" due-to="Stephen Haberman">
    Stop references from calling object.toString() twice.
      </action>

      <action type="update" dev="wglass" issue="VELOCITY-429" due-to="">
    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.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-98" due-to="Michal Chmielewski">
    When #include was followed by #parse with the same file name, a ClassCastException was thrown.
    </action>

      <action type="add" dev="wglass" issue="VELOCITY-425" due-to="Llewellyn Falco">
        Wrapped exceptions now have Cause property set on JDK 1.4.  (note that Velocity
        continues to run under JDK 1.3).
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-418" due-to="Jason Weinstein">
        When Velocity is initialized, default.properties stream was not being closed.  This
    made it difficult to undeploy webapps on Windows with Velocity unpacked.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-151" due-to="Kirk Wolf">
        Upgraded to latest commons collection, fixing problem with non-recognition
        of configuration file encoding in rare circumstances.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-370" due-to="Reggie Riser">
        The Introspector could throw a NPE when a parameter to an overloaded method was null.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-381" due-to="Llwellyn Falco and Dan Powell">
        If toString() returned null in a silent reference then "null" was displayed.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-359" due-to="">
        Fixed bug in which empty body for #if (e.g. <code>#if(some expression)#end</code>
        caused ParseException.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-222" due-to="">
        Added javacc task to build.xml simplifying modification process
        for editing syntax files.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-374" due-to="">
        Velocity Engine was throwing NPE when used without a call to
        init().  Now gives a more meaningful exception message.
      </action>

      <action type="update" dev="wglass" issue="VELOCITY-404" due-to="Llewellyn Falco">
        Fixed problem with Uberspect Info class being created incorrectly.
        Added template name to Info allowing better error reporting.
      </action>

      <action type="update" dev="wglass" issue="" due-to="">
        Numerous improvements to the documentation.  Reorganized table of
        contents, moved community content to the Wiki, added article on using
        Velocity in web applications.
      </action>

      <action type="update" dev="wglass" issue="VELOCITY-350" due-to="">
        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.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-272" due-to="">
        Velocity would give error when last line of file was a ## comment.
      </action>

      <action type="update" dev="wglass" issue="VELOCITY-412" due-to="Malcolm Edgar">
        Added method to retrieve application attributes.
      </action>

      <action type="update" dev="wglass" issue="VELOCITY-196" due-to="">
        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.
      </action>

      <action type="update" dev="wglass" issue="" due-to="Thomas Veith">
        #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.
      </action>

      <action type="add" dev="wglass" issue="" due-to="">
        New optional event handler that escapes all references.
        Regular expressions can be used to configure which references
        have HTML, JavaScript, SQL, or XML escaping.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-154" due-to="">
        New optional event handler implementation that forces #parse / #include to stay
        in same directory as parent template.
      </action>

      <action type="add" dev="wglass" issue="VELOCITY-260" due-to="">
        New event handler to modify behavior of #parse / #include.
      </action>

      <action type="update" dev="wglass" issue="VELOCITY-144" due-to="">
        FileResourceLoader now accepts absolute path when configured to accept it.
      </action>

      <action type="fix" dev="wglass" issue="VELOCITY-126" due-to="">
        String containing "##" was treated as unterminated String.
      </action>

      <action type="add" dev="nbubna" issue="VELTOOLS-55" due-to="Charles Harvey">
        Spruced up Geir's old URLResourceLoader and promoted it from the whiteboard to
        the main distribution.
      </action>

      <action type="update" dev="henning" issue="VELOCITY-424" due-to="Malcom Edgar">
        Throw Runtime exceptions from nodes up the chain.
      </action>
      <action type="update" dev="henning" issue="VELOCITY-426" due-to="Malcom Edgar">
        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.
      </action>

      <action type="update" dev="nbubna" issue="VELOCITY-403" due-to="">
            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.
        </action>

        <action type="remove" dev="henning" issue="VELOCITY-401" due-to="">
            Removed all J2EE build tasks.  Now automatically detects availability
            of javax.sql.Datasource (in JDK 1.4+) and builds DatasourceResourceLoader
            when allowed.
        </action>

        <action type="add" dev="henning" issue="" due-to="">
            ant build now downloads the required dependency jars from ibiblio.org
        </action>

        <action type="update" dev="henning" issue="VELOCITY-373" due-to="Malcolm Edgar">
            Unified template name, line and column number reporting for ParserErrorException
        </action>

        <action type="remove" dev="henning" issue="" due-to="">
            Dropped the non-functional Velocity compiler.
        </action>

        <action type="update" dev="henning" issue="" due-to="">
            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
        </action>

        <action type="add" dev="henning" issue="" due-to="">
            Contributed a maven build for Velocity
        </action>

        <action type="fix" dev="henning" issue="" due-to="">
            Reworked the ant build to product only two jars: velocity.jar and velocity-dep.jar.
        </action>

        <action type="remove" dev="henning" issue="" due-to="">
            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.
        </action>

        <action type="add" dev="wglass" issue="VELOCITY-242" due-to="Peter Romianowski">
            Added support for decimal numbers.
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-284" due-to="Mike Rettig">
            MethodInvocationException now consistently thrown
        (previously was hidden when in parameter to Velocimacro).
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-109" due-to="">
            Fixed problem in which foreach loop would fail to call overloaded method.
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-86" due-to="">
            Removed ERROR level log message "Can't find 'VM_global_library.vm'".
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-348" due-to="">
            Anakia now generates consistent line endings based on platform.  Requires upgrade to JDom 1.0.
        </action>

        <action type="add" dev="wglass" issue="VELOCITY-190" due-to="Peter Ryan">
            Anakia can now be pre-loaded with custom context values from an optional XML file.
        </action>

        <action type="add" dev="wglass" issue="VELOCITY-43" due-to="">
            Directives can now be delimited with curly braces, for example #if($condition)something#{else}otherthing#{end}.
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-254" due-to="Christopher Reck">
            Nulls now handled appropriate within #foreach.
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-324" due-to="Shinobu Kuwai">
            Upgraded JavaCC to version 3.2, providing JDK 1.5 compatibility.
        (Older version used keyword 'enum' which is reserved in JDK 1.5).
        </action>

        <action type="update" dev="wglass" issue="VELOCITY-267" due-to="Matt Raible ">
            DatasourceResourceLoader now allows injection of Datasource, allowing it to be used in Inversion of Control (IOC) frameworks.
        </action>

        <action type="fix" dev="wglass" issue="VELOCITY-218" due-to="">
            #stop now works properly.
        </action>

        <action type="update" dev="wglass" issue="VELOCITY-196" due-to="Charles Oliver Nutter">
            ClasspathResourceLoader now searches ContextClassLoader for template.
        </action>

        <action type="remove" dev="dlr" issue="VELOCITY-164" due-to="">
            Removed use of <a href="http://jakarta.apache.org/log4j/">Log4J'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().
        </action>

        <action type="add" dev="wglass" issue="VELOCITY-152" due-to="James Taylor">
            New Map literal syntax.
        </action>

        <action type="remove" dev="dlr" issue="" due-to="">
            Removed the long-deprecated Log4JLogSystem.  Never fear,
            SimpleLog4JLogSystem remains.
        </action>

        <action type="update" dev="dlr" issue="" due-to="">
            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.
        </action>

        <action type="update" dev="geirm" issue="" due-to="Daniel Rall">
            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.
        </action>

        <action type="remove" dev="wglass" issue="" due-to="">
            Deprecated org.apache.velocity.tools.VelocityFormatter class in favor
            of the various format classes in the Velocity Tools library.
        </action>

        <action type="remove" dev="dlr" issue="" due-to="">
            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.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-185" due-to="wglass">
            Fix to BaseTestCase as suggested by Will Glass-Husain to handle line endings
        </action>

        <action type="update" dev="" issue="" due-to="henning">
         Parameterized cache and mod time control in TexenTask based on patch from
         Henning.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-150" due-to="wglass">
            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.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-161" due-to="wglass">
            SimplePool now removes elements from pool on a get(). NOTE : Previously, it left the
            reference to the object in the pool.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-61" due-to="wglass">
            Fixes problem with single line comment
            embedded in a multi-line comment.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-221" due-to="">
            Change for VELOCITY-221 and partial for VELOCITY-148, allowing newlines in
            directives.
        </action>

        <action type="update" dev="geirm" issue="VELOCITY-148" due-to="">
            Change to finish request VELOCITY-148, allowing '+' as a string concat. We'll have
            to see how the community likes it.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-239" due-to="">
            Didn't allow formal reference notation as first arg
            to foreach.
        </action>

        <action type="update" dev="geirm" issue="" due-to="">
            To make using w/ XML easier allow alternative logical operators 'and', 'or',
            'lt', 'gt', 'le', 'ge', 'eq', 'ne', 'not'.
        </action>

        <action type="update" dev="geirm" issue="" due-to="">
            Allow newlines in strings.
        </action>

        <action type="fix" dev="geirm" issue="VELOCITY-148" due-to="">
            Tiny fix to VelocityWriter to prevent a NPE if someone passes it a null
        </action>

        <action type="fix" dev="geirm" issue="" due-to="">
            Anakia changes to accomodate finalization of JDOM API.  In AnakiaJDOMFactory,
            AnakiaTask, and OutputWrapper
        </action>

        <action type="update" dev="geirm" issue="" due-to="">
            Added template, line and column info to MIEs thrown by ASTMethod
        </action>

    </release>
  </body>
</document>
