blob: 97b93081b86398dc3de9a207b286b3481a4dc322 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<document>
<properties>
<title>Changelog</title>
<author email="hps@intermeta.de">Henning P. Schmiedehausen</author>
</properties>
<body>
<release version="2.3.3" date="in SVN">
<action type="fix" dev="seade">
Minor correction to intake.dtd - added missing fieldClass attribute
to field element.
</action>
<action type="fix" dev="tv" issue="TRB-70" due-to="Susi Berrington">
Fix a memory leak due to an invalid map key type.
</action>
</release>
<release version="2.3.3-RC1" date="2008-06-12">
<action type="update" dev="hoffmann">
Preparing for the Release of Turbine 2.3.3
</action>
<action type="update" dev="seade">
VelocityHtmlEmail now throws EmailException rather than
VelocityEmailException. This has been done for compatibility with
commons-email-1.1, even though commons-email-1.0 is being used for now.
</action>
<action type="update" dev="seade">
Update jar dependencies:<br/>
<ul>
<li>javax.activation to 1.1.1</li>
<li>javax.mail to 1.4.1</li>
<li>commons-configuration to 1.5</li>
<li>commons-fileupload to 1.2.1</li>
<li>commons-io to 1.4</li>
<li>commons-logging to 1.1.1</li>
<li>commons-lang to 2.4</li>
<li>commons-pool to 1.4</li>
<li>log4j to 1.2.15</li>
<li>servletapi to 2.4</li>
</ul>
</action>
<action type="update" dev="tv">
Further simplify the value assignment in Intake fields.
</action>
<action type="add" dev="tv">
Added getBooleans() and getBooleanObjects() to the ValueParser to provide
a "more orthogonal" interface.
</action>
<action type="update" dev="tv">
Use the localize features of the parser to simplify the value assignment
in Intake fields. Made handling of empty values consistent over all number
field types.
</action>
<action type="update" dev="tv">
Important change: The BaseValueParser now consistently returns null for
all get-methods that return an Object, if the parameter name does not exist.
This changes the behaviour of getBigDecimal which used to return 0 in this
case.
</action>
<action type="update" dev="tv">
Initialize the locale of RunData, the ParameterParser and the CookieParser
from the HttpServletRequest. Make RunData.setLocale propagate the locale
setting to the parsers.
</action>
<action type="update" dev="tv">
Set the locale of the ParameterParser and the CookieParser from the default
locale of RunData.
</action>
<action type="add" dev="tv">
Made ValueParser and BaseValueParser locale-aware. Note that the default
locale used is always the default value of the JVM which is different from
the previous behaviour where the locale used was sometimes Locale.US (for
float, double and BigDecimal) and sometimes the JVM-default (for dates).
</action>
<action type="update" dev="seade">
Improved handling of null values for query parameter and path info values
in TurbineURI (avoids a NPE, logs warning message).
</action>
<action type="update" dev="tv">
Update to latest release of Torque.
</action>
<action type="update" dev="seade">
Update to latest release of Fulcrum Yaafi.
</action>
<action type="update" dev="seade">
Eliminate cryptix dependency. The cryptix library contains strong
encryption algorithms causing problems using the software
outside of the US (ECCN). This is a partial backport from Fulcrum so
the real work was done by Siegfried Goeschl.
</action>
<action type="update" dev="tv">
Make SecurityServices run with Torque 3.3.
</action>
<action type="update" dev="tv">
Removed unnecessary locking in the XSLT service. Make relative includes
work again.
</action>
<action type="add" dev="seade">
The init() method in LocalizationTool is no longer declared as final -
you can now extend this class to provide alternative ways of initializing
the locale.
</action>
<action type="add" dev="seade">
Default ServerData values can now be specified in
TurbineResources.properties.
</action>
<action type="update" dev="seade">
Update jar dependencies:<br/>
<ul>
<li>commons-collections to 3.2</li>
<li>commons-configuration to 1.4</li>
<li>commons-dbcp to 1.2.2</li>
<li>commons-digester to 1.8</li>
<li>commons-lang to 2.3</li>
<li>commons-pool to 1.3</li>
<li>log4j to 1.2.14</li>
<li>velocity to 1.5</li>
</ul>
</action>
<action type="fix" dev="seade">
Fixed a couple of NullPointerExceptions that can occur when Intake is
validating multiValued fields.
</action>
<action type="fix" dev="seade">
Fixed a NullPointerExceptions that can occur when Intake is used to
validate a primitive field. Clarified the meaning of Field.isSet() in
Javadoc.
</action>
<action type="add" dev="tv">
Added an extension of LDAPUser named ActiveDirectoryUser to simplify the
authentication against AD servers. Added some documentation with a
configuration example.
</action>
<action type="add" dev="tv">
Extended Intake to allow validators based on comparisons between fields
of the same group. Two example validators are provided, for date ranges
and for integer ranges.
</action>
<action type="add" dev="seade">
Added JSON-RPC Service to support JavaScript to Java AJAX communications
using <a href="http://oss.metaparadigm.com/jsonrpc/">JSON-RPC-Java</a>.
For further details see <a href="services/jsonrpc-service.html">JSON-RPC
Service</a>.
</action>
<action type="add" dev="seade">
Added UI Service as a replacement for the UIManager pull tool (now
deprecated in favor of the backwards compatible UITool).
For further details see <a href="services/ui-service.html">UI Service</a>.
</action>
<action type="update" dev="tv">
Deprecated the DBSecurityService and its associated classes. It has been
replaced by the TorqueSecurityService.
</action>
<action type="remove" dev="tv">
Remove the ComponentService. This has been deprecated long ago.
It has been replaced by the different incarnations of
AvalonComponentService.
</action>
<action type="remove" dev="tv">
Remove long deprecated classes.
<ul>
<li>org.apache.turbine.util.SequencedHashtable</li>
<li>org.apache.turbine.util.StringStackBuffer</li>
<li>org.apache.turbine.util.FileUtils</li>
<li>org.apache.turbine.util.BufferCache</li>
<li>org.apache.turbine.util.QuickSort</li>
<li>org.apache.turbine.util.Comparable</li>
<li>org.apache.turbine.util.Log</li>
<li>org.apache.turbine.util.mail.*</li>
<li>org.apache.turbine.util.validation.*</li>
<li>org.apache.turbine.util.upload.*</li>
<li>org.apache.java.lang.*</li>
<li>org.apache.java.security.*</li>
<li>org.apache.turbine.util.db.*</li>
<li>org.apache.turbine.services.resources.TurbineResources</li>
<li>org.apache.turbine.services.db.*</li>
</ul>
</action>
<action type="add" dev="tv">
Extended HtmlPageAttributes to allow generic &lt;link /&gt; tags in the
HTML head section.
</action>
<action type="add" dev="seade" issue="TRB-27" due-to="Thomas Vandahl">
Added Thomas's variation on Siegfried's TurbineYaafiComponentService that
allows Fulcrum components to be used in Turbine 2.3 in a fulcrum-yaafi
container.
</action>
<action type="add" dev="tv">
Extended the LocalizationService to provide formatting facilities.
</action>
<action type="add" dev="tv">
Extended Intake to care for localization and to allow user-defined
field types (type "custom"). The Validator interface has been extended
so custom validators must be adjusted unless they extend DefaultValidator.
</action>
<action type="update" dev="seade" issue="TRB-9" due-to="J&#252;rgen Hoffmann">
Intake now handles the case where the mapToObject does not map to all
fields in the group.
</action>
<action type="fix" dev="seade" issue="TRB-9" due-to="J&#252;rgen Hoffmann">
Intake was not handling empty values correctly.
</action>
<action type="fix" dev="seade" issue="TRB-8" due-to="Gunther Olesch">
A FileItem in a ParameterParser added to TurbineURI or TemplateURI was
resulting in a NPE.
</action>
<action type="fix" dev="seade" issue="TRB-16" due-to="J&#252;rgen Hoffmann">
TurbineURI was mishandling the empty String.
</action>
<action type="fix" dev="seade" issue="TRB-14" due-to="J&#252;rgen Hoffmann">
Intake was not loading the correct Default Validators when the rules for
a field are empty.
</action>
</release>
<release version="2.3.2" date="2005-10-03">
<action type="fix" dev="seade">
Exceptions that occur in Actions once again redirect to the error page.
</action>
</release>
<release version="2.3.2-rc2" date="2005-09-19">
<action type="fix" dev="henning" issue="TRB-5" due-to="Thomas Vandahl">
The skin properties file must be loaded as stream from the filesystem
and not using the getScript() method.
</action>
<action type="update" dev="henning">
Make sure that the source can still be compiled and tested under JDK 1.3.1.
</action>
</release>
<release version="2.3.2-rc1" date="2005-09-11">
<action type="fix" dev="henning" issue="TTWS67" due-to="Paul Witherow">
Rewrote the DataStreamParser to actually parse CSV and TSV datastreams
correctly with respect to missing fields, EOL, EOF conditions and
quotes. Added a unit test to verify the correct operation.
</action>
<action type="update" dev="henning">
XML-RPC 2.0 contains the MinML parser which is used as default.
Remove the code from the XML-RPC service, which references
xerces thus removing this implicit dependency. Another SAX
compliant parser can still be selected using the parser property
of the XML-RPC service.
</action>
<action type="fix" dev="henning" issue="TTWS62" due-to="Dan Price">
Added a change to the Localization facade class which should help
Jetspeed 1.x with Localization.
</action>
<action type="update" dev="henning">
Reworked BaseValueParser and DefaultParameterParser to be more
resilient against bad or missing values. Added a number of Unit tests
to check for these.
</action>
<action type="fix" dev="henning" issue="TTWS58" due-to="Edmund Urbani">
file upload items should be listed in DefaultParameterParser.keySet().
</action>
<action type="update" dev="henning">
All serializable classes have explicit SerialVersionUID fields.
</action>
<action type="fix" dev="henning" issue="TTWS16" due-to="Oliver Eikemeier">
Make sure that UIManager strips leading and trailing
slashes from referenced objects and configured paths.
</action>
<action type="update" dev="henning">
Add a maven goal to generate SQL with Torque. Removed old SQL files
from src/sql. Add some documentation on how to build the SQL files.
</action>
<action type="update" dev="henning">
This release will have JDK 1.4.x as primary build platform. If you intend
to build on an older (1.3) JDK, you must uncomment a number of dependency
libraries in the project.xml descriptor.
</action>
<action type="update" dev="henning">
Update jar dependencies:<br/>
<ul>
<li>Framework to 4.3 (including api and impl)</li>
<li>Beanutils to 1.7.0</li>
<li>Collections to 3.1</li>
<li>Configuration to 1.1</li>
<li>Digester to 1.7</li>
<li>Lang to 2.1</li>
<li>dom4j to 1.6.1</li>
<li>excalibur-component to 2.1</li>
<li>excalibur-instrument to ...-api 2.1</li>
<li>excalibur-logger to 2.1</li>
<li>excalibur-pool to ...-api 2.1</li>
<li>javamail to 1.3.3</li>
<li>oro to 2.0.8</li>
<li>log4j to 1.2.11</li>
<li>logkit to avalon-logkit 2.1</li>
<li>stratum to 1.0</li>
<li>velocity to 1.4</li>
<li>village to 2.0</li>
<li>xalan to 2.7.0</li>
<li>xmlrpc to 2.0</li>
<li>hqldb to 1.7.3.3 (testing)</li>
</ul>
</action>
<action type="update" dev="henning">
Get rid of direct File() access in TurbineXSLTService and replace it with URL
access through the servlet container. The change also allows to place the
repository of XSL files elsewhere.
Replace the cache Map() with a LRUMap() to avoid infinite memory growth.
Add transform() methods having an additional parameter to forward a parameter
set to the XSLT. The parameters can be used in the style sheet.
Patches contributed by Thomas Vandahl.
</action>
<action type="update" dev="henning">
Change UIManager to allow customization of directories and default values.
Get rid of File() in UIManager.
Allow UIManager to return relative links if configured.
Patches contributed by Thomas Vandahl.
</action>
<action type="update" dev="henning">
Bump javamail to version 1.3.2<br/>
Build with commons-email 1.0-RC6.
</action>
<action type="fix" dev="henning">
Fix the build process bug that let some of the reports end up in wrong directories.
</action>
<action type="update" dev="henning">
Make the default encoding for incoming requests configurable. This allows you to post
forms from UTF-8 or other encodings into Turbine.
</action>
<action type="update" dev="seade">
Update DateFormatter to use DateFormatUtils from commons lang.
</action>
<action type="update" dev="seade">
commons-codec was upgraded to 1.3.
</action>
<action type="update" dev="henning">
Fix the Intake DateString validator not to throw an NPE whenever a
slightest mistake was done in configuring a date field. Make sure
that even fields without a formatting rule will parse at least standard
date formats.
</action>
<action type="update" dev="henning">
Intake FileItemFields could not be used when calling IntakeGroup.setProperties(obj) because
the field did not look into the right table for retrieving the value object.
</action>
<action type="update" dev="seade">
The velocity page formatting macros have been updated to generate xhtml
compatible html.
</action>
</release>
<release version="2.3.1" date="2004-10-29">
<action type="update" dev="henning">
JavaBaseFactory executed a Class.forName() every time it was
searching for a named class, which showed up as a very costly
API call in our profiling. A synchronized cache has been added
to cache previously obtained class instances inside this class.
</action>
</release>
<release version="Turbine 2.3.1-rc2">
<action type="update">
Fix the brown paper bag bug that made RC1 unusable
with Velocity. This is an implicit incompatibility between
a change in Commons Configuration and an assumption in
Turbine that threw a class cast exception in Commons
Collections and crashed Velocity. Isn't Java a cool thing?
</action>
<action type="update" issue="TTWS63">
Intake rule parser sometimes corrupted rule message text.
</action>
</release>
<release version="Turbine 2.3.1-rc1">
<action type="update">Turbine no longer configures the logging factory for
commons-logging explicitly. If you relied on this behaviour,
you must add a commons-logging.properties file to your
application as described in the <a
href="http://commons.apache.org/logging/apidocs/org/apache/commons/logging/package-summary.html">commons
logging documentation</a>
</action>
<action type="update">commons-configuration was upgraded to 1.0-rc1. All getVector() method calls on the
Configuration interface must be replaced with getList().
</action>
<action type="update">commons-lang was upgraded to 2.0.
</action>
<action type="update">commons-collections was upgraded to 3.0.
</action>
<action type="update">stratum was upgraded to 1.0-b5.
</action>
<action type="update">commons-logging was upgraded to 1.0.4.
</action>
<action type="update">
Intake was extended to provide Field values with &quot; escaped as
&amp;quot; to provide valid values for HTML form inputs.
</action>
<action type="update">
Intake now handles multiValued="true" on type="int" 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.
</action>
<action type="update">
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 > 0 rule is no longer synonymous
with required=true.
</action>
<action type="update">
Actions triggered from html input elements with type="button" are
now processed correctly (the trailing ".x" and ".y" are removed from
the event names).
</action>
<action type="update">
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).
</action>
<action type="update">
Intake was fixed so that DateString will use the "formatn" (where n
&gt;= 1) rules to parse the input and then the "format" rule to format
it (the "format" rule is also used to parse the date if there are no
"formatn" rules or they are not able to parse it). In order to
retrieve the correctly formatted DateString value you need to use
<em>$group.foo.StringValue</em> rather than <em>$group.foo.Value</em>
(you can do this for all values, not just DateString).
</action>
<action type="update">
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
<em>group.setProperties(obj)</em> (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).
</action>
<action type="update">
Fixed the intake DateString flexible rule so that it applies to the
format rules and not just to the default locale format.
</action>
<action type="update">
DateFormatter now allows for a different date format to be provided
via <em>tool.dateTool.format</em> in TurbineResources.properties.
</action>
<action type="update">
DirectResponseLayout is provided to allow direct writing to
ServletOutputStream when VelocityOnlyLayout is the default. To use it
you need to add <em>data.declareDirectResponse();</em> and then
<em>data.setLayout("DirectResponseLayout");</em> to your action class.
Thanks to Peter Courcoux for the code.
</action>
<action type="update">
Upgraded to commons-pool-1.1
</action>
<action type="update">
HttpUtils.httpDateFormat had the year set as 'yyyyy', should be 'yyyy' therefore
setting expiry dates failed.
</action>
<action type="update">
TTWS60: HtmlPageAttributes setBackground sets the incorrect key name.
</action>
</release>
<release version="Turbine 2.3">
<action type="update">
It is now necessary to use Maven to build Turbine 2.3. The old,
ant-based build system is no longer supported and actively removed
from the distribution.
</action>
<action type="update">
Turbine requires the Maven Torque plugin to build. If you don't
use at least Maven 1.0b9, you will have to install it manually
before you can recompile the source code.
</action>
<action type="update">
The IntakeService has been refactored, introducing two Abstract classes; the
DefaultValidator and the NumberValidator. They both contain rules which are
applicable to all Validator's and NumbeValidator's respectively. Unnecessary use
was being made of (Old) NumberValidator which used BigDecimals, cleaned this up
implementing concrete classes for all Number Types. Simplified definition of
(number &amp; required) rules in Intake.xml.
</action>
<action type="update">
The LoginUser action no longer checks to see if the user object is already
in the session and returns if it is found. The user will always be there
now. If you have a custom LoginUser action that still performs this
check, you will need to remove it in order for your login action to work.
</action>
<action type="update">
AccessControlList is now an interface and its implementation is in
TurbineAccessControlList. This is now configurable and can be replaced
by a custom AccessControlList implementation. If older compiled code
suddently throws IncompatibleClassChange errors, just recompile and
they go away.
</action>
<action type="update">
All deprecated java code was removed (incl. support for webmacro, freemarker
and castor). Make sure to not get any deprecation warnings before you
switch to 2.3!
</action>
<action type="update">
The LoggingService was removed. Deprecated everything in the utils.Log class.
</action>
<action type="update">
The TurbineResources Service was removed and replaced with commons-configuration.
</action>
<action type="update">
The service initialization code has been changed. This is important if
you write services yourself. You should supply a constructor which takes
no parameters. The usage of a constructor which takes a RunData object
is deprecated and might be removed later. If you're using the supplied
services, you shouldn't notice any change.
</action>
<action type="update" issue="TTWS38">
BaseValueParser.getInteger(String name) now returns null if the
key name is not found - the old behaviour was to return new Integer(0).
For consistency a similar change was made to getBool() and
getBigInteger().
</action>
<action type="update">
The velocity mail classes (o.a.t.util.velocity package) now throw
VelocityEmailException instead of MessagingException if a problem
occurs.
</action>
<action type="update">
The handling of "," as a separator in template names was tightened and
clarified. Many places where you could get away with using "/" as a separator
or use a leading "/" for a template name now no longer work. There is a long
description on how to use and not to use this in the javadoc for
org.apache.turbine.services.template.TurbineTemplateService. If you want to volunteer
for work on Turbine, feel free to whip this into an xdoc and put it into the
documentation tree.
</action>
<action type="update">
Some classes have been moved into different packages to allow cleanup and
clarification of their usage. The old locations are still available but
deprecated. Examples are the parser classes from org.apache.turbine.util to
org.apache.turbine.util.parser and some of the pull tools from org.apache.turbine.util.pull
to org.apache.turbine.services.pull.tools
</action>
<action type="update">
getSizeMax() in the UploadService interface and implementations changed
from int to long to reflect a change that was made in the underlying
commons-fileupload component.
</action>
<action type="update">
Added ability to specify either the class TurbineResources.properties file
or a new TurbineConfiguration.xml file. TurbineConfiguration.xml allows
Turbine to pull it's configuration values from multiple locations. Please
read the howto for more information.
</action>
<action type="update">
Added a Howto describing using Hibernate with Turbine. The actual code is
currently not part of the Turbine distribution due to licensing issues, but is very
easy to implement due to Turbine support of Avalon Components.
</action>
<action type="update">
Changed TurbineUser so that when either permanent or temporary values are
stored, if the required hashtable was missing, then it was created. This
happened in conjunction with the PassiveUserManager. Additionally, the
setTempStorage(Hashtable newTempStorage) did not actually assign the new
Hashtable. Cleaned up some of the code so the parallel permanent and temp
data storage methods followed the same patterns. Created a cactus testcase
to test TurbineUser.
</action>
<action type="update">
Changed scheduler so that if it is NOT enabled, then it doesn't attempt
to connect to the database and retrieve jobs. This prevents a spurious
no data source error from showing up in the turbine logs on startup. Added
a cactus test to test the fix.
</action>
<action type="update">
A new pull tool is available in the session scope called $sessionData.
This tool can be used to store data that will persist for the duration
of the session. This should be used instead of the getTemp() and
setTemp() methods in TurbineUser.
</action>
<action type="update">
The use of getPerm() and setPerm() methods in Turbine user have been
deprecated. See the Extending Turbine User how-to for using additional
database columns for storage if you are using the DBSecurityService.
You can also switch to the TorqueSecurityService where it is much easier
to use additional columns.
</action>
<action type="update">
Perm scope pull tools have been deprecated. If you use these type of
tools, you need to switch to authorized scope pull tools. These tools
are initialized with a user object. Any state information that you were
storing in the tools itself, you will now need to store in the user
object.
</action>
<action type="update">
Turbine used to remove all data from the session before executing
the login action. This no longer happens. Instead, the session
is invalidated before calling to logout action.
</action>
<action type="update">
There is a new pull tool that makes it easy to format
Date objects into Strings. See
org.apache.turbine.services.pull.util.DateFormatter for details.
</action>
<action type="update">
Backported the Scheduler service from Fulcrum. Other Scheduler
related changes include:
<action type="update">
The scheduler can now be enabled/disabled while Turbine is running.
</action>
<action type="update">
A new pull tool is available to allow access to the Scheduler service
from Velocity templates. See
org.apache.turbine.service.scheduler.SchedulerTool for details.
</action>
<action type="update">
TurbineException is now thrown instead of Exception.
</action>
<action type="update">
Torque generated objects are now used to for accessing the database. You
can now add additional fields for the OM objects without modifing the source
code. The OM objects are generated from scheduler-schema.xml
</action>
<action type="update">
updateJob(job) can be used to add a new job. It will perform the correct
action (insert or update) for you. addJob(job) simply calls updateJob(job).
</action>
<action type="update">
A new facade class has been created for easier access to the Scheduler Service.
It is org.apache.turbine.services.schedule.TurbineScheduler.
</action>
</action>
<action type="update">
Backported the Crypto Service from Fulcrum.
</action>
<action type="update" issue="TTWS24">
With this patch LDAP security services can have users, groups,
roles and permissions in the LDAP repository. It also works with users in
LDAP and the rest in the Database. <br/>
Sample configuration files for Openldap can be found
<a href="http://cvs.apache.org/viewcvs/jakarta-turbine-2/conf/openldap/">
here</a>.
</action>
<action type="update" issue="TTWS34">
Implemented the following functions in LDAPUserManager:
store(), createAccount() and removeAccount().
</action>
<action type="update">
added new Logging code which uses commons-logging everywhere.
</action>
<action type="update">
added new Configuration code based on commons-configuration. Switched
all configuration requests to commons-configuration.
<action type="update">
Configuration values can now be stored in XML, .properties, as well as JNDI Tree.
</action>
<action type="update">
Configuration values can be overridden. If you specify JNDI and the .xml, if a value
is found in JNDI, then it is used. Useful for overriding environment specific values
like mail servers or whether Velocity templates are reloadable.
</action>
</action>
<action type="update">
added Log4j configuration and startup.
</action>
<action type="update">
removed all remaining Torque code.
</action>
<action type="update">
VelocityLayout is now the proposed default layout.
VelocityECSLayout might go away post-2.3.
See <a href="http://wiki.apache.org/turbine/Turbine2/VelocityOnlyLayout">
Moving to VelocityOnlyLayout</a> to see what changes need to be made to your
application(s).
</action>
<action type="update">
TurbineException, TurbineRuntimeException, and TurbineError all extend
the corresponding "Nestable" exception type from commons-lang.
</action>
<action type="update">
VelocityHtmlMail can now be used in a scheduled job. It has a new constructor
accepting a velocity context object.
</action>
<action type="update">
Intake changes:
<action type="update">
Backported changes from Fulcrum version
</action>
<action type="update">
IntakeException is now thrown from intake methods instead of
TurbineException and Exception.
</action>
<action type="update">
Multiple XML definition files can be used.
</action>
<action type="update">
Logging has been improved to give more information when an
error occurs.
</action>
<action type="update">
The DTD has been updated and fully documented!
</action>
<action type="update">
Intake now uses commons-pool for pooling.
</action>
<action type="update">
intake.dtd is now packaged in the turbine.jar file. If your
intake.xml file validates against
jakarta.apache.org/turbine/dtd/intake.dtd, then the DTD included
in the jar file will be used instead of the online version.
</action>
<action type="update">
The DTD resolved for intake will now look for intake.dtd on the
class path when the DTD in the XMl file is
http://jakarta.apache.org/turbine/dtd/intake_2_2_1.dtd. The application
functions in the same way. This was done to allow XML editors to use
the correct version of the DTD.
</action>
<action type="update">
The field object has two new methods to help in creating the HTML
input tags for the field. They are getDisplaySize() and getMaxSize().
The display size is set in the xml definition. The max size is pulled
from the maxLength rule (if defined).
</action>
<action type="update">
The setDefaultValue() method on the Field object is now public. This
will allow you to assign a value to a field for display on a form that
does come from a mapped object. Before this change, your only option
was to defined the default value in intake.xml.
</action>
</action>
<action type="update">
All deprecated calls to the old org.apache.turbine.util.Log have
been replaced with calls to org.apache.commons.logging.Log.
</action>
<action type="update">
A new SessionService has been added. This will allow access to all
sessions in the current context if you use Servlet API 2.3 or better.
</action>
<action type="update">
The non-secure web server for handling xml-rpc requests
will now use the services.XmlRpcService.address setting for
the address on which to listen for requests. If the setting
is not found in TR.props, it will use the default of 0.0.0.0.
This address will cause the server to listen on all
addresses of a multi-homed machine.
</action>
<action type="update">
Nearly all of the methods of o.a.t.util.StringUtils has been deprecated. You should change your
application code to use StringUtils from commons-lang.
</action>
<action type="update">
All classed in the org.apache.turbine.util.mail package have been deprecated. You should change your
application code to use commons-mail instead.
</action>
<action type="update">
Turbine now uses commons-fileupload. The org.apache.turbine.util.upload
package has been deprecated.
</action>
<action type="update">
The Pull Service got a new scope: authorized tools. These are like Session Tools but only
available after the user logged in.
</action>
<action type="update">
The Pull Service got a new type of tools: RunDataApplicationTools. These tools get the
current RunData object passed at every refresh(). This type obviously makes sense only
for non-request scope tools.
</action>
<action type="update">
Some services got static facade classes: FactoryService, JspService, RunDataService, SchedulerService.
</action>
<action type="update">
Turbine can use the ConfigurationFactory from commons-configuration to load all kinds of configuration types
like XML, JNDI or (still) plain properties files.
</action>
<action type="update">
A completely new URI handling scheme was added and is now the proposed default method to handle URI representations
in Turbine. The older URI handling classes like ContentURI and DynamicURI will go after the 2.3 release.
</action>
<action type="update">
A new Security Service is available: TorqueSecurityService. It has the same functionality as the DBSecurityService
but allows the usage of arbitrary Torque generated peer classes and objects as security objects.
</action>
<action type="update">
The security object get methods from Security Service have been deprecated and replaced by methods which are
able to reference Objects by Name and by Primary Key.
</action>
<action type="update">
The TurbineDB Service has been deprecated. Use Torque and the Component Service to start Torque.
</action>
<action type="update">
It is possible to debug pressure on the PoolService by setting services.PoolService.pool.debug to true
in the TurbineResources.properties.
</action>
<action type="update">
Turbine now has some integration for Avalon Components. It can start
Avalon based components with the new AvalonComponentService.
</action>
<action type="update">Added a new TurbineMacros file to the turbine jar, which contains some helper
macros for Velocity Templates. Currently there are only some macros to be used
with VelocityOnlyLayout to render the page attributes like in VelocityECSLayout
based pages.
</action>
<action type="update">
The ComponentService (using the stratum lifecycle interfaces) is
deprecated. It will be removed after the 2.3 release as the stratum
package is unmaintained. We use the new AvalonComponentService to
initialize Torque.
</action>
<action type="update">
ActionEvent and VelocityActionEvent can "ignore" eventSubmit_&lt;xxx&gt; events if they
contain an empty or a zero value. This behaviour is controlled by the "action.eventsubmit.needsvalue"
property that defaults to "off", which means no change from the pre-2.3 behaviour. The new behaviour
is useful if you have multiple event fields in a form and only one should be selected
(e.g. by a client side java script application).
</action>
<action type="update">
VelocityService now uses the EventCartridge Code to catch and log invocation errors from templates.
This is very useful when debugging pull tools, because you get the actual exception in the log and
not only the velocity internal stack trace. You can switch this behaviour off by setting
"services.VelocityService.catch.errors" to off or false.
</action>
<action type="update">
Intake can now assign "empty" values to fields which are not returned or left out by the browser. This
is useful if you want your string fields not to map to null if the user does not enter anything.
</action>
<action type="update" issue="TTWS25">
Removed deprecated call to TurbineDB.
</action>
<action type="update">
TRQD10: Extending Turbine User How-to for T2.2
</action>
<action type="update" issue="TTWS20">
Intake can not set mapped attributes to null.
</action>
<action type="update">
Changed made to scheduled jobs are now recognized by the scheduler
service. Before, it would only recognize changes to the next run
time.
</action>
<action type="update">
Fixed null pointer exception during initialization of IntakeTool when there are
no groups defined in intake.xml
</action>
<action type="update" issue="TTWS41">
PrimaryKey not set on TurbineUser after insert.
</action>
<action type="update">
Cookies now work properly. A NullPointerException was being thrown
during the call to data.getCookies() if no cookies were present. Also,
the path for cookies was being set incorrectly. Both of these issues
have been fixed.
</action>
<action type="update">
The pull service now really refreshes non-request tool every time a tool is requested.
</action>
</release>
<release version="Turbine 2.2 (= 2.2-rc2)">
<action type="update" issue="TTWS1">
TemplatePageAttributes enhancements.
</action>
<action type="update" issue="TTWS5">
Reference support for DynamicURI.
</action>
<action type="update" issue="TTWS13">
IntakeTool.getGroups() should be public.
</action>
</release>
<release version="Turbine 2.2-rc1">
<action type="update">
Enhancements to support Apache XML-RPC versions 1.2 alpha 1 and 2.
</action>
<action type="update">
TRQD2: Update to intake-howto to mention remove()
</action>
</release>
<release version="Turbine 2.2-b2">
<action type="update">
The coupled version of Torque has been removed from Turbine 2.2!
Get a full list of changes at the
<a href="http://db.apache.org/torque/changes-report.html">Torque-site</a>.
</action>
<action type="update">
the coupled version of torque has been removed.
</action>
<action type="update">
Maven is used as build system for Turbine 2.2
</action>
<action type="update">
removed antiquated redirect logic.
</action>
<action type="update">
You can use log4j properties directly.
</action>
<action type="update">
The configuration package has been moved from stratum to commons
</action>
<action type="update">
BaseValueParser.setProperty() changed from private to protected
</action>
<action type="update">
Fixed IllegalStateException when removing an attribute from an invalid
session (patch by David Vandegrift - dvandegrift@bluearc.com)
</action>
<action type="update">
Fixed NumberFormatException in UUIdGenerator.
</action>
</release>
<release version="Turbine 2.2b1">
<action type="update">
Torque and Fulcrum (the service framework) have been decoupled in preparation
for Turbine 3.0. The decoupled versions can be used with Turbine 2.2.
We strongly recommend to use the decoupled versions (some of the 'old' services
must be used, because they are used internally by Turbine)<br/>
If you wrote your own services you should also change them to be Fulcrum
services to make them work with Turbine 3.x<br/>
</action>
<action type="update">
The Service interface was extended to allow integration of Service
implementations: <br/>
<b>Service.getName()</b> <br/>
since most Service implementations extend BaseService
(which implements a public getName method), this should not be an issue.
</action>
<action type="update">
<b>ECS, Freemarker and Webmacro</b> services/modules are marked
<b>deprecated</b>. You should use Velocity instead.
</action>
<action type="update">
<b>Castor</b> service is marked as <b>deprecated</b>. You should use
om/peer classes instead!
</action>
<action type="update">
The XSLT Service is updated to use Xalan 2.0
</action>
<action type="update">
Improved datatype mappings for mysql, oracle, postgresql, sapdb
</action>
<action type="update">
adding support for DB2 on AS400 (patch by Sweaver@rippe.com).
</action>
<action type="update">
adding support for secure connections in the xmlrpc service.
</action>
<action type="update">
Added a configuration parameter to torque, addTimeStamp, that allows the
user to generate files without a timestamp. Default is true, timestamps
will be generated.
</action>
<action type="update">
Criteria.Criterion implements Serializable
</action>
<action type="update">
DB implements Serializable
</action>
<action type="update">
torque: id-methods <i>sequence</i> and <i>autoincrement</i> are
<b>deprecated</b>. You should use <b>native</b>. torque uses the method
provided by your database
</action>
<action type="update">
added static strings for ISNULL and ISNOTNULL to Criteria.
</action>
<action type="update">
added getDateString() method to format date fields to DB.
</action>
<action type="update">
added VelocityDirectLayout/Screen to make it possible to embed
servlet/JSP outputs into a Velocity template used within Turbine.
(patch by raphael.luta@networks.groupvu.com)
</action>
<action type="update">
added an easy to use localization pull tool.
</action>
<action type="update">
Javadocs improvements.
</action>
<action type="update">
Documentation improvements.
</action>
<action type="update">
fixed error in Mssql unique.vm template (removed a blank line)
</action>
<action type="update">
[2301] Embedding message parts in HtmlEmail throws NullPointerException.
</action>
<action type="update">
bugfix for BigDecimal attributes with default value
</action>
<action type="update">
fixed handling of sequences for db2, oracle, postgresql, sapdb
</action>
<action type="update">
fixed syntax for create index (postgresql)
</action>
<action type="update">
fixed problem for postgres with blob style column in TurbineUser table.
(patch by Jerome Veryleyen)
</action>
<action type="update">
BaseUnicastRemoteService.java: Corrected method name (setName -> getName).
</action>
<action type="update">
fixed Roleset.add(RoleSet) (patch by lujin@yahoo.com)
</action>
<action type="update">
fixed database - defaultIdMethod (torque)
</action>
<action type="update">
fixed date formating problem with Oracle.
</action>
<action type="update">
fixed problem when ignoreCase was used with ISNULL or ISNOTNULL.
</action>
<action type="update">
fixed Option object initialisation in SelectorBox
(patch by Kurt Grafius kurtg@jvoom.com)
</action>
</release>
</body>
</document>