blob: 9c009851249f7fba0ba3612db23c270e1bad1538 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<document>
<properties>
<title>Changes</title>
<author email="epugh@opensourceconnections.com.com">Eric Pugh</author>
</properties>
<body>
<release version="5.2-SNAPSHOT" date="in Git">
<action type="update" dev="gk">
Minor version update to Torque 5.1, Jackson to 2.14.0-rc2, docker-testcontainers to 1.17.5.
</action>
<action type="update" dev="gk">
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.
</action>
</release>
<action type="add" dev="gk">
Add Annotation @TurbineTool to annotate tools for advanced usage in action methods.
</action>
<release version="5.1" date="2021-11-23">
<action type="update" dev="painter">
Updated dependencies: yauaa to 5.23, commons-lang3 to 3.12, jython-standalone to 2.7.2
Update turbine-parent 8 (released)
</action>
<action type="update" dev="gk">
Update yauaa to 5.21 ( CVE-2020-13956), junit to 4.13.1 (CVE-2020-15250)
</action>
<action type="add" dev="tv">
New service URL mapper implementation: render beautified URL and map parameters back when parsed.
</action>
<action type="update" dev="tv">
Add reasonable hashCode(), equals() and toString() methods to URIParam class
</action>
<action type="update" dev="gk">
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
</action>
<action type="update" dev="tv">
Better concurrency in TurbineRundataService
</action>
<action type="update" dev="tv">
Replace charset strings with Charset objects where possible
</action>
<action type="add" dev="gk">
Add Java Docker Testcontainers with minimal impact for default build in profile docker-testcontainer.
</action>
<action type="update" dev="painter">
Update turbine-parent 6 and fulcrum-parser 2.0.1
</action>
</release>
<release version="5.0" date="2019-05-28">
<action type="update" dev="tv">
Change all Assembler modules to interfaces
</action>
<action type="update" dev="tv">
Replace unmaintained UADetetctor with YAUAA
</action>
<action type="update" dev="tv">
Replace all commons-logging references with log4j2
</action>
<action type="update" dev="tv">
Direct Avalon logging to log4j2
</action>
<action type="update" dev="tv">
Update jython to jython-standalone 2.7.1
</action>
<action type="update" dev="tv">
Use log4j-jcl instead of redirection through slf4j
</action>
<action type="update" dev="jp">
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
</action>
<action type="update" dev="gk">
Update from log4j to log4j2, redirect JCL to slf4j
</action>
<action type="update" dev="jp">
Update commons-configuration2 to 2.4
</action>
<action type="update" dev="jp">
Update from lang to commons lang3
</action>
<action type="add" dev="tv">
Add ServiceBroker.getApplicationRoot() to allow services to get their root directory
</action>
<action type="add" dev="tv">
Add Turbine.getApplicationRootAsFile()
</action>
<action type="update" dev="tv">
Make PipelineData AutoCloseable and improve robustness of Turbine exception handling
</action>
<action type="update" dev="tv">
Update dependency commons-configuration to 2.3
</action>
<action type="add" dev="gk">
Adding screens for plain JSON
</action>
<action type="update" dev="gk">
Configuration pathes and log4j path are now all relative to base configuration file (included from).
</action>
<action type="update" dev="tv">
Update dependency commons-configuration to 2.2
Configuration pathes are now all relative to application root.
</action>
<action type="update" dev="tv">
Update dependency commons-lang to 3.7
</action>
<action type="update" dev="tv">
Update dependencies fulcrum-parser to 2.0.0-SNAPSHOT and fulcrum-intake to
2.0.0-SNAPSHOT
</action>
<action type="remove" dev="tv">
Remove dependency on fulcrum-upload
</action>
<action type="remove" dev="tv">
Remove dependency on commons-collections
</action>
<action type="remove" dev="tv">
Remove dependency on commons-io
</action>
<action type="update" dev="tv">
IMPORTANT: Update HtmlPageAttributes to deliver a default Doctype for HTML 5
Add a test.
</action>
<action type="update" dev="tv">
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.
</action>
<action type="add" dev="tv">
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()
</action>
<action type="update" dev="tv">
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
</action>
</release>
<release version="4.0.1" date="2018-02-21">
<action type="update" dev="gk">
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.
</action>
<action type="update" dev="painter">
input.encoding property (velocity) is set now default for locale.default.charset (both default to ISO-8859-1).
</action>
<action type="update" dev="gk">
Updated dependency versions: commons-codec to 1.11, commons-beanutils to 1.9.3, mockito-core to 2.13.0.
</action>
<action type="fix" dev="gk" due-to="Jeffery Painter">
Each call in Turbine managers to the user delegate with a user object parameter now gets the wrapped user (the userDelegate).
</action>
</release>
<release version="4.0" date="2017-11-06">
<action type="update" dev="gk">
OWASP vulnerability check
</action>
<action type="update" dev="gk">
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.
</action>
<action type="update" dev="gk">
Update/Add Tests for Turbine and Fulcrum Security Service version 1.1.1 interaction / handling
</action>
<action type="update" dev="gk">
Using slf4j over log4j (currently version 1.7.25)
</action>
<action type="update" dev="tv">
Assembly bugfixes
</action>
<action type="update" dev="tv">
Replace mockobjects with Mockito
</action>
<action type="fix" dev="tv">
Fix NPE in LogoutAction: draw user from session instead of RunData. Add test.
</action>
<action type="update" dev="tv">
Update BrowserDetector to support contemporary browsers.
</action>
<action type="remove" dev="tv">
Remove TurbineAvalonComponentService including the long deprecated Excalibur dependency
</action>
<action type="remove" dev="tv">
Remove methods in RunData referring to Jakarta ECS.
</action>
<action type="update" dev="tv">
Replace xstream with JAXB when reading the pipeline descriptor.
</action>
<action type="add" dev="tv">
Add annotation support for configuration values
</action>
<action type="update" dev="tv">
Improve performance of AnnotationProcessor by caching annotations. Add performance test.
</action>
<action type="update" dev="tv">
Replace synchronized array in TurbinePipeline with CopyOnWriteArrayList (20% faster). Add performance test.
</action>
<action type="update" dev="tv">
Replace several synchronized maps with ConcurrentMaps
</action>
<action type="add" dev="tv">
Add annotation processing to pull tools
</action>
<action type="remove" dev="tv">
Eventually remove all static service accessors and replace them by lookups or annotations
</action>
</release>
<release version="4.0-M2" date="2015-12-21">
<action type="update" dev="tv">
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
</action>
<action type="remove" dev="tv">
Remove all deprecated methods using RunData as a parameter to clean up the API
Further cleanup is needed.
</action>
<action type="add" dev="tv">
Add QuartzSchedulerService
</action>
<action type="update" dev="tv">
Update dependencies
- fulcrum-security to 1.1.0
- fulcrum-intake to 1.2.0
</action>
<action type="update" dev="gk">
Update to Torque 4.0.0
</action>
<action type="add" dev="tv">
Add Annotation @TurbineActionEvent to annotate action methods
with arbitrary event names.
</action>
<action type="update" dev="tv">
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
</action>
<action type="update" dev="tv">
Update Turbine Parent POM to version 3
</action>
<action type="add" dev="tv">
Add Annotation @TurbineLoader to inject a loader
instance into objects.
</action>
<action type="update" dev="tv">
Switch to Fulcrum Security API
</action>
<action type="update" dev="tv">
Refactor handling of annotated fields into AnnotationProcessor.
</action>
<action type="add" dev="tv">
Add Annotation @TurbineConfiguration to inject a configuration
instance into objects.
</action>
<action type="fix" dev="tv">
Fix Velocity logging.
</action>
<action type="update" dev="gk">
Reintroduce VelocityCachedLayout/Screen classes
</action>
<action type="update" dev="tv">
Adjust site for Apache Turbine Parent POM version 2
</action>
<action type="update" dev="tv">
Use Apache Turbine Parent POM version 2
</action>
<action type="add" dev="tv">
Add Annotation @TurbineService to inject Turbine service instance into assemblers
such as screens, actions, navigations etc. and pipeline valves.
See VelocityActionWithServiceInjection for an example.
</action>
<action type="add" dev="tv">
Add class cache for TurbineRunDataService
</action>
<action type="update" dev="tv">
Remove duplicate data storage in DefaultTurbineRunData and
DefaultPipelineData
</action>
<action type="update" dev="tv" issue="TRB-72">
Services that implement TurbineServiceProvider are inited early by default
</action>
<action type="update" dev="tv">
Switch from String keys to Class keys for AssemblerBrokerService
</action>
<action type="update" dev="tv">
Refine interface of PipelineData and add user and acl objects
to pipelineData.
</action>
<action type="fix" dev="tv">
Fix possible NPE in TurbinePullService.
</action>
<action type="fix" dev="tv" issue="TRB-82">
Use lastIndexOf() to get the template extension in TurbineTemplateService.
</action>
<action type="fix" dev="tv">
Fix TurbineYaafiComponentService to set its applicationRoot properly.
</action>
<action type="fix" dev="tv">
Fix TurbineMacros to comply with the implementation of HtmlPageattributes
</action>
<action type="update" dev="tv">
Continue generification
</action>
<action type="fix" dev="ludwig">
Port the handling of template encoding from Turbine 2.3.3
</action>
</release>
<release version="4.0-M1" date="2011-06-23">
<action type="update" dev="tv">
Updated dependency on commons-collections to 3.2.1
</action>
<action type="update" dev="tv">
Updated dependency on commons-configuration to 1.6
</action>
<action type="update" dev="tv">
Updated dependency on commons-lang to 2.5
</action>
<action type="update" dev="tv">
Updated dependency on commons-email to 1.2
</action>
<action type="update" dev="tv">
Move to Java-5 generics.
</action>
<action type="update" dev="ludwig">
Move to Java-5 generics.
</action>
<action type="fix" dev="tv" issue="TRB-80" due-to="Georg Kallidis">
TurbineURI was using the deprecated encode methods of URLEncoder.
</action>
<action type="remove" dev="tv">
Remove remains of old parser management: ParserUtils
</action>
<action type="fix" dev="tv">
RunData.getContentType() was returning an empty string when it shouldn't
</action>
<action type="update" dev="tv">
Merged changes of the 2.3-branch into the trunk.
</action>
<action type="update" dev="tv">
Merged JSON-RPC-Service of the 2.3-branch into the trunk.
</action>
<action type="update" dev="tv">
Merged UIService of the 2.3-branch into the trunk.
</action>
<action type="update" dev="tv">
Merged TorqueSecurityService of the 2.3-branch (temporarily) into the trunk.
</action>
<action type="update" dev="tv">
Replaced the XSLT-Service with its Fulcrum counterpart.
</action>
<action type="remove" dev="tv">
Removed the XMLRPC-Service. There is a more current alternative
implementation available in the Fulcrum repository.
</action>
<action type="update" dev="tv">
Adjusted the IntakeTool to use IntakeServiceFacade instead of Intake
</action>
<action type="update" dev="tv">
Made TurbineException extend JDK-1.4-Exception instead of commons-lang
NestableException.
</action>
<action type="update" dev="tv">
Moved the initialization of the pipeline so that all services are
initialized first and can be used in the pipeline.
</action>
<action type="update" dev="tv">
Added a getLoader() method to the AssemblerBrokerService to allow dynamic
loaders. Loaders are expected to be provided by the module factories.
</action>
<action type="update" dev="tv">
Moved the different loader caches into the AssemblerBrokerService and
centralized several loader features. The loaders do no longer extend
Hashtable.
</action>
<action type="update" dev="tv">
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.
</action>
<action type="update" dev="tv">
Ported the class cache for JavaBaseFactory from Turbine 2.3
</action>
<action type="update" dev="tv">
Use the transparent service lookup in all service lookups
</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" issue="TRB-39">
Make sure that Turbine uses the ParserService to get
correctly initialized parser objects.
</action>
<action type="fix" dev="seade">
Added missing format() methods to LocalizationTool.
</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 dev="seade" type="update">
Updated jar dependency: javamail to 1.3.3
</action>
<action dev="sgoeschl" type="update">
The avalon-framework-4.3 allows to create an Avalon logger based on a commons logger.
</action>
<action dev="seade" type="fix">
BrowserDetector was throwing a NPE for recent versions of Opera - this
has been fixed.
</action>
<action dev="sgoeschl" type="update">
Setting all members of BaseServiceBroker to private as it should be.
</action>
<action dev="sgoeschl" type="update">
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.
</action>
<action dev="sgoeschl" type="update">
Implementing transparent service lookup using TurbineServiceProviders
</action>
<action dev="sgoeschl" type="update">
The AvalonComponentService does not use the deprecated Component interface and ComponentException.
</action>
<action dev="sgoeschl" type="update">
Restructured the dependency section to distinguish between ECM and YAAFI dependencies.
</action>
<action dev="sgoeschl" type="update">
Use the Fulcrum components from Fulcrum 3.0.0
</action>
<action dev="sgoeschl" type="add">
Added YAAFI Avalon service container and the corresponding TurbineYaafiComponentService.
</action>
<action dev="sgoeschl" type="fix">
Removed remaining Merlin artifacts
</action>
<action dev="epugh" type="fix" due-to="Leandro Rodrigo Saad Cruz">
Handle non US-ASCII encoding with multipart/form-data mimetype better.
</action>
<action dev="epugh" type="remove">
Remove Merlin service. When the replacement for Merlin (Metro) is released, then
add back in support.
</action>
<action dev="epugh" type="update">
Use RELEASED versions of Fulcrum components!
</action>
<action dev="epugh" type="remove">
Remove old security services based on couple Torque.
</action>
<action dev="epugh" type="remove">
Remove dependencies on Stratum and Torque. Torque is now completely optional for Turbine.
Stratum has been replaced by the AvalonComponentService.
</action>
<action dev="seade" type="update">
The velocity page formatting macros have been updated to generate xhtml
compatible html.
</action>
</release>
<release version="2.4-M1" date="2004-08-14" description="Milestone release including Pipeline and PipelineData objects">
<action dev="epugh" type="update">
Update to Commons Configuration 1.0-RC1. TurbineConfiguration.xml files should switch
from &lt;dom4j className="org.apache.commons.configuration.DOM4JConfiguration" fileName="conf/test/TurbineResources.xml"/&gt;
to &lt;xml fileName="conf/test/TurbineResources.xml"/&gt; syntax.
</action>
<action dev="epugh" type="update">
Refactored how Turbine sets up it's ServerData object. Removed the use
of RunData from the process.
</action>
<action dev="" type="update">Removed dependency on deprecated Log4jFactory in favor of Log4jLogger.</action>
<action dev="" type="add">Replaced existing Maven plugin with Hennings' META: Maven Environment for
Turbine Applications plugin.</action>
<action dev="epugh" type="update">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.</action>
<action dev="epugh" type="add"> 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.</action>
<action dev="epugh" type="update">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.</action>
<action dev="" type="remove">Removed deprecated Turbine Security methods.</action>
<action dev="" type="add">Added to website documentation the Maven Plugin for Turbine. Now has goals to
help with inplace development of Turbine apps.</action>
<action dev="" type="update">Upgraded to commons-pool-1.1</action>
<action dev="" type="add">A means of initializing Velocity action modules has been added.</action>
<action dev="epugh" type="add" due-to="Peter Courcoux">Added first cut of the MerlinComponentService which uses the Avalon Merlin
container. Merlin has many many features to help with dealing with components.</action>
<action dev="epugh" type="update">The cache, crypto, localization, intake, factory, and mimetype services have now been deprecated in favor
of the Fulcrum versions as well. </action>
<action dev="epugh" type="update">Turbine security now uses the Fulcrum crypto component.</action>
<action dev="epugh" type="update">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.</action>
<action dev="epugh" type="update">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.</action>
<action dev="" type="fix">Fixed problem in Intake with the "remove" method in IntakeTool that is
triggered by a "removeAll".</action>
<action dev="" type="fix">When there is more than one instance of a group and a "removeAll" is
done the "remove" 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 "getStrings"
returns null, which is not being handled in the code.</action>
<action dev="" type="fix"> 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 dev="" type="fix">HttpUtils.httpDateFormat had the year set as 'yyyyy', should be 'yyyy' therefore
setting expiry dates failed.</action>
<action dev="epugh" type="fix"> 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.</action>
<action dev="" type="fix">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 dev="" type="fix">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 dev="" type="fix"> 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 dev="" type="fix">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
$group.foo.StringValue rather than $group.foo.Value
(you can do this for all values, not just DateString).</action>
<action dev="" type="fix">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).</action>
<action dev="" type="fix">Fixed the intake DateString flexible rule so that it applies to the
format rules and not just to the default locale format.</action>
<action dev="" type="fix"> DateFormatter now allows for a differnet date format to be provided
via tool.dateTool.format in TurbineResources.properties.</action>
<action dev="" type="fix">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("DirectResponseLayout"); to your action class.
Thanks to Peter Courcoux for the code.</action>
</release>
<release version="PRE 2.4" description="Older Changes Logs">
<action>Please see <a href="changes-pre24.html">Pre 2.4 Changelog</a></action>
</release>
</body>
</document>