1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 4 Licensed to the Apache Software Foundation (ASF) under one 5 or more contributor license agreements. See the NOTICE file 6 distributed with this work for additional information 7 regarding copyright ownership. The ASF licenses this file 8 to you under the Apache License, Version 2.0 (the 9 "License"); you may not use this file except in compliance 10 with the License. You may obtain a copy of the License at 11 12 http://www.apache.org/licenses/LICENSE-2.0 13 14 Unless required by applicable law or agreed to in writing, 15 software distributed under the License is distributed on an 16 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 KIND, either express or implied. See the License for the 18 specific language governing permissions and limitations 19 under the License. 20 21--> 22<document> 23 <properties> 24 <title>Changelog</title> 25 </properties> 26 27 <body> 28 <release version="2.3" date="2021-02-27"> 29 <action type="fix" dev="cbrisson" issue="VELOCITY-927"> 30 Fix parser bug (newline and space inside an empty inline map definition). 31 </action> 32 <action type="new" dev="cbrisson" issue="VELOCITY-933"> 33 Backported Spring framework Velocity Engine integration classes from Spring 4.x, in the new module <code>spring-velocity-support</code>. 34 </action> 35 <action type="fix" dev="wglass" issue="VELOCITY-931"> 36 Let SecureUberspector block methods on ClassLoader and subclasses. 37 </action> 38 <action type="new" dev="cbrisson" due-to="mgrigorov"> 39 Added Travis CI. 40 </action> 41 <action type="fix" dev="cbrisson" due-to="donnerpeter"> 42 Don't leak classes via Stop.STOP_ALL stack trace. 43 </action> 44 </release> 45 <release version="2.2" date="2020-02-02"> 46 <action type="new" dev="cbrisson"> 47 Deprecated 2.1 flag <code>velocimacro.arguments.preserve_literals</code> in favor of 48 the new <code>valocimacro_enable_bc_mode</code> flag, which will also, like 1.7 does, 49 use global context values as defaults for missing macro arguments which do not have 50 an explicit default value. 51 </action> 52 <action type="fix" dev="cbrisson" issue="VELOCITY-926"> 53 Fixed regression: Macro arguments names cannot collide with external references names 54 </action> 55 <action type="fix" dev="cbrisson" issue="VELOCITY-925"> 56 Fixed macro calls without parenthesis eating the following newline in BC mode 57 </action> 58 <action type="fix" dev="cbrisson" issue="VELOCITY-924"> 59 Fixed bad cache handling for java.lang.Class methods 60 </action> 61 <action type="fix" dev="cbrisson" issue="VELOCITY-923"> 62 Fixed parser regression when || follow a Velocity expression 63 </action> 64 <action type="add" dev="cbrisson"> 65 Added BigInteger and BigDecimal implicit conversions 66 </action> 67 <action type="fix" dev="cbrisson" issue="VELOCITY-919"> 68 Fixed abnormal suppression of zero-width whitespaces 69 </action> 70 <action type="add" dev="cbrisson" issue="VELOCITY-917"> 71 Added an example of how to build a customized parser where the '#', '$', '*' and '@' 72 can be replaced by any character 73 </action> 74 <action type="add" dev="cbrisson" issue="VELOCITY-916"> 75 Added the <code>runtime.log.track_locations</code> debugging flag (disabled by default), which: 76 <ul> 77 <li>display a VTL stack trace on any error</li> 78 <li>Implement template location tracking with slf4j MDC tags: Once activated, an MDC-aware logger will be 79 able to display the <code>file</code>, <code>line</code> and <code>column</code> MDC tags</li> 80 </ul> 81 </action> 82 <action type="add" dev="cbrisson" issue="VELOCITY-915"> 83 Added the following 1.7.x backward compatibility flags: 84 <ul> 85 <li><code>event_handler.invalid_references.quiet</code> - warn on invalid quiet references</li> 86 <li><code>event_handler.invalid_references.null</code> - warn on null references</li> 87 <li><code>event_handler.invalid_references.tested</code> - warn on invalid references tested with <code>#if()</code></li> 88 </ul> 89 Those three flags are false by default, but can be set to true to mimic 1.7.x behavior 90 </action> 91 <action type="fix" dev="cbrisson"> 92 Introspection: favor non-vararg methods on ambiguities as does the Java compiler 93 </action> 94 <action type="fix" dev="cbrisson" issue="VELOCITY-912"> 95 Also allow hyphen in subproperties when the corresponding backward compatibility flag is on 96 </action> 97 </release> 98 <release version="2.1" date="2019-03-15"> 99 <action type="fix" dev="cbrisson" issue="VELOCITY-909"> 100 Reorganization of configuration properties key names, for clarity and consistency, 101 see the <a href="configuration-property-changes-in-2.1.html">table of correspondance</a> 102 </action> 103 <action type="fix" dev="cbrisson"> 104 Rendering of arrays should display their content, as for lists 105 </action> 106 <action type="fix" dev="cbrisson"> 107 Enhance space gobbling ("lines" mode): do not eat ending newline when directive doesn't start after a newline 108 </action> 109 <action type="fix" dev="cbrisson"> 110 Fix unary negate 111 </action> 112 <action type="add" dev="cbrisson" issue="VELOCITY-892"> 113 Deprecate the Class to Class CoversionHandler in favor of a Class to Type TypeConversionHandler, which allows 114 to specity converters towards generic types specializations. The minimum JDK is now 1.8 115 </action> 116 <action type="fix" dev="michaelo" issue="VELOCITY-908"> 117 Rely on Locale.ROOT for lowercase/uppercase operations 118 </action> 119 <action type="add" dev="cbrisson" issue="VELOCITY-904"> 120 Added the <code>velocimacro.preserve.arguments.literals</code> flag (false by default), for backward compatibility. 121 When true, for any macro argument that evaluates to null, the macro will display the provided argument literal representation 122 instead of the literal argument reference 123 </action> 124 <action type="add" dev="cbrisson" issue="VELOCITY-903"> 125 Default block for empty loops: <code>#foreach($i in []) loop block #else empty #end</code> 126 </action> 127 <action type="fix" dev="cbrisson" issue="VELOCITY-888"> 128 Include proper OSGi bundle informations in manifest files 129 </action> 130 <action type="add" dev="cbrisson" issue="VELOCITY-898"> 131 Alternate reference values: <code>${foo|'foo'}</code> evaluates to false whenever boolean evaluation of $foo is false 132 </action> 133 <action type="fix" dev="cbrisson" issue="VELOCITY-889"> 134 Fix parser regression in #macro whitespaces handling 135 </action> 136 <action type="add" dev="cbrisson" issue="VELOCITY-542"> 137 Added a new 'parser.allow_hypen_in_identifiers' boolean property (false per default) to (dis)allow '-' in reference identifiers 138 </action> 139 <action type="fix" dev="cbrisson" issue="VELOCITY-896"> 140 Fix parsing of a terminal hash or dollar sign in sing litteral and template 141 </action> 142 <action type="fix" dev="cbrisson" issue="VELOCITY-895"> 143 Implicit conversion to numbers in integer ranges 144 </action> 145 </release> 146 <release version="2.0" date="2017-08-06"> 147 148 <action type="fix" dev="cbrisson"> 149 Fix DataSourceResourceLoader for UTF-8 correct handling in VARCHAR/CLOB columns, and for connection / statement / result set life cycle 150 </action> 151 152 <action type="add" dev="cbrisson"> 153 Allow expressions inside []: <code>$foo[$bar + 1]</code> 154 </action> 155 156 <action type="add" dev="cbrisson"> 157 New strategy for reference boolean evaluation: 158 <ol> 159 <li>return false for a null object</li> 160 <li>return its value for a Boolean object, or the result of the <code>getAsBoolean()</code> method if it exists.</li> 161 <li>if <code>directive.if.emptycheck</code> is false (true by default), stop here and return true.</li> 162 <li>check for emptiness: 163 <ul> 164 <li>return whether an array is empty.</li> 165 <li>return whether <code>isEmpty()</code> is false (covers String and all Collection classes).</li> 166 <li>return whether <code>length()</code> is zero (covers CharSequence classes other than String).</li> 167 <li>returns whether <code>size()</code> is zero.</li> 168 <li>return whether a Number <b>strictly</b> equals zero.</li> 169 </ul> 170 </li> 171 <li>check for emptiness after explicit conversion methods: 172 <ul> 173 <li>return whether the result of <code>getAsString()</code> is empty (and false for a null result) if it exists.</li> 174 <li>return whether the result of <code>getAsNumber()</code> <b>strictly</b> equals zero (and false for a null result) if it exists.</li> 175 </ul> 176 </li> 177 </ol> 178 </action> 179 180 <action type="add" dev="cbrisson"> 181 Reviewed event handling API: 182 <ul> 183 <li>added a Context argument for all events</li> 184 <li>got rid of the Executor pattern ; event handlers are directly called by the cartridge</li> 185 </ul> 186 </action> 187 188 <action type="add" dev="cbrisson"> 189 Removed references to ExtProperties from the engine configuration API. 190 </action> 191 192 <action type="add" dev="cbrisson"> 193 Default encoding is now UTF-8. 194 </action> 195 196 <action type="add" dev="cbrisson"> 197 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: 198 <ul> 199 <li>directive, and velocity.directive.[directivename]</li> 200 <li>parser</li> 201 <li>loader and loader.[loadername]</li> 202 <li>macro</li> 203 <li>rendering</li> 204 <li>event</li> 205 </ul> 206 Get rid of UberspectLoggable interface. 207 </action> 208 209 <action type="add" dev="cbrisson"> 210 Added unary negate math operator 211 </action> 212 213 <action type="add" dev="cbrisson"> 214 Add a configurable space gobbling feature, to control indentation in the generated code. 215 <br/> 216 Possible values for the 'space.gobbling' configuration key: 217 <ul> 218 <li><code>none</code> : no space gobbling at all</li> 219 <li><code>bc</code> : Velocity 1.x backward compatible space gobbling</li> 220 <li><code>lines</code> (the default) : gobbles whitespaces and endline from lines containing a single VTL directive</li> 221 <li><code>structured</code> : like 'lines', but also fixes indentation in children text blocks</li> 222 </ul> 223 </action> 224 225 <action type="add" dev="cbrisson"> 226 added a new pluggable ConversionHandler class which, by default, converts method arguments as needed between main basic Java data types (boolean, numbers and strings) 227 </action> 228 229 <action type="add" dev="cbrisson"> 230 added a runtime.string.interning option to trigger Java String interning on or off 231 </action> 232 233 <action type="add" dev="cbrisson" issue="VELOCITY-841" due-to="Jarkko Viinamäki"> 234 Applied Jarkko memory-saving patch which frees tokens while parsing. Macros now use a call by sharing convention. 235 </action> 236 237 <action type="fix" dev="cbrisson" issue="VELOCITY-843"> 238 support $array.empty, as for $list.empty 239 </action> 240 241 <action type="fix" dev="cbrisson" issue="VELOCITY-833" due-to="Jarkko Viinamäki"> 242 avoid useless string calculation in ASTStringLiteral 243 </action> 244 245 <action type="add" dev="cbrisson"> 246 nicified AST tree debug output 247 </action> 248 249 <action type="fix" dev="cbrisson" issue="VELOCITY-830"> 250 fix parsing of $obj._method() 251 </action> 252 253 <action type="fix" dev="cbrisson" issue="VELOCITY-827" due-to="Dawid Weiss"> 254 loading default properties should not prepend '/' and should use classloader to get resource stream 255 </action> 256 257 <action type="add" dev="cbrisson" issue="VELOCITY-825"> 258 Allow conversion of method args from String to Enum constant 259 </action> 260 261 <action type="fix" dev="cbrisson" issue="VELOCITY-815" due-to="Oswaldo Hernandez"> 262 Applied performance patch for MapGetExecutor: it's faster to directly use object 263 instance rather than to inspect all public interfaces 264 </action> 265 266 <action type="add" dev="cbrisson" issue="VELOCITY-799"> 267 The new configuration property context.autoreference.key, if present, allows to specify the name 268 of the reference under which the context is accessible in itself 269 </action> 270 271 <action type="add" dev="cbrisson" issue="VELOCITY-746"> 272 MethodExceptionEventHandler now provide template location infos 273 </action> 274 275 <action type="fix" dev="cbrisson" issue="VELOCITY-797" due-to="Jarkko Viinamäki"> 276 Attach macros to their defining template. Also fixes VELOCITY-776. Thanks to Simon Kitching for the multithreading testcase. 277 </action> 278 279 <action type="fix" dev="cbrisson" issue="VELOCITY-820" due-to="Robert Fuller"> 280 have #foreach honnor the Closeable interface on the iterator 281 </action> 282 283 <action type="fix" dev="cbrisson" issue="VELOCITY-804" due-to="Felipe Maschio"> 284 Don't leave 'initializing' to true if a problem occurs during initialization. 285 </action> 286 287 <action type="add" dev="cbrisson" issue="VELOCITY-790"> 288 Remove dependency upon commons-collections-3 (except at compile-time for deprecated methods and classes 289 which are needed for backward compatibility), use our own ExtProperties object. 290 </action> 291 292 <action type="add" dev="cbrisson" issue="VELOCITY-735" due-to="Dishara Wijewardana"> 293 Add a first implementation for the JSR 223 standard scripting interface. 294 </action> 295 296 <action type="fix" dev="cbrisson" issue="VELOCITY-809"> 297 Fix Template default encoding initialization problem. 298 </action> 299 300 <action type="add" dev="cbrisson" issue="VELOCITY-793"> 301 The ResourceLoader API now provides a Reader rather than an InputStream. 302 Also fixes VELOCITY-599. 303 </action> 304 305 <action type="fix" dev="cbrisson" issue="VELOCITY-553"> 306 InvalidReferenceHandler events should not be triggered by quiet references, null values, 307 or by references testing inside #if / #elseif. Thanks to Renato Steiner 308 for his testcase. 309 </action> 310 311 <action type="fix" dev="cbrisson" issue="VELOCITY-266"> 312 Take advantage of the major version jump to enforce String keys 313 in internal Context API 314 </action> 315 316 <action type="fix" dev="sdumitriu" issue="VELOCITY-863" due-to="Mike Kienenberger"> 317 Fix regression: #set<tab>left-paren no longer valid grammar 318 Patch from Mike Kienenberger applied + added test 319 </action> 320 321 <action type="add" dev="cbrisson"> 322 switch to slf4j logging facade 323 </action> 324 325 <action type="fix" dev="cbrisson"> 326 fix parser for '$map{key}' text rendering (StackOverflow 32805217) 327 </action> 328 329 <action type="fix" dev="sdumitriu" issue="VELOCITY-869"> 330 Vulnerability in dependency: commons-collections: 3.2.1 331 </action> 332 333 <action type="fix" dev="sdumitriu" issue="VELOCITY-870"> 334 Exception displayed when trying to loop over an Iterable private class 335 </action> 336 337 <action type="fix" dev="sdumitriu" issue="VELOCITY-871"> 338 #foreach should work over any Iterable class 339 </action> 340 341 <action type="fix" dev="sdumitriu"> 342 Catch exceptions raised during chainable uberspector initialization 343 </action> 344 345 <action type="fix" dev="cbrisson" issue="VELOCITY-542"> 346 Hypen is no more allowed in variable names 347 </action> 348 349 <action type="add" dev="cbrisson" issue="VELOCITY-706"> 350 Method arguments can now be expressions 351 </action> 352 353 <action type="add" dev="cbrisson" issue="VELOCITY-819" due-to="Jarkko Viinamäki"> 354 Parser generation from the .jjt file is now handled by Maven 355 </action> 356 357 <action type="add" dev="cbrisson" issue="VELOCITY-12" due-to="Candid Dauth"> 358 Add a public fields Uberspector 359 </action> 360 361 <action type="add" dev="nbubna" issue="VELOCITY-814" due-to="Darren Cruse"> 362 Support query modification in DataSourceResourceLoader 363 </action> 364 365 <action type="add" dev="nbubna" issue="VELOCITY-813" due-to="Oswaldo Hernandez"> 366 Add clear() to ResourceCache 367 </action> 368 369 <action type="fix" dev="nbubna" issue="VELOCITY-692"> 370 Make #if() return false for empty strings and empty collections 371 </action> 372 373 <action type="add" dev="apetrelli"> 374 Add SLF4J logging option 375 </action> 376 377 <action type="add" dev="apetrelli"> 378 Use Maven 2 as build system 379 </action> 380 381 <action type="fix" dev="cbrisson" issue="VELOCITY-785" due-to="Jarkko Viinamäki"> 382 Fixed quotes escaping so that doubling single quotes only works when enclosing quotes are single quotes 383 (and same behaviour for double quotes) 384 </action> 385 386 <action type="fix" dev="nbubna" issue="VELOCITY-751"> 387 Removed all remaining "throws Exception" clauses and the now useless ExceptionUtils class. 388 </action> 389 390 <action type="add" dev="nbubna" issue="VELOCITY-731"> 391 Remove directive.if.tostring.nullcheck crutch with intent 392 to replace testing of toString() null status with support for 393 toBoolean() (or similar) method on objects being "#if'd". 394 </action> 395 396 <action type="add" dev="nbubna"> 397 Remove directive.set.null.allowed and instead always allow null to be 398 #set to references. This also means removing all NullSetEventHandler 399 code, since it was only in play when nulls were not allowed to be #set. 400 </action> 401 402 <action type="add" dev="nbubna" issue="VELOCITY-704"> 403 Remove features deprecated in 1.7 ($velocityCount, $velocityHasNext, 404 velocimacro.context.localscope, directive.evaluate.context.class and 405 all internal supporting code (ProxyVMContext, EvaluateContext, etc). 406 </action> 407 408 <action type="add" dev="byron" issue="VELOCITY-697"> 409 Add ability to specify default values for macro parameters, e.g.; 410 #macro(foo bar=1) 411 </action> 412 413 <action type="add" dev="byron" issue="VELOCITY-695"> 414 Add ability to place line comments next to macro parameter definitions. 415 </action> 416 417 <action type="add" dev="byron" issue="VELOCITY-690"> 418 Block directives no longer require parenthesis so #@foo #end is now allowed. 419 Also, brackets now work with Block Macros so #{@foo}bar#end works. 420 </action> 421 422 <action type="fix" dev="nbubna"> 423 Removed all deprecations (Anakia, Texen, VelocityServlet, etc.) 424 </action> 425 426 <action type="add" dev="byron" issue="VELOCITY-687"> 427 Changed macro arguments to be pass by value. 428 </action> 429 430 </release> 431 432 <release version="1.7" date="2010-11-29"> 433 <action type="fix" dev="cbrisson" issue="VELOCITY-785" due-to="Jarkko Viinamäki"> 434 Fixed quotes escaping so that doubling single quotes only works when enclosing quotes are single quotes 435 (and same behaviour for double quotes) 436 </action> 437 438 <action type="add" dev="nbubna"> 439 Add access to template and directive debugging info via $/scope/.info. 440 </action> 441 442 <action type="fix" dev="nbubna" issue="VELOCITY-766"> 443 LogManager now catches UnsupportedOperationExceptions during LogChute init. 444 </action> 445 446 <action type="fix" dev="nbubna" issue="VELOCITY-760" due-to="Jarkko Viinamäki"> 447 Ensure that DataSourceResourceLoader closes PreparedStatements. 448 </action> 449 450 <action type="fix" dev="nbubna" issue="VELOCITY-753" due-to="Matt Ryall"> 451 Mark optional dependencies as such in OSGi bundle manifest. 452 </action> 453 </release> 454 455 <release version="1.7-beta1" date="2010-04-10"> 456 <action type="add" dev="nbubna" issue="VELOCITY-694"> 457 Add support for OSGi-ready manifests in build/release tasks. 458 </action> 459 460 <action type="fix" dev="nbubna" issue="VELOCITY-753"> 461 When comparing parameter types during method mapping, make Object always less specific than other types. 462 </action> 463 464 <action type="fix" dev="nbubna" issue="VELOCITY-759" due-to="Rachid"> 465 Avoid NPEs in case of bad #foreach config. 466 </action> 467 468 <action type="add" dev="nbubna" issue="VELOCITY-755"> 469 Use LinkedHashMap to maintain order of VTL-created maps. 470 </action> 471 472 <action type="fix" dev="nbubna" issue="VELOCITY-555" due-to="Jarkko Viinamäki"> 473 Treat \ as non-special in string literals, except when specifying unicode sequences. 474 </action> 475 476 <action type="add" dev="nbubna" issue="VELOCITY-555" due-to="Jarkko Viinamäki"> 477 Allow escaping of quotes (single or double) within string literals by doubling them ("" or ''). 478 </action> 479 480 <action type="fix" dev="nbubna" issue="VELOCITY-758" due-to="Jarkko Viinamäki"> 481 Give #parse better log/exception messages and give IncludeEventHandler a chance to handle null #parse args. 482 </action> 483 484 <action type="fix" dev="nbubna" issue="VELOCITY-754,VELOCITY-729" due-to="Jarkko Viinamäki"> 485 Fix $.x parsing failures (particularly helpful for jQuery users). 486 </action> 487 488 <action type="add" dev="nbubna" issue="VELOCITY-744"> 489 Log Velocimacro additions at debug level, as in pre-1.6 versions. 490 </action> 491 492 <action type="add" dev="nbubna" issue="VELOCITY-742" due-to="Jarkko Viinamäki"> 493 Add removeDirective(name) and loadDirective(classname) methods to allow runtime changes to the directive set. 494 </action> 495 496 <action type="fix" dev="nbubna" issue="VELOCITY-727" due-to="Jarkko Viinamäki"> 497 Throw an informative VelocityException when #define is given no parameter (instead of an ArrayIndexOutOfBoundsException). 498 </action> 499 500 <action type="fix" dev="nbubna" issue="VELOCITY-728" due-to="Jarkko Viinamäki"> 501 Throw an informative VelocityException when #parse is given no args (instead of an NPE). 502 </action> 503 504 <action type="add" dev="nbubna" issue="VELOCITY-704"> 505 Changed #stop to a directive implementation (get it out of the parser) 506 and allow it to accept a message as an argument to be written to the logs 507 for debugging purposes. 508 </action> 509 510 <action type="add" dev="nbubna" issue="VELOCITY-704"> 511 Change the scoping behavior of Velocity, keeping it optional (everything global 512 scoped by default) but now providing an explicit namespace in content-containing 513 directives (like macros, #foreach, #parse, etc.) in which references that should 514 stay local may be kept. This is accompanied by numerous related changes, including: 515 <ul> 516 <li>A Scope reference can now be automatically made 517 available within each content directive: 518 <ul> 519 <li>$template in Template.merge and #parse content<li> 520 <li>$macro in #macro</li> 521 <li>$foreach in #foreach</li> 522 <li>$evaluate in #evaluate or Velocity.evaluate(...) content</li> 523 <li>$define in #define</li> 524 <li>$&lt;amacro&gt; in #@&lt;amacro&gt; 525 (where &lt;amacro&gt; is the name of a macro being called with a body)</li> 526 </ul> 527 </li> 528 <li>For performance and compatibility these are all off by 529 default, *except* for $foreach. The others may be enabled by setting a velocity property like: 530 <br/><code>macro.provide.scope.control = true</code></li> 531 <li>When scopes of the same type are nested make the parent Scope available 532 through the child (e.g. $foreach.parent or $foreach.topmost).</li> 533 <li>When a Scope reference overrides an existing reference that is not a Scope, 534 make it available through the Scope (e.g. $foreach.replaced).</li> 535 <li>Made #break work in any of the above scopes to exit the most immediate one, 536 unless a different scope is provided as an argument 537 (e.g. #break($macro) or #break($foreach.topmost)).</li> 538 <li>Deprecated $velocityCount; 539 please use $foreach.count or $foreach.index.</li> 540 <li>Deprecated $velocityHasNext; 541 please use $foreach.hasNext, $foreach.first or $foreach.last</li> 542 <li>Deprecated velocimacro.context.localscope setting; 543 please get/set local #macro references as members of the provided $macro 544 scope control instead. (e.g. #set( $macro.foo = 'bar' ) and $macro.foo ).</li> 545 <li>Deprecated directive.evaluate.context.class setting; 546 please get/set local #evaluate references as members of the provided $evaluate 547 scope control instead. (e.g. #set( $evaluate.foo = 'bar' ) and $evaluate.foo ).</li> 548 </ul> 549 All of the deprecated features will be removed in Velocity 2.0. 550 </action> 551 552 <action type="add" dev="nbubna" issue="VELOCITY-681"> 553 Calling #set on a macro argument (for which a #set-able reference 554 was passed) will no longer propagate the new value to the original 555 reference, but merely set the value of the macro argument reference. 556 This was an obscure, infrequently used feature and was decided to be 557 more problematic and unpredictable than useful. 558 </action> 559 560 <action type="add" dev="byron" issue="VELOCITY-688"> 561 In strict mode attempts to render references that evaluate to 562 null will throw an exception. In the user wishes to suppress 563 the exception and render nothing then the reference can be 564 preceeded with '$!' as in $!foo. 565 </action> 566 567 <action type="add" dev="byron" issue="VELOCITY-673"> 568 The non default VelocityEngine construtors now do not initialize the runtime 569 system so that properties may be set after construction. Also fixes an 570 Initialization race condition. 571 </action> 572 573 <action type="fix" dev="nbubna" issue="VELOCITY-685" due-to="Jarkko Viinamäki"> 574 Make velocimacro.arguments.strict=true work with block macros. 575 </action> 576 577 <action type="add" dev="byron" issue="VELOCITY-623"> 578 Added a property for changing escape behavior such that putting a forward 579 slash before a reference or macro always escapes the reference or macro and 580 absorbs the forward slash regardless if the reference or macro is defined. 581 </action> 582 583 <action type="fix" dev="nbubna" issue="VELOCITY-676" due-to="Jarkko Viinamäki"> 584 Fix StringIndexOutOfBoundsException caused by #[[##x]]# (line comment on 585 same line as end of textblock). 586 </action> 587 588 <action type="fix" dev="nbubna" issue="VELOCITY-675" due-to="Jarkko Viinamäki"> 589 Fix NPE caused by #@foo (w/o #end) in template. 590 </action> 591 592 <action type="add" dev="byron" issue="VELOCITY-668" due-to="Jarkko Viinamäki"> 593 Minor performance tweaks based on Findbugs findings 594 </action> 595 596 <action type="fix" dev="byron" issue="VELOCITY-667"> 597 Pre 1.6 behavior of specifying #macro without parenthesis 598 would throw a VelocityException has been restored. 599 </action> 600 601 <action type="add" dev="nbubna" issue="VELOCITY-666" due-to="Jarkko Viinamaki"><![CDATA[ 602 Add support for calling velocimacros with body content by prefixing the macro 603 name with @. 604 (e.g. #macro( bold )<strong>$bodyContent</strong>#end #@bold()any valid VTL here#end) 605 The $bodyContent reference may be renamed via a velocimacro.body.reference 606 setting in your velocity.properties. 607 ]]></action> 608 609 <action type="fix" dev="nbubna" issue="VELOCITY-661" due-to="Jarkko Viinamaki"> 610 Added #[[this is included in output but not parsed]]# syntax to replace 611 and deprecate the much more limited #literal directive 612 (which required parse-able content). 613 </action> 614 615 <action type="add" dev="byron" issue="VELOCITY-663"> 616 Re-implement #stop so that it stops template execution and rendering. This 617 Also addresses a performance bottleneck detected in the old implementation. 618 #stop is a general use directive now, and not just for debugging. 619 </action> 620 621 <action type="add" dev="byron" issue="VELOCITY-662"> 622 Reduce performance bottleneck with the referenceInsert event handler call 623 </action> 624 625 <action type="add" dev="byron" issue="VELOCITY-656"> 626 Better error reporting when toString() throw an exception when testing 627 an #if conditional. For example #if($foo) 628 </action> 629 630 <action type="add" dev="byron" issue="VELOCITY-406"> 631 Added bracketed index syntax, $foo[0], or #set($foo[0] = 1) 632 </action> 633 634 <action type="add" dev="byron" issue="VELOCITY-659"> 635 Removed java.lang.Exception from throws clause of Velocity 636 and VelocityEngine API. Also removed IOException so that all 637 method calls use unchecked exceptions. 638 </action> 639 640 <action type="add" dev="nbubna"> 641 Removed obsolete WebMacro conversion tool and experimental Veltag 642 (which has been replaced by VelocityViewTag from VelocityTools). 643 </action> 644 645 </release> 646 647 <release version="1.6.4" date="2010-05-10"> 648 <action type="fix" dev="nbubna" issue="VELOCITY-750"> 649 Fix double-checked locking in RuntimeInstance's optional lazy-init. 650 </action> 651 <action type="fix" dev="nbubna" issue="VELOCITY-718"> 652 Fix 100% CPU loop hang under simultaneous HashMap calls in ClassMap 653 due to classic bug in Sun's implementation. Now uses 654 ConcurrentHashMap when available and Hashtable otherwise. 655 </action> 656 </release> 657 658 <release version="1.6.3" date="2009-12-16"> 659 <action type="fix" dev="nbubna" issue="VELOCITY-731" due-to="Jorgen Rydenius"> 660 Add directive.if.tostring.nullcheck config switch to match 661 past performance for those who do not need to check whether 662 $foo.toString() returns null when doing #if( $foo ). 663 </action> 664 </release> 665 666 <release version="1.6.2" date="2009-03-19"> 667 668 <action type="fix" dev="nbubna" issue="VELOCITY-702"> 669 Fix obscure caching problem in multiple resource loader situations 670 where resources may exist in more than one loader and appear and 671 disappear from loaders. 672 </action> 673 674 <action type="fix" dev="nbubna" issue="VELOCITY-701"> 675 Fix old regression from 1.4 in supporting methods declared as abstract 676 in a public class but implemented in a non-public class. 677 </action> 678 679 <action type="fix" dev="nbubna" issue="VELOCITY-693"> 680 Fix problem with FileResourceLoader's resourceExists() when 681 configured w/multiple paths. 682 </action> 683 684 <action type="fix" dev="nbubna" issue="VELOCITY-689"> 685 Fix ClassMap introspection bug introduced in 1.5, 686 where public super-interface methods implemented in 687 protected or private classes were unreachable. 688 </action> 689 690 <action type="fix" dev="nbubna" issue="VELOCITY-681"> 691 Fix regression in proxying of macro argument #set calls. 692 Note that in 1.7, calling #set on a macro argument (for 693 which a #set-able reference was passed) will not propagate 694 the new value to the original reference, but merely set the 695 value of the macro argument reference. 696 </action> 697 698 <action type="fix" dev="nbubna" issue="VELOCITY-682"> 699 Fix loss of inline macros when #evaluate is used. 700 </action> 701 702 <action type="fix" dev="nbubna" issue="VELOCITY-554" due-to="Adrian Tarau"> 703 Fix name of sources jar for maven deployment. 704 </action> 705 706 <action type="fix" dev="byron" issue="VELOCITY-667"> 707 Pre 1.6 behavior of specifying #macro without parenthesis 708 would throw a VelocityException has been restored. 709 </action> 710 711 <action type="add" dev="byron" issue="VELOCITY-656"> 712 Better error reporting when toString() throw an exception 713 when testing an #if conditional. For example #if($foo) 714 </action> 715 716 <action type="fix" dev="byron" issue="VELOCITY-658" due-to="Jarkko Viinamäki"> 717 Fix $velocityHasNext so that it works in nested foreach blocks. 718 </action> 719 720 <action type="fix" dev="byron" issue="VELOCITY-645"> 721 Throw an exception in strict mode when >=, <=, < or > 722 comparisons can't be made. 723 </action> 724 725 <action type="fix" dev="cbrisson" issue="VELOCITY-657"> 726 Fix $velocityHasNext so it is not always true. 727 </action> 728 729 </release> 730 731 <release version="1.6.1" date="2008-12-15"> 732 733 <action type="fix" dev="nbubna" issue="VELOCITY-654" due-to="Byron Foster"> 734 Correct/enhance template name reporting for #include and #parse. 735 </action> 736 737 <action type="fix" dev="nbubna" issue="VELOCITY-653" due-to="Byron Foster"> 738 Removed redundant error message in ASTReference. 739 </action> 740 741 <action type="fix" dev="nbubna" issue="VELOCITY-615" due-to="Steve O'Hara"> 742 Fix limitation in new macro implementation that resisted #set calls 743 to change references defined as arguments for the macro. 744 </action> 745 746 <action type="fix" dev="nbubna" issue="VELOCITY-651" due-to="Stephan Schmid"> 747 Fix vararg bugs when calling overloaded methods like get(String,String,Object[]) 748 and get(String,List). (e.g. in VelocityStruts' MessageTool) 749 </action> 750 751 </release> 752 753 <release version="1.6" date="2008-12-01"> 754 755 <action type="fix" dev="nbubna" issue="VELOCITY-649" due-to="Byron Foster"> 756 Fix NPE when null value is passed to array/vararg method. 757 </action> 758 759 <action type="fix" dev="nbubna" issue="VELOCITY-644" due-to="Byron Foster"> 760 Track template name in Node, to get proper template name in the exception 761 message when a reference in a macro causes that exception. 762 </action> 763 764 <action type="fix" dev="nbubna" issue="VELOCITY-352" due-to="Gonzalo Diethelm, Joni Salonen"> 765 Update Finnish and Spanish User Guide sections on division operation. 766 </action> 767 768 <action type="fix" dev="nbubna" issue="VELOCITY-641" due-to="Will Glass-Husain"> 769 Fix classpath for XMLApp example. 770 </action> 771 772 <action type="fix" dev="nbubna" issue="VELOCITY-617" due-to="Adrian Tarau"> 773 Fix references to Oro dependency to make it clear that it is 774 only necessary for certain reference event handlers. 775 </action> 776 777 <action type="fix" dev="nbubna" issue="VELOCITY-640" due-to="Will Glass-Husain"> 778 Remove old Anakia/Texen docs and examples. 779 </action> 780 781 <action type="fix" dev="nbubna" issue="VELOCITY-642" due-to="Ilkka Priha"> 782 Fix bug in vararg support where an array passed to a vararg method 783 was being wrapped in another array. 784 </action> 785 786 <action type="fix" dev="nbubna" issue="VELOCITY-638" due-to="Benjamin Bentmann"> 787 Locked down versions for reporting plugins in Maven POM. 788 </action> 789 790 <action type="add" dev="nbubna" issue="VELOCITY-466" due-to="Adrian Tarau"> 791 Add Maven-Ant tasks for installing and deploying Maven artifacts, including 792 previously missing source and javadoc jars (VELOCITY-554). 793 </action> 794 795 </release> 796 797 <release version="1.6-beta2" date="2008-10-26"> 798 799 <action type="fix" dev="nbubna" issue="VELOCITY-632" due-to="Sebb"> 800 Fix User Guide's Table of Contents anchor links. 801 </action> 802 803 <action type="fix" dev="nbubna" issue="VELOCITY-631" due-to="Byron Foster"> 804 Fix parser bug that prevented references from immediately preceding #set directives. 805 </action> 806 807 <action type="fix" dev="nbubna" issue="VELOCITY-630" due-to="Byron Foster"> 808 Revert change made for VELOCITY-285, as it broke pass-by-name nature 809 of macro arguments. 810 </action> 811 812 <action type="fix" dev="nbubna" issue="VELOCITY-629" due-to="Byron Foster"> 813 Fix line numbers in string literals. 814 </action> 815 816 <action type="fix" dev="nbubna" issue="VELOCITY-627" due-to="Byron Foster"> 817 Fix line number for exceptions with body of #foreach directive. 818 </action> 819 820 <action type="add" dev="nbubna" issue="VELOCITY-626" due-to="Byron Foster"> 821 Log full macro stack when a RuntimeException occurs in a template. 822 </action> 823 824 <action type="add" dev="nbubna" issue="VELOCITY-622" due-to="Byron Foster"> 825 Format template and line/column numbers consistently in error and log messages. 826 </action> 827 828 <action type="fix" dev="nbubna" issue="VELOCITY-624" due-to="Byron Foster"> 829 Don't override pre-configured log levels for JdkLogChute or Log4JLogChute. 830 </action> 831 832 <action type="add" dev="nbubna" issue="VELOCITY-618" due-to="Byron Foster"> 833 Add optional 'runtime.references.strict' property that has Velocity throw 834 exceptions when it encounters undefined references or velocimacros in a template. 835 </action> 836 837 <action type="add" dev="nbubna" issue="VELOCITY-554" due-to="Adrian Tarau"> 838 Inlude Maven Ant tasks jar in downloads and add support for downloading from Maven2 repos. 839 </action> 840 841 <action type="fix" dev="nbubna" issue="VELOCITY-585" due-to="Jon Seymour"> 842 Fix problem with single backslash in interpolated (double-quoted) strings. 843 </action> 844 845 <action type="fix" dev="nbubna" issue="VELOCITY-616" due-to="Alik"> 846 Fix escaping of bracketed directives (e.g. \#{if}($foo)$bar\#{end}). 847 </action> 848 849 </release> 850 851 <release version="1.6-beta1" date="2008-09-22"> 852 853 <action type="add" dev="cbrisson" issue="VELOCITY-588" due-to="Vincent Massol, Sergiu Dumitriu"> 854 Uberspectors chaining 855 </action> 856 857 <action type="add" dev="nbubna" issue="VELOCITY-585" due-to="Tim White"> 858 Add ability to set a connection timeout for URLResourceLoader. 859 </action> 860 861 <action type="add" dev="nbubna" issue="VELOCITY-227" due-to="Charles Morehead"> 862 Make it easier to override ResourceFactory.getResource(...) in ResourceManagerImpl. 863 </action> 864 865 <action type="add" dev="nbubna" issue="VELOCITY-544" due-to="Adam Bishop, Jarkko Viinamaki"> 866 Fix BooleanPropertyExecutor to recognize "public Boolean isFoo" properties. 867 </action> 868 869 <action type="add" dev="nbubna" issue="VELOCITY-439" due-to="Tassos Bassoukos, Henning Schmiedehausen"> 870 Add a separate resourceExists(String name) method to ResourceLoader(s) to improve performance. 871 </action> 872 873 <action type="add" dev="nbubna" issue="VELOCITY-355" due-to="Geoffrey Lowney, Dan Ertman"> 874 Fix missing # and $ characters within #literal() directive output. 875 </action> 876 877 <action type="add" dev="nbubna" issue="VELOCITY-102" due-to="Juozas Baliuka, Adrian Tarau, Jim Seach"> 878 Add support for static utility classes: context.put("math", Math.class) -> $math.sin(0) 879 </action> 880 881 <action type="add" dev="nbubna" issue="VELOCITY-174" due-to="Andrew Tetlaw"> 882 Add #define directive set an unrendered block of VTL as a reference. 883 (e.g. #define( $foo )Hello, $bar!#end #set( $bar = 'world') $foo -> Hello, world!) 884 </action> 885 886 <action type="add" dev="nbubna" issue="VELOCITY-612" due-to="Jarkko Viinamaki"> 887 Add #break directive to exit #foreach loops early. 888 </action> 889 890 <action type="add" dev="nbubna" issue="VELOCITY-607" due-to="Jarkko Viinamaki"> 891 Fixed major performance issues with Velocimacros. 892 </action> 893 894 <action type="add" dev="nbubna" issue="VELOCITY-606" due-to="Jarkko Viinamaki"> 895 Removed many, various performance bottlenecks and concurrency issues. (Also see VELOCITY-595) 896 </action> 897 898 <action type="add" dev="nbubna" issue="VELOCITY-600" due-to="Adrian Tarau"> 899 New VTL syntax $velocityHasNext within #foreach loops 900 </action> 901 902 <action type="fix" dev="wglass" issue="VELOCITY-580" due-to="Marnix van Bochove"> 903 Multi-line comments in macros were rendering extra *# when evaluated. 904 </action> 905 906 <action type="fix" dev="cbrisson" issue="VELOCITY-570" due-to="Ronald Klop"> 907 Have VelocityCharStream use an exponential buffer expansion rate. 908 </action> 909 910 <action type="fix" dev="wglass" issue="VELOCITY-566" due-to="Etienne Massip"> 911 Prevent exception due to simultaneous rendering of macros. 912 </action> 913 914 <action type="add" dev="nbubna" issue="VELOCITY-533" due-to="Christopher Schultz"> 915 New VTL syntax allows arrays to be treated like fixed length lists. 916 </action> 917 918 <action type="add" dev="nbubna" issue="VELOCITY-534"> 919 Added support for varargs in method calls. 920 </action> 921 922 <action type="fix" dev="wglass" issue="VELOCITY-536" due-to="Lei Gu, Dima Tkach"> 923 Prevent NPE when template is parsed simultaneously by multiple users. (may apply only to macros). 924 </action> 925 926 <action type="fix" dev="wglass" issue="VELOCITY-362" due-to="Supun Kamburugamuva"> 927 Users can now include libraries of macros with #parse in a template. 928 </action> 929 930 <action type="add" dev="wglass" issue="VELOCITY-529" due-to="Supun Kamburugamuva"> 931 Macro libraries can now be selected programatically when merging templates. 932 </action> 933 934 <action type="fix" dev="wglass" issue="VELOCITY-452" due-to="Alexey Panchenko"> 935 Catch IllegalArgumentException when invoking method. 936 </action> 937 938 <action type="fix" dev="wglass" issue="VELOCITY-538"> 939 Fixed parse error for map definitions ending with a reference. 940 </action> 941 942 <action type="add" dev="wglass" issue="VELOCITY-297" due-to="Supun Kamburugamuva"> 943 Add new property velocimacro.max.depth which limits max macro calling depth. 944 </action> 945 946 <action type="add" dev="wglass" issue="VELOCITY-547" due-to="Adam Heath"> 947 Add ability to add directives programmatically 948 </action> 949 950 <action type="fix" dev="wglass" issue="VELOCITY-548" due-to="Adam Heath"> 951 Allow user directives to have no content. 952 </action> 953 954 <action type="fix" dev="wglass" issue="VELOCITY-551" due-to="Michiel Toneman"> 955 IncludeNotFound event handler was displaying "not found" template. 956 </action> 957 958 <action type="fix" dev="nbubna" issue="VELOCITY-541"> 959 Fix StringResourceLoader to make it possible to use more than one loader per VM. 960 </action> 961 962 <action type="fix" dev="nbubna" issue="VELOCITY-520" due-to="Stepan Koltsov"> 963 Make unicode encoding work in velocity templates. 964 </action> 965 966 <action type="add" dev="nbubna"> 967 Add a ServletLogChute that allows logging through the servlet API. Ported from the 968 Velocity Tools project. 969 </action> 970 971 <action type="add" dev="nbubna"> 972 Add a CommonsLogLogChute that allows logging through commons-logging. 973 </action> 974 975 <action type="update" dev="wglass"> 976 Deprecate integrated texen and anakia, factor it out into separate jars. 977 </action> 978 979 <action type="add" dev="wglass" issue="VELOCITY-509"> 980 Added new directive #evaluate() to dynamically evaluate VTL. 981 </action> 982 </release> 983 984 <release version="1.5" date="2007-01-28"> 985 <action type="fix" dev="wglass" issue="VELOCITY-516" due-to="Vincent Massol"> 986 Fix to SecureUberspector to work properly with #foreach and iterators. 987 </action> 988 989 <action type="add" dev="henning" issue="VELOCITY-191" due-to="Aki Nieminen"> 990 Make FileResourceLoader unicode aware to allow skipping over BOM markers 991 like those created by Windows Notepad. This is a workaround for a Java 992 bug, where Java itself does not recognize the UTF-8 BOM as defined by 993 the unicode standard. 994 </action> 995 996 </release> 997 998 <release version="1.5-beta2" date="2006-11-24"> 999 1000 <action type="add" dev="henning" issue="VELOCITY-183" due-to="Eelco Hillenius"> 1001 New StringResourceLoader can retrieve templates from repository of in-memory Strings. 1002 </action> 1003 1004 <action type="fix" dev="wglass" issue="VELOCITY-493" due-to="Claude Brisson"> 1005 RuntimeInstance.getProperty now returns value set with RuntimeInstance.setProperty, 1006 even before initialization. 1007 </action> 1008 1009 <action type="add" dev="wglass" issue="VELOCITY-435"> 1010 When macros have incorrect number of arguments, if property 1011 "velocimacro.arguments.strict" is set to true a ParseErrorException 1012 will be thrown. 1013 </action> 1014 1015 <action type="add" dev="henning" issue="VELOCITY-414" due-to="Matthijs Lambooy"> 1016 MethodInvocationException now contains line, column, template name 1017 allowing application to produce more useful error messages. 1018 </action> 1019 1020 <action type="fix" dev="henning" issue="VELOCITY-24"> 1021 Fixed race condition in template retrieval that caused macros to 1022 fail under simultaneous load. 1023 </action> 1024 1025 <action type="add" dev="wglass" issue="VELOCITY-423"> 1026 New event handler InvalidReferenceHandler allows application 1027 to catch invalid references. Sample implementation collects 1028 them in list and optionally throws exception. 1029 </action> 1030 1031 <action type="add" dev="wglass" issue="VELOCITY-179"> 1032 New, optional SecureIntrospector prohibits methods that involve manipulation of classes, classloaders 1033 or reflection objects. Use this introspector to secure Velocity against a risk of 1034 template writers using reflection to perform malicious acts. 1035 </action> 1036 1037 <action type="fix" dev="henning" issue="VELOCITY-458"> 1038 Removed Serializable from InternalContextBase, because one of the members is not serializable anyway so this never worked (Found by Findbugs). 1039 </action> 1040 1041 <action type="fix" dev="henning" issue="VELOCITY-449" due-to="Alexey Panchenko"> 1042 Add an additional pair of Executors that are smart about Map. 1043 </action> 1044 1045 <action type="fix" dev="wglass" issue="VELOCITY-453" due-to="Alexey Panchenko"> 1046 Method caching now uses consistent keys. 1047 </action> 1048 1049 <action type="fix" dev="wglass" issue="VELOCITY-459" due-to="Stephen Haberman"> 1050 Change the meaning of localscope for macros to allow access to references from 1051 calling context. 1052 </action> 1053 1054 <action type="add" dev="henning"> 1055 Add a test for the DataSourceResource Loader. 1056 </action> 1057 1058 <action type="add" dev="henning"> 1059 Fix a problem in the DataSourceResource Loader, removing a potential security issue with SQL injection. 1060 </action> 1061 1062 <action type="add" dev="henning"> 1063 Build now creates the MD5 and SHA1 checksums for archives and jars. 1064 </action> 1065 1066 <action type="fix" dev="henning"> 1067 Fix a number of issues reported by running FindBugs on the Velocity source. 1068 </action> 1069 </release> 1070 1071 <release version="1.5-beta1" date="2006-09-13"> 1072 <action type="fix" dev="wglass" issue="VELOCITY-438" due-to="Stephen Haberman"> 1073 Stop references from calling object.toString() twice. 1074 </action> 1075 1076 <action type="update" dev="wglass" issue="VELOCITY-429" due-to=""> 1077 Pass through all runtime exceptions. Among other benefits, this 1078 allows plugins to throw a runtime exception to signify an application 1079 level problem in the calling application. 1080 </action> 1081 1082 <action type="fix" dev="wglass" issue="VELOCITY-98" due-to="Michal Chmielewski"> 1083 When #include was followed by #parse with the same file name, a ClassCastException was thrown. 1084 </action> 1085 1086 <action type="add" dev="wglass" issue="VELOCITY-425" due-to="Llewellyn Falco"> 1087 Wrapped exceptions now have Cause property set on JDK 1.4. (note that Velocity 1088 continues to run under JDK 1.3). 1089 </action> 1090 1091 <action type="fix" dev="wglass" issue="VELOCITY-418" due-to="Jason Weinstein"> 1092 When Velocity is initialized, default.properties stream was not being closed. This 1093 made it difficult to undeploy webapps on Windows with Velocity unpacked. 1094 </action> 1095 1096 <action type="fix" dev="wglass" issue="VELOCITY-151" due-to="Kirk Wolf"> 1097 Upgraded to latest commons collection, fixing problem with non-recognition 1098 of configuration file encoding in rare circumstances. 1099 </action> 1100 1101 <action type="fix" dev="wglass" issue="VELOCITY-370" due-to="Reggie Riser"> 1102 The Introspector could throw a NPE when a parameter to an overloaded method was null. 1103 </action> 1104 1105 <action type="fix" dev="wglass" issue="VELOCITY-381" due-to="Llwellyn Falco and Dan Powell"> 1106 If toString() returned null in a silent reference then "null" was displayed. 1107 </action> 1108 1109 <action type="fix" dev="wglass" issue="VELOCITY-359" due-to=""><![CDATA[ 1110 Fixed bug in which empty body for #if (e.g. <code>#if(some expression)#end</code> 1111 caused ParseException. 1112 ]]></action> 1113 1114 <action type="add" dev="wglass" issue="VELOCITY-222" due-to=""> 1115 Added javacc task to build.xml simplifying modification process 1116 for editing syntax files. 1117 </action> 1118 1119 <action type="fix" dev="wglass" issue="VELOCITY-374" due-to=""> 1120 Velocity Engine was throwing NPE when used without a call to 1121 init(). Now gives a more meaningful exception message. 1122 </action> 1123 1124 <action type="update" dev="wglass" issue="VELOCITY-404" due-to="Llewellyn Falco"> 1125 Fixed problem with Uberspect Info class being created incorrectly. 1126 Added template name to Info allowing better error reporting. 1127 </action> 1128 1129 <action type="update" dev="wglass" issue="" due-to=""> 1130 Numerous improvements to the documentation. Reorganized table of 1131 contents, moved community content to the Wiki, added article on using 1132 Velocity in web applications. 1133 </action> 1134 1135 <action type="update" dev="wglass" issue="VELOCITY-350" due-to=""> 1136 When testing objects in VTL for equality, if both objects are a number, use 1137 number equality. If both objects are the same class, use the equals method. 1138 New behavior: If objects are different classes, compare the String 1139 representation of both objects rather than logging an error. 1140 </action> 1141 1142 <action type="fix" dev="wglass" issue="VELOCITY-272" due-to=""> 1143 Velocity would give error when last line of file was a ## comment. 1144 </action> 1145 1146 <action type="update" dev="wglass" issue="VELOCITY-412" due-to="Malcolm Edgar"> 1147 Added method to retrieve application attributes. 1148 </action> 1149 1150 <action type="update" dev="wglass" issue="VELOCITY-196" due-to=""> 1151 Velocity now searches in the current thread's context classloader 1152 before the system classloader for all templates loaded with the 1153 ClasspathResourceLoader and for all user-defined ResourceLoaders, 1154 introspectors, event handlers, etc. 1155 A typical use for this is to have Velocity in the application 1156 container classpath while keeping templates and plugins in the 1157 webapp classpath. 1158 </action> 1159 1160 <action type="update" dev="wglass" issue="" due-to="Thomas Veith"><![CDATA[ 1161 #set now sets references to null when required. For backwards 1162 compatibility this must be enabled by setting the configuration key 1163 <code>directive.set.null.allowed</code> to true. 1164 ]]></action> 1165 1166 <action type="add" dev="wglass" issue="" due-to=""> 1167 New optional event handler that escapes all references. 1168 Regular expressions can be used to configure which references 1169 have HTML, JavaScript, SQL, or XML escaping. 1170 </action> 1171 1172 <action type="add" dev="wglass" issue="VELOCITY-154" due-to=""> 1173 New optional event handler implementation that forces #parse / #include to stay 1174 in same directory as parent template. 1175 </action> 1176 1177 <action type="add" dev="wglass" issue="VELOCITY-260" due-to=""> 1178 New event handler to modify behavior of #parse / #include. 1179 </action> 1180 1181 <action type="update" dev="wglass" issue="VELOCITY-144" due-to=""> 1182 FileResourceLoader now accepts absolute path when configured to accept it. 1183 </action> 1184 1185 <action type="fix" dev="wglass" issue="VELOCITY-126" due-to=""> 1186 String containing "##" was treated as unterminated String. 1187 </action> 1188 1189 <action type="add" dev="nbubna" issue="VELTOOLS-55" due-to="Charles Harvey"> 1190 Spruced up Geir's old URLResourceLoader and promoted it from the whiteboard to 1191 the main distribution. 1192 </action> 1193 1194 <action type="update" dev="henning" issue="VELOCITY-424" due-to="Malcom Edgar"> 1195 Throw Runtime exceptions from nodes up the chain. 1196 </action> 1197 <action type="update" dev="henning" issue="VELOCITY-426" due-to="Malcom Edgar"> 1198 Revert the split between org.apache.velocity.runtime.parser.node.Node and 1199 org.apache.velocity.runtime.parser.Node. The parser now only uses ...parser.node.Node 1200 because this change broke custom directives. 1201 </action> 1202 1203 <action type="update" dev="nbubna" issue="VELOCITY-403" due-to=""> 1204 Made a lot of internal logging upgrades including: Deprecated LogSystem interface 1205 and replaced it (and all its implementations) with a new LogChute interface and implementations, 1206 added getLog() to RuntimeServices (and all its friends) to improve on and replace its now deprecated 1207 logging methods, added a JdkLogChute as a 3rd default option for those using JDK 1.4+, and added a 1208 StandardOutLogChute as final resort if other LogChute inits fail. See JIRA issues VELOCITY-403, VELOCITY-166, 1209 VELOCITY-403,VELOCITY-166,VELOCITY-78, VELOCITY-157, VELOCITY-159, VELOCITY-193. 1210 </action> 1211 1212 <action type="remove" dev="henning" issue="VELOCITY-401" due-to=""> 1213 Removed all J2EE build tasks. Now automatically detects availability 1214 of javax.sql.Datasource (in JDK 1.4+) and builds DatasourceResourceLoader 1215 when allowed. 1216 </action> 1217 1218 <action type="add" dev="henning" issue="" due-to=""> 1219 ant build now downloads the required dependency jars from ibiblio.org 1220 </action> 1221 1222 <action type="update" dev="henning" issue="VELOCITY-373" due-to="Malcolm Edgar"> 1223 Unified template name, line and column number reporting for ParserErrorException 1224 </action> 1225 1226 <action type="remove" dev="henning" issue="" due-to=""> 1227 Dropped the non-functional Velocity compiler. 1228 </action> 1229 1230 <action type="update" dev="henning" issue="" due-to=""> 1231 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 1232 </action> 1233 1234 <action type="add" dev="henning" issue="" due-to=""> 1235 Contributed a maven build for Velocity 1236 </action> 1237 1238 <action type="fix" dev="henning" issue="" due-to=""> 1239 Reworked the ant build to product only two jars: velocity.jar and velocity-dep.jar. 1240 </action> 1241 1242 <action type="remove" dev="henning" issue="" due-to=""> 1243 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 1244 it was finally removed in 1.5. 1245 </action> 1246 1247 <action type="add" dev="wglass" issue="VELOCITY-242" due-to="Peter Romianowski"> 1248 Added support for decimal numbers. 1249 </action> 1250 1251 <action type="fix" dev="wglass" issue="VELOCITY-284" due-to="Mike Rettig"> 1252 MethodInvocationException now consistently thrown 1253 (previously was hidden when in parameter to Velocimacro). 1254 </action> 1255 1256 <action type="fix" dev="wglass" issue="VELOCITY-109" due-to=""> 1257 Fixed problem in which foreach loop would fail to call overloaded method. 1258 </action> 1259 1260 <action type="fix" dev="wglass" issue="VELOCITY-86" due-to=""> 1261 Removed ERROR level log message "Can't find 'VM_global_library.vm'". 1262 </action> 1263 1264 <action type="fix" dev="wglass" issue="VELOCITY-348" due-to=""> 1265 Anakia now generates consistent line endings based on platform. Requires upgrade to JDom 1.0. 1266 </action> 1267 1268 <action type="add" dev="wglass" issue="VELOCITY-190" due-to="Peter Ryan"> 1269 Anakia can now be pre-loaded with custom context values from an optional XML file. 1270 </action> 1271 1272 <action type="add" dev="wglass" issue="VELOCITY-43" due-to=""> 1273 Directives can now be delimited with curly braces, for example #if($condition)something#{else}otherthing#{end}. 1274 </action> 1275 1276 <action type="fix" dev="wglass" issue="VELOCITY-254" due-to="Christopher Reck"> 1277 Nulls now handled appropriate within #foreach. 1278 </action> 1279 1280 <action type="fix" dev="wglass" issue="VELOCITY-324" due-to="Shinobu Kuwai"> 1281 Upgraded JavaCC to version 3.2, providing JDK 1.5 compatibility. 1282 (Older version used keyword 'enum' which is reserved in JDK 1.5). 1283 </action> 1284 1285 <action type="update" dev="wglass" issue="VELOCITY-267" due-to="Matt Raible "> 1286 DatasourceResourceLoader now allows injection of Datasource, allowing it to be used in Inversion of Control (IOC) frameworks. 1287 </action> 1288 1289 <action type="fix" dev="wglass" issue="VELOCITY-218" due-to=""> 1290 #stop now works properly. 1291 </action> 1292 1293 <action type="update" dev="wglass" issue="VELOCITY-196" due-to="Charles Oliver Nutter"> 1294 ClasspathResourceLoader now searches ContextClassLoader for template. 1295 </action> 1296 1297 <action type="remove" dev="dlr" issue="VELOCITY-164" due-to=""><![CDATA[ 1298 Removed use of <a href="http://jakarta.apache.org/log4j/">Log4J's</a> 1299 deprecated Category and Priority classes in favor of the corresponding 1300 and supported Logger and Level. To update, replace necessary 1301 references, and Category.getInstance() with Logger.getLogger(). 1302 ]]></action> 1303 1304 <action type="add" dev="wglass" issue="VELOCITY-152" due-to="James Taylor"> 1305 New Map literal syntax. 1306 </action> 1307 1308 <action type="remove" dev="dlr" issue="" due-to=""> 1309 Removed the long-deprecated Log4JLogSystem. Never fear, 1310 SimpleLog4JLogSystem remains. 1311 </action> 1312 1313 <action type="update" dev="dlr" issue="" due-to=""><![CDATA[ 1314 Enhanced the implementation of ResourceCacheImpl using Jakarta Commons 1315 Collections LRUMap class. The previous greedy implementation did not 1316 set an upper bound for the cache size, meaning that cached resources 1317 were never relinquished (a possible memory leak). You can continue to 1318 use that behavior by setting the 1319 <code>resource.manager.cache.size</code> for your cache to less than 1320 1. 1321 ]]></action> 1322 1323 <action type="update" dev="geirm" issue="" due-to="Daniel Rall"> 1324 Took dan's modified SimpleLog4jLogSystem, and renamed Log4JLogSystem, and 1325 put back old version of SimpleLog4JLogSystem, as deprecated. That way 1326 we can move forward with an up-to-date version that uses Logger, and 1327 for one release, be backwards compatile for the Category-using log4j 1328 crowd. 1329 </action> 1330 1331 <action type="remove" dev="wglass" issue="" due-to=""> 1332 Deprecated org.apache.velocity.tools.VelocityFormatter class in favor 1333 of the various format classes in the Velocity Tools library. 1334 </action> 1335 1336 <action type="remove" dev="dlr" issue="" due-to=""> 1337 Deprecated the org.apache.velocity.servlet.VelocityServlet class in 1338 favor of org.apache.velocity.tools.view.servlet.VelocityViewServlet 1339 from the Velocity Tools library. Servlet interaction is more a core 1340 competency of the Velocity Tools package than of Velocity's 1341 core. 1342 </action> 1343 1344 <action type="fix" dev="geirm" issue="VELOCITY-185" due-to="wglass"> 1345 Fix to BaseTestCase as suggested by Will Glass-Husain to handle line endings 1346 </action> 1347 1348 <action type="update" dev="" issue="" due-to="henning"> 1349 Parameterized cache and mod time control in TexenTask based on patch from 1350 Henning. 1351 </action> 1352 1353 <action type="fix" dev="geirm" issue="VELOCITY-150" due-to="wglass"> 1354 Fix to DatasourceResourceLoader - stop using the old Runtime singleton as 1355 would leak a little memory for each instance of VelocityEngine created. 1356 Hunted down by Will Glass-Husain. 1357 </action> 1358 1359 <action type="fix" dev="geirm" issue="VELOCITY-161" due-to="wglass"> 1360 SimplePool now removes elements from pool on a get(). NOTE : Previously, it left the 1361 reference to the object in the pool. 1362 </action> 1363 1364 <action type="fix" dev="geirm" issue="VELOCITY-61" due-to="wglass"> 1365 Fixes problem with single line comment 1366 embedded in a multi-line comment. 1367 </action> 1368 1369 <action type="fix" dev="geirm" issue="VELOCITY-221" due-to=""> 1370 Change for VELOCITY-221 and partial for VELOCITY-148, allowing newlines in 1371 directives. 1372 </action> 1373 1374 <action type="update" dev="geirm" issue="VELOCITY-148" due-to=""> 1375 Change to finish request VELOCITY-148, allowing '+' as a string concat. We'll have 1376 to see how the community likes it. 1377 </action> 1378 1379 <action type="fix" dev="geirm" issue="VELOCITY-239" due-to=""> 1380 Didn't allow formal reference notation as first arg 1381 to foreach. 1382 </action> 1383 1384 <action type="update" dev="geirm" issue="" due-to=""> 1385 To make using w/ XML easier allow alternative logical operators 'and', 'or', 1386 'lt', 'gt', 'le', 'ge', 'eq', 'ne', 'not'. 1387 </action> 1388 1389 <action type="update" dev="geirm" issue="" due-to=""> 1390 Allow newlines in strings. 1391 </action> 1392 1393 <action type="fix" dev="geirm" issue="VELOCITY-148" due-to=""> 1394 Tiny fix to VelocityWriter to prevent a NPE if someone passes it a null 1395 </action> 1396 1397 <action type="fix" dev="geirm" issue="" due-to=""> 1398 Anakia changes to accomodate finalization of JDOM API. In AnakiaJDOMFactory, 1399 AnakiaTask, and OutputWrapper 1400 </action> 1401 1402 <action type="update" dev="geirm" issue="" due-to=""> 1403 Added template, line and column info to MIEs thrown by ASTMethod 1404 </action> 1405 1406 </release> 1407 </body> 1408</document> 1409