blob: 87df16e122a70870730192e0b55f01ae67f07c30 [file] [log] [blame]
<!DOCTYPE html>
<!--
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.
-->
<html lang="en">
<head>
<title>Apache Velocity Tools - Upgrading</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta property="og:image" content="https://www.apache.org/images/asf_logo.gif" />
<link rel="stylesheet" type="text/css" href="/css/site.css">
</head>
<body>
<div id="page">
<div id="header">
<div id="logo2"><img src="/tools/devel/images/velocitytools.png"/></div>
<a href="/">
<svg height="60" width="50%" viewBox="20 20 800 110" preserveAspectRatio="xMinYMin">
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1395.619" x2="-4570.1162" y1="697.55487" x1="-5167.0962" gradientUnits="userSpaceOnUse" id="SVGID_1_">
<stop id="stop3521" style="stop-color:#F69923" offset="0" />
<stop id="stop3523" style="stop-color:#F79A23" offset="0.3123" />
<stop id="stop3525" style="stop-color:#E97826" offset="0.8383" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="620.50482" x2="-5326.209" y1="620.50482" x1="-9585.3418" gradientUnits="userSpaceOnUse" id="SVGID_2_">
<stop id="stop3546" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3548" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3550" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3552" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1047.6898" x2="-6533.1782" y1="1047.6898" x1="-9071.207" gradientUnits="userSpaceOnUse" id="SVGID_3_">
<stop id="stop3557" style="stop-color:#282662" offset="0" />
<stop id="stop3559" style="stop-color:#662E8D" offset="9.548390e-02" />
<stop id="stop3561" style="stop-color:#9F2064" 1 offset="0.7882" />
<stop id="stop3563" style="stop-color:#CD2032" offset="0.9487" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="580.81702" x2="-5086.9941" y1="580.81702" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_4_">
<stop id="stop3568" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3570" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3572" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3574" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="638.4408" x2="-6797.2012" y1="638.4408" x1="-9035.5029" gradientUnits="userSpaceOnUse" id="SVGID_5_">
<stop id="stop3579" style="stop-color:#282662" offset="0" />
<stop id="stop3581" style="stop-color:#662E8D" offset="9.548390e-02" />
<stop id="stop3583" style="stop-color:#9F2064" offset="0.7882" />
<stop id="stop3585" style="stop-color:#CD2032" offset="0.9487" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1021.6218" x2="-5086.9941" y1="1021.6218" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_6_">
<stop id="stop3590" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3592" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3594" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3596" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="999.73297" x2="-5351.2017" y1="999.73297" x1="-9610.334" gradientUnits="userSpaceOnUse" id="SVGID_7_">
<stop id="stop3601" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3603" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3605" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3607" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1152.7261" x2="-5086.9941" y1="1152.7261" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_8_">
<stop id="stop3616" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3618" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3620" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3622" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1137.7247" x2="-5086.9941" y1="1137.7247" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_9_">
<stop id="stop3631" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3633" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3635" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3637" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1134.7161" x2="-6011.9995" y1="1134.7161" x1="-6953.4072" gradientUnits="userSpaceOnUse" id="SVGID_10_">
<stop id="stop3646" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3648" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3650" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3652" style="stop-color:#E97826" offset="1" />
</linearGradient>
<g transform="translate(275,-230)" id="g3735">
<path d="m 95.030525,353.34688 c -5.868388,1.89866 -18.455097,2.86966 -35.232972,2.68962 l -7.844759,-17.69411 c 11.922072,0.96277 23.155947,1.27149 33.446456,0.7785 0.806681,-0.0278 1.205437,-0.0597 1.205437,-0.0597 -0.39975,0.0215 -0.805689,0.0382 -1.205437,0.0597 -3.380984,0.11837 -13.97859,0.22097 -32.909158,-1.88263 6.824373,-6.72909 18.288583,-16.31958 28.008861,-23.85834 18.433387,9.69185 21.017957,20.51606 21.017957,20.51606 0,0 5.61321,15.54576 -6.486385,19.4509 z" id="path3527" style="fill:url(#SVGID_1_)" />
<path d="m 3.8322454,303.07135 c 0.059217,-0.0415 0.1120778,-0.0878 0.1712971,-0.12929 l -1.0221478,0.89604 c -0.088131,0.0386 -0.1658908,0.0658 -0.2478563,0.10915 0.3676459,-0.29732 0.7362578,-0.58424 1.098707,-0.8759 z" id="path3529" style="fill:none" />
<path d="m -27.876072,290.63399 c -0.650899,0.45658 -1.281214,0.94828 -1.904317,1.45519 0.623103,-0.50691 1.259608,-0.99386 1.904317,-1.45519 z" id="path3531" style="fill:none" />
<path d="m -128.18492,294.56272 c 0.27819,0.088 0.55639,0.17608 0.82938,0.26978 5.73136,1.8314 11.32321,3.58465 16.79937,5.26839 6.14427,1.88764 12.119072,3.68379 17.941982,5.39228 6.136306,1.80423 12.096924,3.5122 17.888098,5.1287 6.074555,1.69886 11.961044,3.29193 17.65531,4.79537 4.634037,1.22062 9.141965,2.38304 13.528979,3.48159 1.458542,0.36649 2.910894,0.72823 4.350865,1.08046 2.85092,0.70149 5.659501,1.38013 8.402938,2.03773 2.537553,0.60576 5.026574,1.18393 7.479394,1.74394 0.816212,0.19205 1.625242,0.36892 2.435266,0.55621 0.129295,0.0317 0.263817,0.0577 0.393113,0.0893 l -0.868431,0.76291 0.823816,1.77257 c -0.199639,-0.047 -0.398312,-0.0837 -0.603148,-0.12504 -3.709945,-0.80082 -7.434286,-1.63202 -11.17299,-2.49357 -2.160061,-0.49944 -4.326285,-1.00361 -6.493528,-1.51823 -6.008289,-1.42577 -12.02773,-2.90842 -18.046963,-4.44886 -6.083384,-1.55106 -12.155172,-3.16085 -18.201961,-4.8094 -5.94027,-1.61506 -11.850346,-3.27456 -17.722022,-4.95287 -5.860317,-1.67925 -11.671838,-3.38866 -17.421218,-5.10831 -6.00377,-1.79907 -11.9226,-3.61019 -17.74509,-5.43429 -1.31344,-0.40964 -2.62686,-0.81925 -3.9351,-1.23456 -4.69313,-1.47853 -9.30551,-2.95301 -13.84851,-4.42253 l -1.30665,-2.80027 0.97437,-0.85544 c 0.1365,0.0469 0.27298,0.0937 0.4033,0.1358 5.95137,1.97137 11.76945,3.86936 17.45943,5.68831 z" id="path3533" style="fill:none" />
<path d="m -30.254972,292.46861 0,0 c 0.0052,-0.006 0.01127,-0.001 0.01647,-0.007 0,0 -0.0052,0.006 -0.01647,0.007 z" id="path3535" style="fill:none" />
<path d="m -44.667842,285.26517 c -0.973928,0.73986 -1.967656,1.51281 -2.988395,2.30367 -0.0052,0.006 -0.01647,0.007 -0.02166,0.0123 0.500572,-0.40778 0.995948,-0.80989 1.498505,-1.19683 0.50256,-0.38694 1.00094,-0.75776 1.511673,-1.1191 z" id="path3537" style="fill:#be202e" />
<path d="m -44.667842,285.26517 c -0.973928,0.73986 -1.967656,1.51281 -2.988395,2.30367 -0.0052,0.006 -0.01647,0.007 -0.02166,0.0123 0.500572,-0.40778 0.995948,-0.80989 1.498505,-1.19683 0.50256,-0.38694 1.00094,-0.75776 1.511673,-1.1191 z" id="path3539" style="opacity:0.35;fill:#be202e" />
<path d="m -30.2218,292.45544 c 0,0 -0.0052,0.006 -0.01127,10e-4 -0.0052,0.006 -0.01127,9.9e-4 -0.01647,0.007 0.153662,-0.13318 0.314646,-0.25108 0.463195,-0.37852 0.628302,-0.51257 1.264807,-0.99953 1.904289,-1.45521 -0.763241,0.60216 -1.549259,1.20616 -2.339509,1.82623 l 0,0 0,0 z" id="path3541" style="fill:#be202e" />
<path d="m -30.2218,292.45544 c 0,0 -0.0052,0.006 -0.01127,10e-4 -0.0052,0.006 -0.01127,9.9e-4 -0.01647,0.007 0.153662,-0.13318 0.314646,-0.25108 0.463195,-0.37852 0.628302,-0.51257 1.264807,-0.99953 1.904289,-1.45521 -0.763241,0.60216 -1.549259,1.20616 -2.339509,1.82623 l 0,0 0,0 z" id="path3543" style="opacity:0.35;fill:#be202e" />
<path d="m -3.0502818,330.5069 c 6.1572269,1.1827 12.247534,2.26571 18.2471238,3.24041 6.227231,1.01426 12.356561,1.90504 18.357978,2.65895 0.348762,0.0456 0.708911,0.0903 1.063863,0.1407 5.913525,0.73472 11.699134,1.33257 17.339307,1.78976 l 7.844762,17.69411 c -1.160612,-0.0121 -2.333632,-0.0338 -3.529455,-0.0536 -4.497401,-0.0917 -9.271992,-0.26093 -14.266831,-0.51239 -5.629411,-0.28469 -11.556567,-0.6821 -17.699796,-1.1778 -5.67533,-0.46487 -11.549098,-1.02415 -17.5529729,-1.68334 -5.1106845,-0.5626 -10.3308648,-1.18997 -15.622198,-1.90096 -0.197654,-0.0262 -0.3953057,-0.0524 -0.5929873,-0.0786 L -20.52484,326.94198 c 5.866009,1.25856 11.69707,2.45163 17.4745582,3.56492 z" id="path3554" style="fill:url(#SVGID_2_)" />
<path d="m -148.64432,287.87492 c -4.62455,-1.5418 -9.31626,-3.12551 -14.09367,-4.76537 -0.0714,-0.0258 -0.13651,-0.0469 -0.20787,-0.0727 -0.67629,-0.2295 -1.34737,-0.46467 -2.02369,-0.69419 -3.21697,-1.10818 -6.09263,-2.12815 -12.63913,-4.44059 1.0996,-3.6285 -0.41103,-8.38228 -2.49019,-13.37944 3.85283,3.31605 6.24773,7.77315 6.52364,12.94094 11.22895,-13.43253 25.02773,-21.83891 40.65304,-19.66506 1.39603,0.1929 2.79384,0.46445 4.21819,0.83367 -6.03156,-0.16844 -10.5525,1.89547 -15.78323,8.30262 -0.0165,0.007 -0.0384,0.0188 -0.0549,0.0255 0.0165,-0.007 0.0384,-0.0188 0.0549,-0.0255 12.65883,-5.62036 21.02643,-6.89439 31.69203,-5.50534 2.52825,0.32813 5.18536,0.80351 8.06151,1.40845 -16.05366,1.09099 -26.93227,8.28126 -33.83488,19.35554 l -7.46769,6.54422 c -0.87076,-0.28223 -1.73631,-0.57012 -2.60806,-0.86277 z" id="path3565" style="fill:url(#SVGID_3_)" />
<path d="m -127.92557,298.05617 c 5.82769,1.81842 11.74652,3.62955 17.74512,5.43431 5.74415,1.7253 11.554681,3.42428 17.421188,5.10828 5.866507,1.68401 11.775562,3.33306 17.722022,4.95287 6.046789,1.64856 12.123776,3.25267 18.201961,4.8094 6.013043,1.53569 12.038702,3.02311 18.046963,4.44886 2.167243,0.51462 4.333467,1.0188 6.493528,1.51824 3.738705,0.86155 7.463045,1.69274 11.172991,2.49357 0.199636,0.047 0.398312,0.0837 0.603147,0.12503 l 11.0633797,23.68219 c -0.3953333,-0.0524 -0.7854697,-0.11047 -1.1807777,-0.16285 -5.606921,-0.76978 -11.295338,-1.6118 -17.027898,-2.55534 -5.790549,-0.94943 -11.619023,-1.99561 -17.461681,-3.12996 -4.930086,-0.95526 -9.854792,-1.97402 -14.768868,-3.06189 -0.99728,-0.22482 -1.97698,-0.44581 -2.962873,-0.67154 -6.150175,-1.40914 -11.974938,-2.89686 -17.487932,-4.42532 -6.244233,-1.73255 -12.086525,-3.52355 -17.517683,-5.33696 -3.574927,-1.18983 -6.978977,-2.39336 -10.215327,-3.58405 -2.73994,-1.04133 -5.46008,-2.11577 -8.13662,-3.21469 -6.31977,-2.58273 -12.45563,-5.34303 -18.38577,-8.29314 l -11.10848,-23.79411 c 4.54303,1.46954 9.15538,2.94401 13.84853,4.42255 1.30203,0.41054 2.62167,0.82493 3.93508,1.23455 z" id="path3576" style="fill:url(#SVGID_4_)" />
<path d="m -135.39748,315.78421 c -7.2115,-3.62494 -14.10198,-7.55402 -20.5914,-11.85137 -0.2272,-0.15514 -0.45863,-0.29422 -0.68582,-0.44936 2.3312,6.55285 0.24599,17.70369 0.21823,17.65338 -3.57467,-11.87432 -8.27251,-22.40852 -15.98628,-29.36565 -3.27442,2.37386 -5.94744,7.01608 -8.28358,12.96033 -0.41103,-8.38228 1.53485,-12.94527 2.45003,-14.5997 -4.28418,4.11989 -11.70198,6.14259 -19.64656,7.81875 9.09151,-4.3892 15.21177,-8.8767 17.7976,-13.46995 -24.55723,-8.42409 -51.09999,-18.3439 -78.93127,-29.25317 2.33282,-1.41596 4.74343,-1.47765 7.19121,-0.67033 5.0236,1.99314 38.05928,14.98608 83.16344,30.23283 1.28124,0.43321 2.57389,0.86552 3.8727,1.30257 0.36193,0.12335 0.72908,0.24106 1.08481,0.35966 4.73826,1.59047 9.59244,3.19267 14.55737,4.81229 1.13136,0.36642 2.26272,0.73284 3.40026,1.10401 0.0237,0.009 0.0476,0.0172 0.0652,0.021 l 11.11272,23.77804 c -0.25321,-0.12682 -0.52301,-0.24705 -0.7886,-0.38338 z" id="path3587" style="fill:url(#SVGID_5_)" />
<path d="m -20.879529,324.31241 c -0.803833,-0.18253 -1.613855,-0.36983 -2.435266,-0.5562 -2.447621,-0.56569 -4.936644,-1.14385 -7.479421,-1.74397 -2.748608,-0.6519 -5.5458,-1.33146 -8.402911,-2.03771 -1.439971,-0.35222 -2.880933,-0.71488 -4.350864,-1.08045 -4.387015,-1.09855 -8.894942,-2.26097 -13.528979,-3.48159 -5.694267,-1.50344 -11.580756,-3.09652 -17.65531,-4.79538 -5.791175,-1.61649 -11.75182,-3.32448 -17.888098,-5.1287 -5.82291,-1.70849 -11.803902,-3.50939 -17.941982,-5.39227 -5.47616,-1.68374 -11.06801,-3.43699 -16.79937,-5.26839 -0.27821,-0.088 -0.55639,-0.17608 -0.82938,-0.26978 -5.68998,-1.81895 -11.50806,-3.71694 -17.44804,-5.68923 -0.13651,-0.0469 -0.27299,-0.0937 -0.40331,-0.1358 l 7.4677,-6.54423 c -0.099,0.16552 -0.21555,0.32718 -0.31452,0.4927 9.07173,-7.71799 26.60886,-13.7657 42.082402,-14.50031 7.130974,-0.33982 14.689435,0.18964 22.840099,1.56994 6.067741,1.02703 12.461933,2.52695 19.257152,4.49905 5.938834,1.72022 12.180797,3.78914 18.773426,6.22395 -2.953943,1.10323 -5.869407,2.7287 -8.744022,4.78162 -0.499373,0.3604 -1.009112,0.73216 -1.511672,1.1191 -0.502585,0.38691 -1.004151,0.78427 -1.498505,1.19683 l 0,0 0,0 c 0.0052,-0.006 0.01647,-0.007 0.02166,-0.0123 10.741665,-5.44059 21.911677,-5.49972 33.275347,-3.05294 -3.512293,0.90633 -8.725108,2.75774 -13.490013,6.1124 -0.650869,0.45659 -1.281184,0.9483 -1.904287,1.4552 -0.160021,0.1283 -0.314677,0.25106 -0.463195,0.37852 l 0,0 0,0 c 0.0052,-0.006 0.01127,-9.9e-4 0.01647,-0.007 0,0 0.0052,-0.006 0.01127,-9.9e-4 l 0,0 c 3.833524,-1.80927 7.415482,-3.06785 10.971709,-3.81484 0.75953,-0.16062 1.521076,-0.30038 2.285595,-0.40887 1.160272,-0.17169 2.320337,-0.28559 3.490588,-0.35301 0.747698,-0.0441 1.497407,-0.0674 2.255322,-0.065 1.7736055,-1.9e-4 3.5809872,0.11249 5.4459147,0.34666 0.5691898,0.07 1.1394009,0.1504 1.7219926,0.24033 0.8080111,0.16642 1.5932437,0.33468 2.3670894,0.50385 3.4947139,0.7708 6.5151055,1.56378 9.1028098,2.33365 1.2938545,0.38493 2.4717831,0.75813 3.5461715,1.12911 0.427069,0.1444 0.842778,0.28973 1.24088,0.4312 1.189109,0.43009 2.22612,0.83033 3.11722,1.20547 1.333581,0.56035 2.345383,1.05716 3.054216,1.4469 l 0,0 0,0 c -0.484902,0.0914 -1.006187,0.22239 -1.55767,0.39787 -3.810562,1.20862 -9.0630554,4.26613 -12.8155016,7.10372 l 6.8589836,-6.00695 -6.8589836,6.00695 c -0.059219,0.0415 -0.1120802,0.0878 -0.1712972,0.1293 -0.3686395,0.2869 -0.73626,0.58424 -1.1100962,0.87681 0.088156,-0.0386 0.1659184,-0.0658 0.2478563,-0.10915 l -23.4688293,20.55321 c -0.123105,-0.0269 -0.246211,-0.0538 -0.380705,-0.0798 z" id="path3598" style="fill:url(#SVGID_6_)" />
<path d="m 52.489098,337.22784 c -5.221409,-0.58001 -11.072737,-1.32494 -17.582802,-2.29555 -0.337345,-0.0465 -0.687098,-0.10255 -1.030661,-0.15384 -5.631475,-0.8466 -11.74798,-1.84346 -18.359704,-3.03705 -5.7115598,-1.02402 -11.780866,-2.1875 -18.2388704,-3.51423 -5.6261705,-1.15166 -11.5511356,-2.4265 -17.7644676,-3.83584 L 2.9813947,303.8381 c 9.3594193,-4.04821 15.0606363,-4.69376 22.0219053,-4.22681 1.892116,0.15844 3.845172,0.35401 5.836389,0.58854 6.095793,0.72012 12.552647,1.79478 18.766426,3.08853 5.997499,1.25326 11.744739,2.71043 16.714058,4.25614 3.159483,0.98674 6.000949,2.00943 8.377522,3.03258 2.095388,0.90383 4.020884,1.83177 5.804442,2.7763 -9.724453,7.55488 -21.194854,17.14061 -28.013039,23.87446 z" id="path3609" style="fill:url(#SVGID_7_)" />
<path d="m -46.179514,286.38427 c -0.502558,0.38693 -1.004124,0.78429 -1.498506,1.19682 l 0,0 c 0.494382,-0.41253 0.995948,-0.80989 1.498506,-1.19682 z" id="path3611" style="fill:#be202e" />
<path d="m -46.179514,286.38427 c -0.502558,0.38693 -1.004124,0.78429 -1.498506,1.19682 l 0,0 c 0.494382,-0.41253 0.995948,-0.80989 1.498506,-1.19682 z" id="path3613" style="opacity:0.35;fill:#be202e" />
<path d="m -46.179514,286.38427 c -0.502558,0.38693 -1.004124,0.78429 -1.498506,1.19682 l 0,0 c 0.494382,-0.41253 0.995948,-0.80989 1.498506,-1.19682 z" id="path3624" style="fill:url(#SVGID_8_)" />
<path d="m -30.254972,292.46861 c 0.153663,-0.13318 0.314647,-0.25107 0.463193,-0.37852 -0.148463,0.12751 -0.303257,0.25016 -0.463193,0.37852 l 0,0 z" id="path3626" style="fill:#be202e" />
<path d="m -30.254972,292.46861 c 0.153663,-0.13318 0.314647,-0.25107 0.463193,-0.37852 -0.148463,0.12751 -0.303257,0.25016 -0.463193,0.37852 l 0,0 z" id="path3628" style="opacity:0.35;fill:#be202e" />
<path d="m -30.254972,292.46861 c 0.153663,-0.13318 0.314647,-0.25107 0.463193,-0.37852 -0.148463,0.12751 -0.303257,0.25016 -0.463193,0.37852 l 0,0 z" id="path3639" style="fill:url(#SVGID_9_)" />
<path d="m -30.233189,292.45636 c 0,0 0.0052,-0.006 0.01127,-0.001 l 0,0 0,0 0,0 c 0,0 -0.0052,0.006 -0.01127,0.001 z" id="path3641" style="fill:#be202e" />
<path d="m -30.233189,292.45636 c 0,0 0.0052,-0.006 0.01127,-0.001 l 0,0 0,0 0,0 c 0,0 -0.0052,0.006 -0.01127,0.001 z" id="path3643" style="opacity:0.35;fill:#be202e" />
<path d="m -30.233189,292.45636 c 0,0 0.0052,-0.006 0.01127,-0.001 l 0,0 0,0 0,0 c 0,0 -0.0052,0.006 -0.01127,0.001 z" id="path3654" style="fill:url(#SVGID_10_)" />
</g>
<text id="text3761" y="61.094482" x="290" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:Oswald;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve">
<tspan y="61.094482" x="290" id="tspan3763">The</tspan>
</text>
<text id="text3416" y="72.094482" x="356" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:57.5px;line-height:125%;font-family:Oswald;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve">
<tspan y="72.094482" x="356" id="tspan3418">Apache Velocity Project</tspan>
</text>
<path id="path3557" d="m 897.15,23.54449 0,1.58889 3.72099,0 0,10.51111 1.72469,0 0,-10.51111 3.74815,0 0,-1.58889 -9.19383,0 z m 21.49753,0 -4.15555,8.44691 -4.18272,-8.44691 -2.07778,0 0,12.1 1.58889,0 0,-9.60123 4.11482,8.32469 1.1,0 4.11481,-8.32469 0,9.60123 1.58889,0 0,-12.1 -2.09136,0 z" style="fill:#6d6e71" />
<text id="text3599" y="114.09448" x="400" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:Arial;text-align:start;letter-spacing:0.03em;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve">
<tspan y="114.09448" x="400" id="tspan3601">http://velocity.apache.org/</tspan>
</text>
</svg>
</a>
</div>
<div id="breadcrumb">
<ul><li><a href="http://www.apache.org">apache</a></li><li><a href="/">velocity</a></li><li><a href="/tools/">tools</a></li><li><a href="/tools/3.0/">3.0</a></li><li><a href="#">upgrading</a></li></ul>
</div>
<div id="middle">
<div id="leftnav">
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h2 id="velocity-tools">Velocity Tools<a class="headerlink" href="#velocity-tools" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="index.html">Overview</a></li>
<li><a href="/download.cgi#tools">Download</a></li>
</ul>
<h2 id="subprojects">Subprojects<a class="headerlink" href="#subprojects" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="generic.html">GenericTools</a></li>
<li><a href="view.html">VelocityView</a></li>
</ul>
<h2 id="docs">Docs<a class="headerlink" href="#docs" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="tools-summary.html">Standard Tools</a></li>
<li><a href="apidocs/index.html">Javadoc</a></li>
<li><a href="upgrading.html">Upgrading</a></li>
<li><a href="configuration.html">Configuration</a></li>
<li><a href="standalone.html">Standalone Use</a></li>
<li><a href="frameworks.html">Web Integration</a></li>
<li><a href="creating-tools.html">Creating Tools</a></li>
<li><a href="contributions.html">Contributions</a></li>
<li><a href="/engine/devel/glossary.html">Glossary</a></li>
<li><a href="https://wiki.apache.org/velocity/VelocityFAQ">FAQ</a></li>
<li><a href="https://wiki.apache.org/velocity/">Wiki</a></li>
</ul>
<h2 id="development">Development<a class="headerlink" href="#development" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="changes.html">Changes</a></li>
<li><a href="dependencies.html">Dependencies</a></li>
<li><a href="index.html#helping-out">Participating</a></li>
<li><a href="/download.cgi#tools">Source Code</a></li>
<li><a href="https://issues.apache.org/jira/browse/VELTOOLS">Report Issue</a></li>
</ul>
<div id="bottom-nav">
<img src="/images/pbv90x30.png"/>
<div id="rss">
<a class="poweredBy" href="/rss/news.rss" title="Velocity News Feed"><img class="poweredBy" alt="Velocity News Feed" src="/images/feed-icon-24x24.jpg"></a>
</div>
<iframe src="https://www.apache.org/ads/buttonbar.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="265"></iframe>
</div>
</div>
<div id="content"><div class="section-content"><style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h2 id="upgrading-velocitytools">Upgrading VelocityTools<a class="headerlink" href="#upgrading-velocitytools" title="Permanent link">&para;</a></h2>
<div class="toc">
<ul>
<li><a href="#upgrading-velocitytools">Upgrading VelocityTools</a></li>
<li><a href="#upgrading-to-30">Upgrading to 3.0</a></li>
<li><a href="#upgrading-to-20">Upgrading to 2.0</a><ul>
<li><a href="#renamings-in-20">Renamings in 2.0</a></li>
<li><a href="#deprecations-in-20">Deprecations in 2.0</a></li>
<li><a href="#configuration-in-20">Configuration in 2.0</a></li>
<li><a href="#integration-with-20">Integration with 2.0</a></li>
<li><a href="#custom-tools-in-20">Custom Tools in 2.0</a></li>
</ul>
</li>
<li><a href="#upgrading-to-14">Upgrading to 1.4</a></li>
</ul>
</div>
<h2 id="upgrading-to-30">Upgrading to 3.0<a class="headerlink" href="#upgrading-to-30" title="Permanent link">&para;</a></h2>
<p>The maven <code>groupId</code> has been changed to <code>org.apache.velocity.tools</code> .</p>
<p>Velocity Tools, as well as Velocity Engine 2.0+, has switched to the SLF4J logging facade. All logger objects are now <code>org.slf4j.Logger</code> instances.</p>
<p>All objects, methods and configuration formats deprecated in 2.0 have been suppressed.</p>
<p>Support for the Struts 1.x tools has been discontinued.</p>
<p>For custom objects refering directly to the Velocity Engine API, please refer to the <a href="http://velocity.apache.org/engine/2.0/upgrading.html">Velocity Engine 2.0 Upgrading section</a>.</p>
<p>Default tools aren't loaded anymore in velocity-tools-view. To load them, you must enable default loading from your <code>WEB-INF/web.xml</code> file:</p>
<div class="codehilite"><pre><span class="nt">&lt;context-param&gt;</span>
<span class="nt">&lt;param-name&gt;</span>org.apache.velocity.tools.loadDefaults<span class="nt">&lt;/param-name&gt;</span>
<span class="nt">&lt;param-value&gt;</span>true<span class="nt">&lt;/param-value&gt;</span>
<span class="nt">&lt;/context-param&gt;</span>
</pre></div>
<p>or do the same for a specific servlet inside its <code>&lt;servlet&gt;</code> tag:</p>
<div class="codehilite"><pre><span class="nt">&lt;init-param&gt;</span>
<span class="nt">&lt;param-name&gt;</span>org.apache.velocity.tools.loadDefaults<span class="nt">&lt;/param-name&gt;</span>
<span class="nt">&lt;param-value&gt;</span>true<span class="nt">&lt;/param-value&gt;</span>
<span class="nt">&lt;/init-param&gt;</span>
</pre></div>
<h2 id="upgrading-to-20">Upgrading to 2.0<a class="headerlink" href="#upgrading-to-20" title="Permanent link">&para;</a></h2>
<p>VelocityTools 2.0 marks the most significant set of upgrades and changes ever done for the VelocityTools library. In order to provide flexible configurations, lazy-loading for tools, and a host of other improvements, almost all of the tool management and configuration code from Tools 1.x has been deprecated and replaced by completely different APIs. Thankfully, we were able to continue supporting old toolbox.xml configuration files and old tool design patterns, though these too have been deprecated and are unable to take full advantage of many of the new features.</p>
<p>Still, as such things have only been deprecated and not removed, <strong>the first step in upgrading to 2.0 is simply replacing your old VelocityTools jar with the 2.0 jar</strong>. If this causes any errors for you, please report them to user@velocity.apache.org, so that we can fix it and help you work around it in the meantime.</p>
<p>Once you have your application compiling and running with Tools 2, your next step is to begin updating or replacing deprecations. Many of these should show up with deprecation warnings during compiling or deprecation notices in your logs. Read through these carefully to be aware of all that needs updating. Below is a list of instructions for handling many of these:</p>
<h3 id="renamings-in-20">Renamings in 2.0<a class="headerlink" href="#renamings-in-20" title="Permanent link">&para;</a></h3>
<p>In general, anything in the packages:</p>
<ul>
<li><code>org.apache.velocity.tools.view.tools</code></li>
<li><code>org.apache.velocity.tools.view.servlet</code></li>
<li><code>org.apache.velocity.tools.view.context</code></li>
</ul>
<p>has been moved to:</p>
<p><code>org.apache.velocity.tools.view\</code></p>
<p>The extra packages had proved superfluous and problematic. All VelocityView classes are now in the <code>org.apache.velocity.view</code> package. Those that remain in the subpackages are merely deprecated shells that extend the classes in the new location. Also, some classes have had their class names adjusted to be more consistent with existing conventions.</p>
<p>Some specific ones to watch out for are as follows. If you directly referenced:</p>
<ul>
<li>VelocityViewServlet, it is now at <a href="apidocs/org/apache/velocity/tools/view/VelocityViewServlet.html">org.apache.velocity.tools.view.VelocityViewServlet</a></li>
<li>VelocityLayoutServlet, it is now at <a href="apidocs/org/apache/velocity/tools/view/VelocityLayoutServlet.html">org.apache.velocity.tools.view.VelocityLayoutServlet</a></li>
<li>WebappLoader, it is now at <a href="apidocs/org/apache/velocity/tools/view/WebappResourceLoader.html">org.apache.velocity.tools.view.WebappResourceLoader</a></li>
<li>ViewContext, it is now at <a href="apidocs/org/apache/velocity/tools/view/ViewContext.html">org.apache.velocity.tools.view.ViewContext</a></li>
<li>ServletLogger, it has been replaced by org.apache.velocity.tools.view.ServletLogChute</li>
<li>ServletUtils, it is now at <a href="apidocs/org/apache/velocity/tools/view/ServletUtils.html">org.apache.velocity.tools.view.ServletUtils</a></li>
<li>BrowserSniffer, it is now at <a href="apidocs/org/apache/velocity/tools/view/BrowserTool.html">org.apache.velocity.tools.view.BrowserTool</a></li>
<li>AbstractPagerTool, it is now at <a href="apidocs/org/apache/velocity/tools/view/PagerTool.html">org.apache.velocity.tools.view.PagerTool</a></li>
<li>ParameterParser, it is now at <a href="apidocs/org/apache/velocity/tools/view/ParameterTool.html">org.apache.velocity.tools.view.ParameterTool</a></li>
<li>ContextTool, it is now at <a href="apidocs/org/apache/velocity/tools/view/ViewContextTool.html">org.apache.velocity.tools.view.ViewContextTool</a></li>
</ul>
<p><strong>NOTE:</strong> If you are still using the old toolbox.xml format do NOT update the tool paths in that file! First, <a href="#Configuration">update your configuration</a>, otherwise your tools may not work as expected. Also, this is not a complete list. Please take note of all deprecation warnings and notices when compiling and running your app.</p>
<h3 id="deprecations-in-20">Deprecations in 2.0<a class="headerlink" href="#deprecations-in-20" title="Permanent link">&para;</a></h3>
<p>Along with the class renamings above have come many deprecations that have no one-to-one replacement class. The vast majority of these have to do with tool management, as XMLToolboxManager and all of its subclasses and support classes could not simply be evolved to achieve the key goals for Tools 2. A few other classes are simply no longer necessary in any form. Here is an overview of all these deprecations-without-direct-replacements:</p>
<p><strong>XMLToolboxManager</strong> was the the central tool management class in Tools 1.x. If you used it or <strong>ServletToolboxManager</strong> you were probably a more advanced user or a framework developer working to integrate VelocityTools support. If so, you should go read <a href="frameworks.html">this document</a>. If you used XMLToolboxManager directly, you should familiarize yourself with these classes:</p>
<ul>
<li><a href="apidocs/org/apache/velocity/tools/ToolManager.html">ToolManager</a></li>
<li><a href="apidocs/org/apache/velocity/tools/config/ConfigurationUtils.html">ConfigurationUtils</a></li>
<li><a href="apidocs/org/apache/velocity/tools/config/FactoryConfiguration.html">FactoryConfiguration</a></li>
<li><a href="apidocs/org/apache/velocity/tools/ToolboxFactory.html">ToolboxFactory</a></li>
<li><a href="apidocs/org/apache/velocity/tools/ToolContext.html">ToolContext</a></li>
</ul>
<p>If you used ServletToolboxManager directly, you should learn about all of the above classes (except perhaps ToolManager) and the following ones as well:</p>
<ul>
<li><a href="apidocs/org/apache/velocity/tools/view/VelocityView.html">VelocityView</a></li>
<li><a href="apidocs/org/apache/velocity/tools/view/ViewToolContext.html">ViewToolContext</a></li>
<li><a href="apidocs/org/apache/velocity/tools/view/ServletUtils.html">ServletUtils</a></li>
</ul>
<p><strong>NOTE:</strong> For the vast majority of users and developers, <a href="apidocs/org/apache/velocity/tools/ToolManager.html">ToolManager</a> or <a href="apidocs/org/apache/velocity/tools/view/VelocityView.html">VelocityView</a> should be all they really need to work with directly. Don't waste time trying to manage <code>Toolbox</code> es yourself until you are sure that ToolManager/VelocityView can't do the job for you.</p>
<p>All of the upgrades to tool management allowed some GenericTool classes to perform functions previously only possible to implement in VelocityView tools. As such, some VelocityView subclasses of generic tools have become obsolete. If you used:</p>
<ul>
<li>ViewRenderTool, you should now just use <a href="apidocs/org/apache/velocity/tools/generic/RenderTool.html"><code>org.apache.velocity.tools.generic.RenderTool</code></a></li>
<li>ViewResourceTool, you should now just use <a href="apidocs/org/apache/velocity/tools/generic/ResourceTool.html"><code>org.apache.velocity.tools.generic.ResourceTool</code></a></li>
</ul>
<h3 id="configuration-in-20">Configuration in 2.0<a class="headerlink" href="#configuration-in-20" title="Permanent link">&para;</a></h3>
<p>Since Tools 2 does lazy-loading of tools, it now makes sense to have almost all tools available by default for most uses, as there is minimal overhead for that at startup and essentially no cost at runtime unless/until the tool is used. So, in Tools 2, unless the user is doing something to trigger the "deprecation support mode" for VelocityView (using the old toolbox.xml format would do this) or explicitly telling <a href="apidocs/org/apache/velocity/tools/view/VelocityView.html">VelocityView</a> not to load the default tools, then all of the supported, standard VelocityTools will be automatically made available by default. If you don't custom configure any of the provided tools and don't have any custom tools of your own, then you don't actually need a configuration at all! Tools 2 comes with a default tools.xml file each for GenericTools and VelocityView, and the <a href="apidocs/org/apache/velocity/tools/ToolManager.html">ToolManager</a>, <a href="apidocs/org/apache/velocity/tools/view/VelocityViewServlet.html">VelocityViewServlet</a>, <a href="apidocs/org/apache/velocity/tools/view/VelocityLayoutServlet.html">VelocityLayoutServlet</a> and <a href="apidocs/org/apache/velocity/tools/view/jsp/VelocityViewTag.html">VelocityViewTag</a> will all automatically look for and load those unless you are using a deprecated toolbox.xml file or explicitly tell them not to by adding the init-param <code>org.apache.velocity.tools.loadDefaults</code> with the value of false to the relevant servlet.</p>
<p>If you do need a configuration, you should update your configuration to one of the new formats. Easiest would be to go from the old xml format to <a href="config-xml.html">the new xml format</a>. Remember, you can just leave out standard tools that you don't do any configuration of, as your configuration will just be added to the default one (again, unless the default behavior is turned off). Also, do note that all VelocityView tools have <a href="#Renamings-in-2.0">changed packages and/or names</a>; please avoid using the deprecated versions as those will eventually be removed.</p>
<p>If you are largely happy with the default tools.xml configuration, but wish to override just a few parts, you can override them with your own file. Tool configurations are key-centric. If you just want to provide a different default format for the <a href="apidocs/org/apache/velocity/tools/generic/DateTool.html">DateTool</a> and a second bundle for the ResourceTool, your tools.xml can be just:</p>
<div class="codehilite"><pre><span class="nt">&lt;tools&gt;</span>
<span class="nt">&lt;toolbox</span> <span class="na">scope=</span><span class="s">&quot;application&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;tool</span> <span class="na">key=</span><span class="s">&quot;date&quot;</span> <span class="na">format=</span><span class="s">&quot;MM/dd/yy&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/toolbox&gt;</span>
<span class="nt">&lt;toolbox</span> <span class="na">scope=</span><span class="s">&quot;request&quot;</span><span class="nt">&gt;</span>
<span class="nt">&lt;tool</span> <span class="na">key=</span><span class="s">&quot;text&quot;</span> <span class="na">bundles=</span><span class="s">&quot;resources,otherResources&quot;</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/toolbox&gt;</span>
<span class="nt">&lt;/tools&gt;</span>
</pre></div>
<p>This just overrides the format property of the "date" tool and the bundles property of the "text" tool in the configuration. Since "date" and "text" already have classes set in the default tools.xml files that come with the GenericTools and VelocityView packages, you don't need to include those.</p>
<p>You don't even have to use XML to override/extend the defaults. Other available formats are <a href="config-properties.html">a properties file</a> or <a href="config-java.html">plain java</a>.</p>
<h3 id="integration-with-20">Integration with 2.0<a class="headerlink" href="#integration-with-20" title="Permanent link">&para;</a></h3>
<p>Please see the <a href="frameworks.html">framework integration</a> page for information on this subject.</p>
<h3 id="custom-tools-in-20">Custom Tools in 2.0<a class="headerlink" href="#custom-tools-in-20" title="Permanent link">&para;</a></h3>
<p>Those of you who write your own custom tools may want to make a few changes to upgrade your custom tools to do things the "Tools 2 way". Here's a few quick starts for that, though this doesn't cover everything. More details can be found in the <a href="creating-tools.html">instructions for creating tools</a>.</p>
<p><strong>Naming:</strong> The recommended practice is to give a tool to be used as <code>$foo</code> the name <code>FooTool</code> . This is not required but is a convention that keeps things easy follow and learn. If you have to name a tool FooBarUtility but want it to be <code>$foo</code> in templates, the second best thing is to provide a <a href="apidocs/org/apache/velocity/tools/config/DefaultKey.html"><code>@DefaultKey("foo")</code></a> annotation on the class, though this introduces a dependency on VelocityTools. As a last resort, if you are providing tools for a framework or otherwise can influence or control the configuration, you might consider providing a default configuration -- perhaps even one automatically discoverable by <a href="apidocs/org/apache/velocity/tools/config/ConfigurationUtils.html">ConfigurationUtils</a> -- to set the tool's key for your users.</p>
<p><strong>Scoping:</strong> If your tool is only meant to be used in a particular scope, it's recommended that you give the class a <a href="apidocs/org/apache/velocity/tools/config/ValidScope.html"><code>@ValidScope(Scope.REQUEST)</code></a> annotation as well. If you only want to ban a particular scope and allow all others, you could provide a <code>@InvalidScope(Scope.APPLICATION)</code> annotation on the class. The <a href="apidocs/org/apache/velocity/tools/Scope.html"><code>Scope</code></a> class provides constants for REQUEST, SESSION, and APPLICATION. Other scopes are now theoretically possible, but only a little work and no testing has been done there at this point.</p>
<p><strong>Configuration:</strong> If you have a configurable tool whose configuration should not changed by the templates which use it, then consider having your tool extend the <a href="apidocs/org/apache/velocity/tools/generic/SafeConfig.html">SafeConfig</a> class (or <a href="apidocs/org/apache/velocity/tools/generic/FormatConfig.html">FormatConfig</a> or <a href="apidocs/org/apache/velocity/tools/generic/LocaleConfig.html">LocaleConfig</a>). These safely standardize configuration of these common configuration properties. Also take note that the <code>configure(Map)</code> and <code>init(Object)</code> methods have been changed into just the <code>configure(Map)</code> and individual setter methods (e.g. <code>setRequest</code>, <code>setSession</code>, etc). Basically, when it's time to instantiate a tool, the tool manager will gather all the "configuration properties" for that tool, its toolbox, etc and combine it into a single map with the "init data" (context, request, session, etc). The manager searches for relevant setter methods that accept that data and also for a <code>configure(Map)</code> method. The setters get what they're asking for (if available) and the <code>configure()</code> method accepts the whole combined <code>Map</code>. The upshot of this approach is that tools no longer need to conform to any interfaces or patterns. In fact, it's possible to write a FooTool that doesn't know anything about any VelocityTools classes whatsoever and yet be fully instantiable and configurable by VelocityTools. Your tools don't need to know about anything except what they need to know about.</p>
<h2 id="upgrading-to-14">Upgrading to 1.4<a class="headerlink" href="#upgrading-to-14" title="Permanent link">&para;</a></h2>
<p>This is unfinished. <a href="index.html#Contribution">You can help fix that!</a></p></div></div>
<hr/>
<div id="copyright">
Copyright &#169; 2020 The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
</div>
</div>
</div>
</body>
</html>