aboutsummaryrefslogtreecommitdiff
path: root/src/changes/changes.xml
blob: c1407aaa50353a52736b09075d161c7faa52d7f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
<?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="2.3" date="unreleased">
        <action type="fix" dev="cbrisson" issue="VELOCITY-927">
            Fix parser bug (newline and space inside an empty inline map definition).
        </action>        
        <action type="new" dev="cbrisson" issue="VELOCITY-933">
            Backported Spring framework Velocity Engine integration classes from Spring 4.x, in the new module <code>spring-velocity-support</code>.
        </action>        
        <action type="fix" dev="wglass" issue="VELOCITY-931">
            Let SecureUberspector block methods on ClassLoader and subclasses.
        </action>        
        <action type="new" dev="cbrisson" due-to="mgrigorov">
            Added Travis CI.
        </action>        
        <action type="fix" dev="cbrisson" due-to="donnerpeter">
            Don't leak classes via Stop.STOP_ALL stack trace.
        </action>
    </release>
    <release version="2.2" date="2020-02-02">
        <action type="new" dev="cbrisson">
            Deprecated 2.1 flag <code>velocimacro.arguments.preserve_literals</code> in favor of
            the new <code>valocimacro_enable_bc_mode</code> flag, which will also, like 1.7 does,
            use global context values as defaults for missing macro arguments which do not have
            an explicit default value.
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-926">
            Fixed regression: Macro arguments names cannot collide with external references names
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-925">
            Fixed macro calls without parenthesis eating the following newline in BC mode
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-924">
            Fixed bad cache handling for java.lang.Class methods
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-923">
            Fixed parser regression when || follow a Velocity expression
        </action>
        <action type="add" dev="cbrisson">
            Added BigInteger and BigDecimal implicit conversions
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-919">
            Fixed abnormal suppression of zero-width whitespaces
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-917">
            Added an example of how to build a customized parser where the '#', '$', '*' and '@'
            can be replaced by any character
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-916">
            Added the <code>runtime.log.track_locations</code> debugging flag (disabled by default), which:
            <ul>
                <li>display a VTL stack trace on any error</li>
                <li>Implement template location tracking with slf4j MDC tags: Once activated, an MDC-aware logger will be
            able to display the <code>file</code>, <code>line</code> and <code>column</code> MDC tags</li>
            </ul>
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-915">
            Added the following 1.7.x backward compatibility flags:
            <ul>
                <li><code>event_handler.invalid_references.quiet</code> - warn on invalid quiet references</li>
                <li><code>event_handler.invalid_references.null</code> - warn on null references</li>
                <li><code>event_handler.invalid_references.tested</code> - warn on invalid references tested with <code>#if()</code></li>
            </ul>
            Those three flags are false by default, but can be set to true to mimic 1.7.x behavior
        </action>
        <action type="fix" dev="cbrisson">
            Introspection: favor non-vararg methods on ambiguities as does the Java compiler
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-912">
            Also allow hyphen in subproperties when the corresponding backward compatibility flag is on
        </action>
    </release>
    <release version="2.1" date="2019-03-15">
        <action type="fix" dev="cbrisson" issue="VELOCITY-909">
            Reorganization of configuration properties key names, for clarity and consistency,
            see the <a href="configuration-property-changes-in-2.1.html">table of correspondance</a>
        </action>
        <action type="fix" dev="cbrisson">
            Rendering of arrays should display their content, as for lists
        </action>
        <action type="fix" dev="cbrisson">
            Enhance space gobbling ("lines" mode): do not eat ending newline when directive doesn't start after a newline
        </action>
        <action type="fix" dev="cbrisson">
            Fix unary negate
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-892">
            Deprecate the Class to Class CoversionHandler in favor of a Class to Type TypeConversionHandler, which allows
            to specity converters towards generic types specializations. The minimum JDK is now 1.8
        </action>
        <action type="fix" dev="michaelo" issue="VELOCITY-908">
            Rely on Locale.ROOT for lowercase/uppercase operations
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-904">
            Added the <code>velocimacro.preserve.arguments.literals</code> flag (false by default), for backward compatibility.
            When true, for any macro argument that evaluates to null, the macro will display the provided argument literal representation
            instead of the literal argument reference
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-903">
            Default block for empty loops: <code>#foreach($i in []) loop block #else empty #end</code>
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-888">
            Include proper OSGi bundle informations in manifest files
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-898">
            Alternate reference values: <code>${foo|'foo'}</code> evaluates to false whenever boolean evaluation of $foo is false
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-889">
            Fix parser regression in #macro whitespaces handling
        </action>
        <action type="add" dev="cbrisson" issue="VELOCITY-542">
            Added a new 'parser.allow_hypen_in_identifiers' boolean property (false per default) to (dis)allow '-' in reference identifiers
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-896">
            Fix parsing of a terminal hash or dollar sign in sing litteral and template
        </action>
        <action type="fix" dev="cbrisson" issue="VELOCITY-895">
            Implicit conversion to numbers in integer ranges
        </action>
    </release>
    <release version="2.0" date="2017-08-06">

      <action type="fix" dev="cbrisson">
          Fix DataSourceResourceLoader for UTF-8 correct handling in VARCHAR/CLOB columns, and for connection / statement / result set life cycle
      </action>

      <action type="add" dev="cbrisson">
          Allow expressions inside []: <code>$foo[$bar + 1]</code>
      </action>

      <action type="add" dev="cbrisson">
          New strategy for reference boolean evaluation:
          <ol>
              <li>return false for a null object</li>
              <li>return its value for a Boolean object, or the result of the <code>getAsBoolean()</code> method if it exists.</li>
              <li>if <code>directive.if.emptycheck</code> is false (true by default), stop here and return true.</li>
              <li>check for emptiness:
                <ul>
                    <li>return whether an array is empty.</li>
                    <li>return whether <code>isEmpty()</code> is false (covers String and all Collection classes).</li>
                    <li>return whether <code>length()</code> is zero (covers CharSequence classes other than String).</li>
                    <li>returns whether <code>size()</code> is zero.</li>
                    <li>return whether a Number <b>strictly</b> equals zero.</li>
                </ul>
              </li>
              <li>check for emptiness after explicit conversion methods:
                <ul>
                    <li>return whether the result of <code>getAsString()</code> is empty (and false for a null result) if it exists.</li>
                    <li>return whether the result of <code>getAsNumber()</code> <b>strictly</b> equals zero (and false for a null result) if it exists.</li>
                </ul>
              </li>
          </ol>
      </action>

      <action type="add" dev="cbrisson">
        Reviewed event handling API:
        <ul>
          <li>added a Context argument for all events</li>
          <li>got rid of the Executor pattern ; event handlers are directly called by the cartridge</li>
        </ul>
      </action>

      <action type="add" dev="cbrisson">
        Removed references to ExtProperties from the engine configuration API.
      </action>

      <action type="add" dev="cbrisson">
         Default encoding is now UTF-8.
      </action>

      <action type="add" dev="cbrisson">
          Make Velocity use the base logger namespace 'org.apache.velocity' unless specified with runtime.log.name in the configuration, and have the runtime instance log with this base namespace, and other modules log with children namespaces:
          <ul>
              <li>directive, and velocity.directive.[directivename]</li>
              <li>parser</li>
              <li>loader and loader.[loadername]</li>
              <li>macro</li>
              <li>rendering</li>
              <li>event</li>
          </ul>
          Get rid of UberspectLoggable interface.
      </action>

      <action type="add" dev="cbrisson">
	      Added unary negate math operator
      </action>

      <action type="add" dev="cbrisson">
        Add a configurable space gobbling feature, to control indentation in the generated code.
        <br/>
        Possible values for the 'space.gobbling' configuration key:
        <ul>
          <li><code>none</code> : no space gobbling at all</li>
          <li><code>bc</code> : Velocity 1.x backward compatible space gobbling</li>
          <li><code>lines</code> (the default) : gobbles whitespaces and endline from lines containing a single VTL directive</li>
          <li><code>structured</code> : like 'lines', but also fixes indentation in children text blocks</li>
        </ul>
      </action>

      <action type="add" dev="cbrisson">
        added a new pluggable ConversionHandler class which, by default, converts method arguments as needed between main basic Java data types (boolean, numbers and strings)
      </action>

      <action type="add" dev="cbrisson">
        added a runtime.string.interning option to trigger Java String interning on or off
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-841" due-to="Jarkko Viinamäki">
        Applied Jarkko memory-saving patch which frees tokens while parsing. Macros now use a call by sharing convention.
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-843">
        support $array.empty, as for $list.empty
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-833" due-to="Jarkko Viinamäki">
        avoid useless string calculation in ASTStringLiteral
      </action>

      <action type="add" dev="cbrisson">
        nicified AST tree debug output
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-830">
        fix parsing of $obj._method()
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-827" due-to="Dawid Weiss">
        loading default properties should not prepend '/' and should use classloader to get resource stream
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-825">
         Allow conversion of method args from String to Enum constant
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-815" due-to="Oswaldo Hernandez">
        Applied performance patch for MapGetExecutor: it's faster to directly use object
        instance rather than to inspect all public interfaces
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-799">
        The new configuration property context.autoreference.key, if present, allows to specify the name
        of the reference under which the context is accessible in itself
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-746">
        MethodExceptionEventHandler now provide template location infos
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-797" due-to="Jarkko Viinamäki">
        Attach macros to their defining template. Also fixes VELOCITY-776. Thanks to Simon Kitching for the multithreading testcase.
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-820" due-to="Robert Fuller">
        have #foreach honnor the Closeable interface on the iterator
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-804" due-to="Felipe Maschio">
        Don't leave 'initializing' to true if a problem occurs during initialization.
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-790">
        Remove dependency upon commons-collections-3 (except at compile-time for deprecated methods and classes
        which are needed for backward compatibility), use our own ExtProperties object.
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-735" due-to="Dishara Wijewardana">
        Add a first implementation for the JSR 223 standard scripting interface.
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-809">
        Fix Template default encoding initialization problem.
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-793">
        The ResourceLoader API now provides a Reader rather than an InputStream.
        Also fixes VELOCITY-599.
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-553">
        InvalidReferenceHandler events should not be triggered by quiet references, null values,
        or by references testing inside #if / #elseif. Thanks to Renato Steiner
        for his testcase.
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-266">
        Take advantage of the major version jump to enforce String keys
        in internal Context API
      </action>

      <action type="fix" dev="sdumitriu" issue="VELOCITY-863" due-to="Mike Kienenberger">
        Fix regression: #set&lt;tab&gt;left-paren no longer valid grammar
        Patch from Mike Kienenberger applied + added test
      </action>

      <action type="add" dev="cbrisson">
        switch to slf4j logging facade
      </action>

      <action type="fix" dev="cbrisson">
        fix parser for '$map{key}' text rendering (StackOverflow 32805217)
      </action>

      <action type="fix" dev="sdumitriu" issue="VELOCITY-869">
        Vulnerability in dependency: commons-collections: 3.2.1
      </action>

      <action type="fix" dev="sdumitriu" issue="VELOCITY-870">
        Exception displayed when trying to loop over an Iterable private class
      </action>

      <action type="fix" dev="sdumitriu" issue="VELOCITY-871">
        #foreach should work over any Iterable class
      </action>

      <action type="fix" dev="sdumitriu">
        Catch exceptions raised during chainable uberspector initialization
      </action>

      <action type="fix" dev="cbrisson" issue="VELOCITY-542">
        Hypen is no more allowed in variable names
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-706">
        Method arguments can now be expressions
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-819" due-to="Jarkko Viinamäki">
        Parser generation from the .jjt file is now handled by Maven
      </action>

      <action type="add" dev="cbrisson" issue="VELOCITY-12" due-to="Candid Dauth">
        Add a public fields Uberspector
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-814" due-to="Darren Cruse">
        Support query modification in DataSourceResourceLoader
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-813" due-to="Oswaldo Hernandez">
         Add clear() to ResourceCache
      </action>

      <action type="fix" dev="nbubna" issue="VELOCITY-692">
        Make #if() return false for empty strings and empty collections
      </action>

      <action type="add" dev="apetrelli">
        Add SLF4J logging option
      </action>

      <action type="add" dev="apetrelli">
        Use Maven 2 as build system
      </action>

      <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="fix" dev="nbubna" issue="VELOCITY-751">
    Removed all remaining "throws Exception" clauses and the now useless ExceptionUtils class.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-731">
    Remove directive.if.tostring.nullcheck crutch with intent
    to replace testing of toString() null status with support for
    toBoolean() (or similar) method on objects being "#if'd".
      </action>

      <action type="add" dev="nbubna">
    Remove directive.set.null.allowed and instead always allow null to be
    #set to references.  This also means removing all NullSetEventHandler
    code, since it was only in play when nulls were not allowed to be #set.
      </action>

      <action type="add" dev="nbubna" issue="VELOCITY-704">
    Remove features deprecated in 1.7 ($velocityCount, $velocityHasNext,
    velocimacro.context.localscope, directive.evaluate.context.class and
    all internal supporting code (ProxyVMContext, EvaluateContext, etc).
      </action>

        <action type="add" dev="byron" issue="VELOCITY-697">
	  Add ability to specify default values for macro parameters, e.g.;
	  #macro(foo bar=1)
	</action>

        <action type="add" dev="byron" issue="VELOCITY-695">
	  Add ability to place line comments next to macro parameter definitions.
	</action>

        <action type="add" dev="byron" issue="VELOCITY-690">
	  Block directives no longer require parenthesis so #@foo #end is now allowed.
	  Also, brackets now work with Block Macros so #{@foo}bar#end works.
	</action>

        <action type="fix" dev="nbubna">
          Removed all deprecations (Anakia, Texen, VelocityServlet, etc.)
        </action>

        <action type="add" dev="byron" issue="VELOCITY-687">
          Changed macro arguments to be pass by value.
        </action>

    </release>

    <release version="1.7" date="2010-11-29">
      <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="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
	preceeded 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"><![CDATA[
        Add support for calling velocimacros with body content by prefixing the macro
        name with @.
        (e.g. #macro( bold )<strong>$bodyContent</strong>#end #@bold()any valid VTL here#end)
        The $bodyContent reference may be renamed via a velocimacro.body.reference
        setting in your velocity.properties.
      ]]></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-750">
            Fix double-checked locking in RuntimeInstance's optional lazy-init.
        </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="2009-03-19">

      <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=""><![CDATA[
        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"><![CDATA[
        #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=""><![CDATA[
            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=""><![CDATA[
            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>