blob: 1dea9eaf7daf1039bc493199f4f9cdc32f7758fa [file] [log] [blame]
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 2.0.0 from org.apache.maven.plugins:maven-changes-plugin:2.12.1:changes-report at 17 Jun 2025
| Rendered using Apache Maven Fluido Skin 2.1.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="generator" content="Apache Maven Doxia Site Renderer 2.0.0" />
<meta name="author" content="Eric Pugh" />
<title>Changes – Apache Turbine</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-2.1.0.min.css" />
<link rel="stylesheet" href="./css/site.css" />
<link rel="stylesheet" href="./css/print.css" media="print" />
<script src="./js/apache-maven-fluido-2.1.0.min.js"></script>
<link rel="icon" type="image/png" sizes="48x48" href="./images/favicon.ico">
<link rel="icon" type="image/png" sizes="48x48" href="../images/favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<style>.github-fork-ribbon:before { background-color: orange; }</style>
</head>
<body>
<a class="github-fork-ribbon right-top" href="https://github.com/apache/turbine-build" data-ribbon="Fork me on GitHub">Fork me on GitHub</a>
<div class="container-fluid container-fluid-top">
<header>
<div id="banner">
<div class="pull-left"><div id="bannerLeft"><h1><a href="https://turbine.apache.org/"><img src="images/turbine-project-apache-separate.png" alt="Apache Turbine" /></a></h1></div></div>
<div class="pull-right"><div id="bannerRight"><h1><a href="https://turbine.apache.org/"><img src="images/logo.gif" /></a></h1></div></div>
<div class="clear"><hr/></div>
</div>
<div id="breadcrumbs">
<ul class="breadcrumb">
<li id="publishDate">Last Published: 01 Apr 2025<span class="divider">|</span>
</li>
<li id="projectVersion">Version: 7.0</li>
<li class="pull-right"><span class="divider">|</span>
<a href="https://turbine.apache.org/fulcrum/">Fulcrum</a></li>
<li class="pull-right"><span class="divider">|</span>
<a href="https://turbine.apache.org/">Turbine</a></li>
<li class="pull-right"><a href="https://www.apache.org">Apache</a></li>
</ul>
</div>
</header>
<div class="row-fluid">
<header id="leftColumn" class="span2">
<nav class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">General Information</li>
<li><a href="index.html">Overview</a></li>
<li><a href="features.html">Features</a></li>
<li><a href="fsd.html">Specification</a></li>
<li><a href="getting-started.html">Getting Started</a></li>
<li><a href="how-to-build.html">Howto Build Turbine</a></li>
<li class="active"><a>Changes</a></li>
<li class="nav-header">Documentation</li>
<li><a href="services/index.html"><span class="icon-chevron-right"></span>Services</a></li>
<li><a href="howto/index.html"><span class="icon-chevron-right"></span>Howtos</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/TURBINE">Wiki</a></li>
<li><a href="apidocs/index.html">JavaDocs</a></li>
<li class="nav-header">Development</li>
<li><a href="proposals.html">Proposals</a></li>
<li><a href="how-to-help.html">How To Help</a></li>
<li><a href="todo.html">Todo</a></li>
<li class="nav-header">Project Documentation</li>
<li><a href="project-info.html"><span class="icon-chevron-right"></span>Project Information</a></li>
<li><a href="project-reports.html"><span class="icon-chevron-down"></span>Project Reports</a>
<ul class="nav nav-list">
<li class="active"><a>Changes</a></li>
<li><a href="apidocs/index.html">Javadoc</a></li>
<li><a href="testapidocs/index.html">Test Javadoc</a></li>
<li><a href="xref/index.html">Source Xref</a></li>
<li><a href="xref-test/index.html">Test Source Xref</a></li>
<li><a href="cpd.html">CPD</a></li>
<li><a href="pmd.html">PMD</a></li>
<li><a href="surefire.html">Surefire</a></li>
<li><a href="jacoco/index.html">JaCoCo</a></li>
<li><a href="jdepend-report.html">JDepend</a></li>
<li><a href="rat-report.html">Rat Report</a></li>
<li><a href="taglist.html">Tag List</a></li>
<li><a href="spotbugs.html">SpotBugs</a></li>
</ul></li>
<li class="nav-header">Apache</li>
<li><a href="https://www.apache.org/">Apache Website</a></li>
<li><a href="https://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/foundation/how-it-works.html">How the ASF works</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="https://www.apache.org/security/">Security</a></li>
</ul>
</nav>
<div class="well sidebar-nav">
<form id="search-form" action="https://www.google.com/search" method="get" >
<input value="http://turbine.apache.org/turbine/turbine-7-0" name="sitesearch" type="hidden" />
<input class="search-query" name="q" id="query" type="text" placeholder="Search with Google..." />
</form>
<div id="poweredBy">
<div class="clear"></div>
<div class="clear"></div>
<a href="https://maven.apache.org/" class="builtBy" target="_blank"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
</div>
</div>
</header>
<main id="bodyColumn" class="span10">
<section>
<h1>Changes</h1><section>
<h2>Release History</h2>
<tr class="a">
<th>Version</th>
<th>Date</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="#a7.0-SNAPSHOT">7.0-SNAPSHOT</a></td>
<td>in Git</td>
<td>&#160;</td></tr>
<tr class="a">
<td><a href="#a6.0">6.0</a></td>
<td>2024-02-14</td>
<td>&#160;</td></tr>
<tr class="b">
<td><a href="#a5.1">5.1</a></td>
<td>2021-11-23</td>
<td>&#160;</td></tr>
<tr class="a">
<td><a href="#a5.0">5.0</a></td>
<td>2019-05-28</td>
<td>&#160;</td></tr>
<tr class="b">
<td><a href="#a4.0.1">4.0.1</a></td>
<td>2018-02-21</td>
<td>&#160;</td></tr>
<tr class="a">
<td><a href="#a4.0">4.0</a></td>
<td>2017-11-06</td>
<td>&#160;</td></tr>
<tr class="b">
<td><a href="#a4.0-M2">4.0-M2</a></td>
<td>2015-12-21</td>
<td>&#160;</td></tr>
<tr class="a">
<td><a href="#a4.0-M1">4.0-M1</a></td>
<td>2011-06-23</td>
<td>&#160;</td></tr>
<tr class="b">
<td><a href="#a2.4-M1">2.4-M1</a></td>
<td>2004-08-14</td>
<td>Milestone release including Pipeline and PipelineData objects</td></tr>
<tr class="a">
<td><a href="#PRE_2.4">PRE 2.4</a></td>
<td>&#160;</td>
<td>Older Changes Logs</td></tr></table></section><section>
<h2 id="a7.0-SNAPSHOT">Release 7.0-SNAPSHOT &#x2013; in Git</h2>
<tr class="b">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Fix for security check to prevent XSS for default Turbine keys from parameters,
which might be set or not and e.g. sed in templates and other places.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Dependency version update yauaa to 7.26.1, fulcrum.security 4.0.0, fulcrum.intake 4.0.0, fulcrum.parser 4.0.0, fulcrum.yaafi 2.0.0, fulcrum.cache 2.0.1, fulcrum-quartz 2.0.0, fulcrum localization 2.0.0,
fulcrum testcontainer 2.0.1
jakarta.xml.bind-api 4.0.1.
Replace javax.servlet-api with jakarta.servlet-api 6.1.0;
Replace log4j-web with log4j-jakarta-web 2.23.1;
Add commons-email2-jakarta 2.0.0-M1.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Change to Jakarta namespace (from Javax). Replace javax servlet-api 3.1.0 with jakarta servlet-api 6.1.0, use jakarta dependendies commons-email2-jakarta and log4j-jakarta-web.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>New configuration option &quot;session.objectinputfilter&quot; to limit the classes that can be
deserialized into a session from persistent storage. This feature uses the
ObjectInputFilter introduced in Java 9.</td>
<td><a href="team-list.html#tv">tv</a></td></tr></table></section><section>
<h2 id="a6.0">Release 6.0 &#x2013; 2024-02-14</h2>
<tr class="a">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Provide mechanism to allow auto loading of Turbine (and Fulcrum) services. If a &quot;known&quot; service is extending FieldAnnotatedTurbineBaseService or
MethodAnnotatedTurbineBaseService it could declare fields and methods with more Turbine annotations.
Examples are annotating a service with @TurbineService or autoload a service, which has class level annotation @TurbineService, if the callingclass itself is TurbineService annotated.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>New service DateTimeFormatterService and tool DateTimeFormatterTool, which allow date time formatting with locale and zone configuration.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Dependency version update yauaa to 7.24.0, commons-pool2 2.12.0, slf4j-api 2.0.11, jaxb-runtime 4.0.4, fulcrum.security 3.0.0, fulcrum.intake 3.0.0, fulcrum.parser 3.0.0, fulcrum.yaafi 2.0.0,
commons email to 1.6.0, commons lang3 to 3.14.0, commons text to 1.11.0, jakarta xml from 2.3.3 to 4.0.0, jaxb-impl from 2.3.3 to 4.0.0</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Minor version update to Torque 5.1, Jackson to 2.16.1 (yaml profile), docker-testcontainers to 1.18.3 (docker profile), commons-configuration2 to 2.8.0, commons-text 1.10.0</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Fix java.lang.NoSuchFieldError: DEFAULT_TIME_BETWEEN_EVICTION_RUNS. This field changed from being an long to a Duration in commons-pool2 v 2.10.0 and commons-dbcp2 v2.9.0.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Migrate to package-info.java from package.html.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Optimize JobQueue and add JobQueueTest</td>
<td><a href="team-list.html#tv">tv</a></td></tr></table></section><section>
<h2 id="a5.1">Release 5.1 &#x2013; 2021-11-23</h2>
<tr class="a">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated dependencies: yauaa to 5.23, commons-lang3 to 3.12, jython-standalone to 2.7.2
Update turbine-parent 8 (released)</td>
<td><a href="team-list.html#painter">painter</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update yauaa to 5.21 ( CVE-2020-13956), junit to 4.13.1 (CVE-2020-15250)</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>New service URL mapper implementation: render beautified URL and map parameters back when parsed.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Add reasonable hashCode(), equals() and toString() methods to URIParam class</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update testcontainers to 1.14.3, mysql 8.0.20,
use dbcp2 dsfactory, add velocity 2.1 default backwards props in test props, update dependencies: commons-codec 1.15, comonsconfiguration2 2.7, commons-lang3 3.11, commons-test 1.9, torque 5.0, docker testcontainer to 1.15.0-rc2 to be able to use junit jupiter 2.7.0</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Better concurrency in TurbineRundataService</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace charset strings with Charset objects where possible</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add Java Docker Testcontainers with minimal impact for default build in profile docker-testcontainer.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update turbine-parent 6 and fulcrum-parser 2.0.1</td>
<td><a href="team-list.html#painter">painter</a></td></tr></table></section><section>
<h2 id="a5.0">Release 5.0 &#x2013; 2019-05-28</h2>
<tr class="a">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Change all Assembler modules to interfaces</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace unmaintained UADetetctor with YAUAA</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace all commons-logging references with log4j2</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Direct Avalon logging to log4j2</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update jython to jython-standalone 2.7.1</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Use log4j-jcl instead of redirection through slf4j</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update fulcrum component releases:
fulcrum-crypto 1.0.8
fulcrum-factory 1.1.1
fulcrum-intake 2.0.0
fulcrum-localization 1.0.7
fulcrum-mimetype 1.0.6
fulcrum-quartz 1.1.1
fulcrum-parser 2.0.0
fulcrum-pool 1.0.5
fulcrum-security 1.1.3
fulcrum-testcontainer 1.0.8
fulcrum-xslt 1.1.1
fulcrum-yaafi 1.0.8</td>
<td><a href="team-list.html#jp">jp</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update from log4j to log4j2, redirect JCL to slf4j</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update commons-configuration2 to 2.4</td>
<td><a href="team-list.html#jp">jp</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update from lang to commons lang3</td>
<td><a href="team-list.html#jp">jp</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add ServiceBroker.getApplicationRoot() to allow services to get their root directory</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add Turbine.getApplicationRootAsFile()</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Make PipelineData AutoCloseable and improve robustness of Turbine exception handling</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependency commons-configuration to 2.3</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Adding screens for plain JSON</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Configuration pathes and log4j path are now all relative to base configuration file (included from).</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependency commons-configuration to 2.2
Configuration pathes are now all relative to application root.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependency commons-lang to 3.7</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependencies fulcrum-parser to 2.0.0-SNAPSHOT and fulcrum-intake to
2.0.0-SNAPSHOT</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove dependency on fulcrum-upload</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove dependency on commons-collections</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove dependency on commons-io</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>IMPORTANT: Update HtmlPageAttributes to deliver a default Doctype for HTML 5
Add a test.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>IMPORTANT: Update dependency servlet-api to 3.1.0
Adjust settings and services accordingly. The Turbine servlet is now annotated
as @WebServlet with reasonable defaults, so a web.xml is no longer needed.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add DefaultSetEncodingValve to concentrate handling of input and output encoding.
If required, add this valve at first position to your pipeline descriptor.
Move all charset and locale related methods to org.apache.turbine.util.LocaleUtils
Deprecate Turbine.getDefaultInputEncoding()</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependency velocity to 2.0
Adjust settings and services accordingly. Examples are in CompleteTurbineResources.properties.
Look for [backward compatibility with Velocity 1.x] for easy migration</td>
<td><a href="team-list.html#tv">tv</a></td></tr></table></section><section>
<h2 id="a4.0.1">Release 4.0.1 &#x2013; 2018-02-21</h2>
<tr class="b">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Security methods replaceRole and revokeAll(Role, flag), Interface changes: SecurityService's addUser method and UserManager's createAccount, getAnonymousUser, getACL methods may now throw UnknownEntityException additionally.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>input.encoding property (velocity) is set now default for locale.default.charset (both default to ISO-8859-1).</td>
<td><a href="team-list.html#painter">painter</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated dependency versions: commons-codec to 1.11, commons-beanutils to 1.9.3, mockito-core to 2.13.0.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Each call in Turbine managers to the user delegate with a user object parameter now gets the wrapped user (the userDelegate). Thanks to Jeffery Painter.</td>
<td><a href="team-list.html#gk">gk</a></td></tr></table></section><section>
<h2 id="a4.0">Release 4.0 &#x2013; 2017-11-06</h2>
<tr class="a">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>OWASP vulnerability check</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Decoupling from DefaultUserImpl class by introducing a user wrapper class definition, which the UserManager uses as wrapper for Fulcrum Security and a TurbineUserDelegate marker interface.</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update/Add Tests for Turbine and Fulcrum Security Service version 1.1.1 interaction / handling</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Using slf4j over log4j (currently version 1.7.25)</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Assembly bugfixes</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace mockobjects with Mockito</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fix NPE in LogoutAction: draw user from session instead of RunData. Add test.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update BrowserDetector to support contemporary browsers.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove TurbineAvalonComponentService including the long deprecated Excalibur dependency</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove methods in RunData referring to Jakarta ECS.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace xstream with JAXB when reading the pipeline descriptor.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add annotation support for configuration values</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Improve performance of AnnotationProcessor by caching annotations. Add performance test.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace synchronized array in TurbinePipeline with CopyOnWriteArrayList (20% faster). Add performance test.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replace several synchronized maps with ConcurrentMaps</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add annotation processing to pull tools</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Eventually remove all static service accessors and replace them by lookups or annotations</td>
<td><a href="team-list.html#tv">tv</a></td></tr></table></section><section>
<h2 id="a4.0-M2">Release 4.0-M2 &#x2013; 2015-12-21</h2>
<tr class="a">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependencies
- commons-codec to 1.10
- commons-collections to 3.2.2
- commons-logging to 1.2
- commons-beanutils to 1.9.2
- jython to 2.7.0
- log4j to 1.2.17</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove all deprecated methods using RunData as a parameter to clean up the API
Further cleanup is needed.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add QuartzSchedulerService</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependencies
- fulcrum-security to 1.1.0
- fulcrum-intake to 1.2.0</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update to Torque 4.0.0</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add Annotation @TurbineActionEvent to annotate action methods
with arbitrary event names.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update dependencies
- servlet-api to 2.5 (Tomcat 6.0)
- commons-codec to 1.8
- commons-configuration to 1.9
- commons-email to 1.3
- fulcrum-parser to 1.0.3</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update Turbine Parent POM to version 3</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add Annotation @TurbineLoader to inject a loader
instance into objects.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Switch to Fulcrum Security API</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Refactor handling of annotated fields into AnnotationProcessor.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add Annotation @TurbineConfiguration to inject a configuration
instance into objects.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fix Velocity logging.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Reintroduce VelocityCachedLayout/Screen classes</td>
<td><a href="team-list.html#gk">gk</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Adjust site for Apache Turbine Parent POM version 2</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Use Apache Turbine Parent POM version 2</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add Annotation @TurbineService to inject Turbine service instance into assemblers
such as screens, actions, navigations etc. and pipeline valves.
See VelocityActionWithServiceInjection for an example.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Add class cache for TurbineRunDataService</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Remove duplicate data storage in DefaultTurbineRunData and
DefaultPipelineData</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Services that implement TurbineServiceProvider are inited early by default. Fixes <a class="externalLink" href="https://issues.apache.org/jira/browse/TRB-72">TRB-72</a>.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Switch from String keys to Class keys for AssemblerBrokerService</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Refine interface of PipelineData and add user and acl objects
to pipelineData.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fix possible NPE in TurbinePullService.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Use lastIndexOf() to get the template extension in TurbineTemplateService. Fixes <a class="externalLink" href="https://issues.apache.org/jira/browse/TRB-82">TRB-82</a>.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fix TurbineYaafiComponentService to set its applicationRoot properly.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fix TurbineMacros to comply with the implementation of HtmlPageattributes</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Continue generification</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Port the handling of template encoding from Turbine 2.3.3</td>
<td><a href="team-list.html#ludwig">ludwig</a></td></tr></table></section><section>
<h2 id="a4.0-M1">Release 4.0-M1 &#x2013; 2011-06-23</h2>
<tr class="b">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated dependency on commons-collections to 3.2.1</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated dependency on commons-configuration to 1.6</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated dependency on commons-lang to 2.5</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated dependency on commons-email to 1.2</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Move to Java-5 generics.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Move to Java-5 generics.</td>
<td><a href="team-list.html#ludwig">ludwig</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>TurbineURI was using the deprecated encode methods of URLEncoder. Fixes <a class="externalLink" href="https://issues.apache.org/jira/browse/TRB-80">TRB-80</a>. Thanks to Georg Kallidis.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove remains of old parser management: ParserUtils</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>RunData.getContentType() was returning an empty string when it shouldn't</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Merged changes of the 2.3-branch into the trunk.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Merged JSON-RPC-Service of the 2.3-branch into the trunk.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Merged UIService of the 2.3-branch into the trunk.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Merged TorqueSecurityService of the 2.3-branch (temporarily) into the trunk.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Replaced the XSLT-Service with its Fulcrum counterpart.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Removed the XMLRPC-Service. There is a more current alternative
implementation available in the Fulcrum repository.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Adjusted the IntakeTool to use IntakeServiceFacade instead of Intake</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Made TurbineException extend JDK-1.4-Exception instead of commons-lang
NestableException.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Moved the initialization of the pipeline so that all services are
initialized first and can be used in the pipeline.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Added a getLoader() method to the AssemblerBrokerService to allow dynamic
loaders. Loaders are expected to be provided by the module factories.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Moved the different loader caches into the AssemblerBrokerService and
centralized several loader features. The loaders do no longer extend
Hashtable.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Removed the references to the different module types from TurbineConstants
and tried to reduce the number of inter-dependencies in the module, loader
and broker-classes. This should lead to a transparent module configuration
without any hard-wired module types.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Ported the class cache for JavaBaseFactory from Turbine 2.3</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Use the transparent service lookup in all service lookups</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Initialize the locale of RunData, the ParameterParser and the CookieParser
from the HttpServletRequest. Make RunData.setLocale propagate the locale
setting to the parsers.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Make sure that Turbine uses the ParserService to get
correctly initialized parser objects. Fixes <a class="externalLink" href="https://issues.apache.org/jira/browse/TRB-39">TRB-39</a>.</td>
<td><a href="team-list.html#tv">tv</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Added missing format() methods to LocalizationTool.</td>
<td><a href="team-list.html#seade">seade</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>A FileItem in a ParameterParser added to TurbineURI or TemplateURI was
resulting in a NPE. Fixes <a class="externalLink" href="https://issues.apache.org/jira/browse/TRB-8">TRB-8</a>. Thanks to Gunther Olesch.</td>
<td><a href="team-list.html#seade">seade</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>TurbineURI was mishandling the empty String. Fixes <a class="externalLink" href="https://issues.apache.org/jira/browse/TRB-16">TRB-16</a>. Thanks to J&#xfc;rgen Hoffmann.</td>
<td><a href="team-list.html#seade">seade</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated jar dependency: javamail to 1.3.3</td>
<td><a href="team-list.html#seade">seade</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>The avalon-framework-4.3 allows to create an Avalon logger based on a commons logger.</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>BrowserDetector was throwing a NPE for recent versions of Opera - this
has been fixed.</td>
<td><a href="team-list.html#seade">seade</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Setting all members of BaseServiceBroker to private as it should be.</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Removed hack in Turbine.java forcing an early init of the AvalonComponentService. The
removal could potentially break existing code if the AvalonComponentService is not
configured to be early initialized since the requested service wouldn't be found.</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Implementing transparent service lookup using TurbineServiceProviders</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>The AvalonComponentService does not use the deprecated Component interface and ComponentException.</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Restructured the dependency section to distinguish between ECM and YAAFI dependencies.</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Use the Fulcrum components from Fulcrum 3.0.0</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Added YAAFI Avalon service container and the corresponding TurbineYaafiComponentService.</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Removed remaining Merlin artifacts</td>
<td><a href="team-list.html#sgoeschl">sgoeschl</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Handle non US-ASCII encoding with multipart/form-data mimetype better. Thanks to Leandro Rodrigo Saad Cruz.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove Merlin service. When the replacement for Merlin (Metro) is released, then
add back in support.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Use RELEASED versions of Fulcrum components!</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove old security services based on couple Torque.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Remove dependencies on Stratum and Torque. Torque is now completely optional for Turbine.
Stratum has been replaced by the AvalonComponentService.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>The velocity page formatting macros have been updated to generate xhtml
compatible html.</td>
<td><a href="team-list.html#seade">seade</a></td></tr></table></section><section>
<h2 id="a2.4-M1">Release 2.4-M1 &#x2013; 2004-08-14</h2>
<tr class="b">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Update to Commons Configuration 1.0-RC1. TurbineConfiguration.xml files should switch
from &lt;dom4j className=&quot;org.apache.commons.configuration.DOM4JConfiguration&quot; fileName=&quot;conf/test/TurbineResources.xml&quot;/&gt;
to &lt;xml fileName=&quot;conf/test/TurbineResources.xml&quot;/&gt; syntax.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Refactored how Turbine sets up it's ServerData object. Removed the use
of RunData from the process.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Removed dependency on deprecated Log4jFactory in favor of Log4jLogger.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Replaced existing Maven plugin with Hennings' META: Maven Environment for
Turbine Applications plugin.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Updated to use Stratum b5 which properly supports the upcoming 1.0 release of
Commons Configuration. Also removed uses of getVector which has been removed
from the Configuration API.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Backported the Pipeline from Turbine 3 to Turbine 2.4. The pipeline allows
you to define via an XML file all the stages for processing a request. This
makes it simple to add your own custom steps to be applied to each HTTP
request coming into Turbine. You will need to add the pipeline.xml file.
Added methods to many classes to allow the use of PipelineData as an
alternative to RunData. Added new PipelineDataApplicationTool interface for
tools which use PipelineData instead of RunData.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Maven Plugin for Turbine moved to /extensions directory. The torque
codegeneration of objects for the Schedule and Security services was
moved to a new project /extensions/torque. This removes all the nasty
logic required to code generate the torque objects before hand. Should
help new users work with Turbine as well as allow other backend providers
for the Schedule and LDAP security services. The multiproject plugin is
now used to build Turbine.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/remove.gif" alt="Remove" title="Remove" /></td>
<td>Removed deprecated Turbine Security methods.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Added to website documentation the Maven Plugin for Turbine. Now has goals to
help with inplace development of Turbine apps.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Upgraded to commons-pool-1.1</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>A means of initializing Velocity action modules has been added.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/add.gif" alt="Add" title="Add" /></td>
<td>Added first cut of the MerlinComponentService which uses the Avalon Merlin
container. Merlin has many many features to help with dealing with components. Thanks to Peter Courcoux.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>The cache, crypto, localization, intake, factory, and mimetype services have now been deprecated in favor
of the Fulcrum versions as well.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>Turbine security now uses the Fulcrum crypto component.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>The intake service within Turbine has been deprecated in favor
of the Fulcrum Intake service. The intake pull tool has
been updated to reflect this.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/update.gif" alt="Update" title="Update" /></td>
<td>The localization service within Turbine has been deprecated in favor
of the Fulcrum Localization service. The localization pull tool has
been updated to reflect this.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fixed problem in Intake with the &quot;remove&quot; method in IntakeTool that is
triggered by a &quot;removeAll&quot;.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>When there is more than one instance of a group and a &quot;removeAll&quot; is
done the &quot;remove&quot; method is called for each of the instances of the
group. If a mutiply instantiated group is the last one to be removed,
it's parameter entries will already have been removed and &quot;getStrings&quot;
returns null, which is not being handled in the code.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Intake now handles multiValued=&quot;true&quot; on type=&quot;int&quot; fields correctly.
The get/set methods of the underlying object need to deal with an array
of ints. The intake processing for other primitive types has also been
updated, though not tested to the same extent as int.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>HttpUtils.httpDateFormat had the year set as 'yyyyy', should be 'yyyy' therefore
setting expiry dates failed.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>doXXX events would eat exceptions while doPerform would bubble them up.
Added property action.event.bubbleexception which is true by default that
applies to both types and either bubbles them up, or logs and sinks them.</td>
<td><a href="team-list.html#epugh">epugh</a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>The intake validators were fixed so that fields with required=false
rules no longer attempt to execute the remaining rules when no
input is provided. A minLength &gt; 0 rule is no longer synonymous
with required=true.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Actions triggered from html input elements with type=&quot;button&quot; are
now processed correctly (the trailing &quot;.x&quot; and &quot;.y&quot; are removed from
the event names).</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Intake was fixed so that fields with required elements with value=false
can later be enabled with field.setRequired(true) (i.e. you should
do this rather than using the deprecated required-message element).</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Intake was fixed so that DateString will use the &quot;formatn&quot; (where n
&gt;= 1) rules to parse the input and then the &quot;format&quot; rule to format
it (the &quot;format&quot; rule is also used to parse the date if there are no
&quot;formatn&quot; rules or they are not able to parse it). In order to
retrieve the correctly formatted DateString value you need to use
$group.foo.StringValue rather than $group.foo.Value
(you can do this for all values, not just DateString).</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Intake now makes use of the the emptyValue attribute from the field
elements when mapping from the group to the object when no value has
been set. This makes it possible to clear values in an existing object
that is being overwritten with Intake data using
group.setProperties(obj) (or you can provide non-null values
in your intake.xml file). Make sure you do not inadvertently include
the primary key for the object in the intake group without actually
setting it to the appropriate value (it shouldn't be in the group
anyway).</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>Fixed the intake DateString flexible rule so that it applies to the
format rules and not just to the default locale format.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="b">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>DateFormatter now allows for a differnet date format to be provided
via tool.dateTool.format in TurbineResources.properties.</td>
<td><a href="team-list.html#"></a></td></tr>
<tr class="a">
<td><img src="images/fix.gif" alt="Fix" title="Fix" /></td>
<td>DirectResponseLayout is provided to allow direct writing to
ServletOutputStream when VelocityOnlyLayout is the default. To use it
you need to add data.declareDirectResponse(); and then
data.setLayout(&quot;DirectResponseLayout&quot;); to your action class.
Thanks to Peter Courcoux for the code.</td>
<td><a href="team-list.html#"></a></td></tr></table></section><section>
<h2 id="PRE_2.4">Release PRE 2.4</h2>
<tr class="b">
<th>Type</th>
<th>Changes</th>
<th>By</th></tr>
<tr class="a">
<td><img src="images/icon_help_sml.gif" alt="Unknown" title="Unknown" /></td>
<td>Please see</td>
<td><a href="team-list.html#null"></a></td></tr></table></section></section> </main>
</div>
</div>
<hr/>
<footer>
<div class="container-fluid">
<div class="row-fluid">
<p>© 2000–2025
<a href="https://www.apache.org/">The Apache Software Foundation</a>
</p>
</div>
</div>
</footer>
</body>
</html>