Changes
Release History
Version | Date | Description |
---|---|---|
6.0-SNAPSHOT | in Git | |
5.1 | 2021-11-23 | |
5.0 | 2019-05-28 | |
4.0.1 | 2018-02-21 | |
4.0 | 2017-11-06 | |
4.0-M2 | 2015-12-21 | |
4.0-M1 | 2011-06-23 | |
2.4-M1 | 2004-08-14 | Milestone release including Pipeline and PipelineData objects |
PRE 2.4 | Older Changes Logs |
Release 6.0-SNAPSHOT – in Git
Type | Changes | By |
---|---|---|
Provide mechanism to allow auto loading of Turbine (and Fulcrum) services. If a "known" 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. | gk | |
New service DateTimeFormatterService and tool DateTimeFormatterTool, which allow date time formatting with locale and zone configuration. | gk | |
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 | gk | |
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 | 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. | gk | |
Migrate to package-info.java from package.html. | tv | |
Optimize JobQueue and add JobQueueTest | tv |
Release 5.1 – 2021-11-23
Type | Changes | By |
---|---|---|
Updated dependencies: yauaa to 5.23, commons-lang3 to 3.12, jython-standalone to 2.7.2 Update turbine-parent 8 (released) | painter | |
Update yauaa to 5.21 ( CVE-2020-13956), junit to 4.13.1 (CVE-2020-15250) | gk | |
New service URL mapper implementation: render beautified URL and map parameters back when parsed. | tv | |
Add reasonable hashCode(), equals() and toString() methods to URIParam class | tv | |
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 | gk | |
Better concurrency in TurbineRundataService | tv | |
Replace charset strings with Charset objects where possible | tv | |
Add Java Docker Testcontainers with minimal impact for default build in profile docker-testcontainer. | gk | |
Update turbine-parent 6 and fulcrum-parser 2.0.1 | painter |
Release 5.0 – 2019-05-28
Type | Changes | By |
---|---|---|
Change all Assembler modules to interfaces | tv | |
Replace unmaintained UADetetctor with YAUAA | tv | |
Replace all commons-logging references with log4j2 | tv | |
Direct Avalon logging to log4j2 | tv | |
Update jython to jython-standalone 2.7.1 | tv | |
Use log4j-jcl instead of redirection through slf4j | tv | |
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 | jp | |
Update from log4j to log4j2, redirect JCL to slf4j | gk | |
Update commons-configuration2 to 2.4 | jp | |
Update from lang to commons lang3 | jp | |
Add ServiceBroker.getApplicationRoot() to allow services to get their root directory | tv | |
Add Turbine.getApplicationRootAsFile() | tv | |
Make PipelineData AutoCloseable and improve robustness of Turbine exception handling | tv | |
Update dependency commons-configuration to 2.3 | tv | |
Adding screens for plain JSON | gk | |
Configuration pathes and log4j path are now all relative to base configuration file (included from). | gk | |
Update dependency commons-configuration to 2.2 Configuration pathes are now all relative to application root. | tv | |
Update dependency commons-lang to 3.7 | tv | |
Update dependencies fulcrum-parser to 2.0.0-SNAPSHOT and fulcrum-intake to 2.0.0-SNAPSHOT | tv | |
Remove dependency on fulcrum-upload | tv | |
Remove dependency on commons-collections | tv | |
Remove dependency on commons-io | tv | |
IMPORTANT: Update HtmlPageAttributes to deliver a default Doctype for HTML 5 Add a test. | 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. | 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() | 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 | tv |
Release 4.0.1 – 2018-02-21
Type | Changes | By |
---|---|---|
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. | gk | |
input.encoding property (velocity) is set now default for locale.default.charset (both default to ISO-8859-1). | painter | |
Updated dependency versions: commons-codec to 1.11, commons-beanutils to 1.9.3, mockito-core to 2.13.0. | gk | |
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. | gk |
Release 4.0 – 2017-11-06
Type | Changes | By |
---|---|---|
OWASP vulnerability check | 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. | gk | |
Update/Add Tests for Turbine and Fulcrum Security Service version 1.1.1 interaction / handling | gk | |
Using slf4j over log4j (currently version 1.7.25) | gk | |
Assembly bugfixes | tv | |
Replace mockobjects with Mockito | tv | |
Fix NPE in LogoutAction: draw user from session instead of RunData. Add test. | tv | |
Update BrowserDetector to support contemporary browsers. | tv | |
Remove TurbineAvalonComponentService including the long deprecated Excalibur dependency | tv | |
Remove methods in RunData referring to Jakarta ECS. | tv | |
Replace xstream with JAXB when reading the pipeline descriptor. | tv | |
Add annotation support for configuration values | tv | |
Improve performance of AnnotationProcessor by caching annotations. Add performance test. | tv | |
Replace synchronized array in TurbinePipeline with CopyOnWriteArrayList (20% faster). Add performance test. | tv | |
Replace several synchronized maps with ConcurrentMaps | tv | |
Add annotation processing to pull tools | tv | |
Eventually remove all static service accessors and replace them by lookups or annotations | tv |
Release 4.0-M2 – 2015-12-21
Type | Changes | By |
---|---|---|
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 | tv | |
Remove all deprecated methods using RunData as a parameter to clean up the API Further cleanup is needed. | tv | |
Add QuartzSchedulerService | tv | |
Update dependencies - fulcrum-security to 1.1.0 - fulcrum-intake to 1.2.0 | tv | |
Update to Torque 4.0.0 | gk | |
Add Annotation @TurbineActionEvent to annotate action methods with arbitrary event names. | 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 | tv | |
Update Turbine Parent POM to version 3 | tv | |
Add Annotation @TurbineLoader to inject a loader instance into objects. | tv | |
Switch to Fulcrum Security API | tv | |
Refactor handling of annotated fields into AnnotationProcessor. | tv | |
Add Annotation @TurbineConfiguration to inject a configuration instance into objects. | tv | |
Fix Velocity logging. | tv | |
Reintroduce VelocityCachedLayout/Screen classes | gk | |
Adjust site for Apache Turbine Parent POM version 2 | tv | |
Use Apache Turbine Parent POM version 2 | 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. | tv | |
Add class cache for TurbineRunDataService | tv | |
Remove duplicate data storage in DefaultTurbineRunData and DefaultPipelineData | tv | |
Services that implement TurbineServiceProvider are inited early by default. Fixes TRB-72. | tv | |
Switch from String keys to Class keys for AssemblerBrokerService | tv | |
Refine interface of PipelineData and add user and acl objects to pipelineData. | tv | |
Fix possible NPE in TurbinePullService. | tv | |
Use lastIndexOf() to get the template extension in TurbineTemplateService. Fixes TRB-82. | tv | |
Fix TurbineYaafiComponentService to set its applicationRoot properly. | tv | |
Fix TurbineMacros to comply with the implementation of HtmlPageattributes | tv | |
Continue generification | tv | |
Port the handling of template encoding from Turbine 2.3.3 | ludwig |
Release 4.0-M1 – 2011-06-23
Type | Changes | By |
---|---|---|
Updated dependency on commons-collections to 3.2.1 | tv | |
Updated dependency on commons-configuration to 1.6 | tv | |
Updated dependency on commons-lang to 2.5 | tv | |
Updated dependency on commons-email to 1.2 | tv | |
Move to Java-5 generics. | tv | |
Move to Java-5 generics. | ludwig | |
TurbineURI was using the deprecated encode methods of URLEncoder. Fixes TRB-80. Thanks to Georg Kallidis. | tv | |
Remove remains of old parser management: ParserUtils | tv | |
RunData.getContentType() was returning an empty string when it shouldn't | tv | |
Merged changes of the 2.3-branch into the trunk. | tv | |
Merged JSON-RPC-Service of the 2.3-branch into the trunk. | tv | |
Merged UIService of the 2.3-branch into the trunk. | tv | |
Merged TorqueSecurityService of the 2.3-branch (temporarily) into the trunk. | tv | |
Replaced the XSLT-Service with its Fulcrum counterpart. | tv | |
Removed the XMLRPC-Service. There is a more current alternative implementation available in the Fulcrum repository. | tv | |
Adjusted the IntakeTool to use IntakeServiceFacade instead of Intake | tv | |
Made TurbineException extend JDK-1.4-Exception instead of commons-lang NestableException. | tv | |
Moved the initialization of the pipeline so that all services are initialized first and can be used in the pipeline. | tv | |
Added a getLoader() method to the AssemblerBrokerService to allow dynamic loaders. Loaders are expected to be provided by the module factories. | tv | |
Moved the different loader caches into the AssemblerBrokerService and centralized several loader features. The loaders do no longer extend Hashtable. | 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. | tv | |
Ported the class cache for JavaBaseFactory from Turbine 2.3 | tv | |
Use the transparent service lookup in all service lookups | tv | |
Initialize the locale of RunData, the ParameterParser and the CookieParser from the HttpServletRequest. Make RunData.setLocale propagate the locale setting to the parsers. | tv | |
Make sure that Turbine uses the ParserService to get correctly initialized parser objects. Fixes TRB-39. | tv | |
Added missing format() methods to LocalizationTool. | seade | |
A FileItem in a ParameterParser added to TurbineURI or TemplateURI was resulting in a NPE. Fixes TRB-8. Thanks to Gunther Olesch. | seade | |
TurbineURI was mishandling the empty String. Fixes TRB-16. Thanks to Jürgen Hoffmann. | seade | |
Updated jar dependency: javamail to 1.3.3 | seade | |
The avalon-framework-4.3 allows to create an Avalon logger based on a commons logger. | sgoeschl | |
BrowserDetector was throwing a NPE for recent versions of Opera - this has been fixed. | seade | |
Setting all members of BaseServiceBroker to private as it should be. | sgoeschl | |
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. | sgoeschl | |
Implementing transparent service lookup using TurbineServiceProviders | sgoeschl | |
The AvalonComponentService does not use the deprecated Component interface and ComponentException. | sgoeschl | |
Restructured the dependency section to distinguish between ECM and YAAFI dependencies. | sgoeschl | |
Use the Fulcrum components from Fulcrum 3.0.0 | sgoeschl | |
Added YAAFI Avalon service container and the corresponding TurbineYaafiComponentService. | sgoeschl | |
Removed remaining Merlin artifacts | sgoeschl | |
Handle non US-ASCII encoding with multipart/form-data mimetype better. Thanks to Leandro Rodrigo Saad Cruz. | epugh | |
Remove Merlin service. When the replacement for Merlin (Metro) is released, then add back in support. | epugh | |
Use RELEASED versions of Fulcrum components! | epugh | |
Remove old security services based on couple Torque. | epugh | |
Remove dependencies on Stratum and Torque. Torque is now completely optional for Turbine. Stratum has been replaced by the AvalonComponentService. | epugh | |
The velocity page formatting macros have been updated to generate xhtml compatible html. | seade |
Release 2.4-M1 – 2004-08-14
Type | Changes | By |
---|---|---|
Update to Commons Configuration 1.0-RC1. TurbineConfiguration.xml files should switch from <dom4j className="org.apache.commons.configuration.DOM4JConfiguration" fileName="conf/test/TurbineResources.xml"/> to <xml fileName="conf/test/TurbineResources.xml"/> syntax. | epugh | |
Refactored how Turbine sets up it's ServerData object. Removed the use of RunData from the process. | epugh | |
Removed dependency on deprecated Log4jFactory in favor of Log4jLogger. | ||
Replaced existing Maven plugin with Hennings' META: Maven Environment for Turbine Applications plugin. | ||
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. | epugh | |
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. | epugh | |
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. | epugh | |
Removed deprecated Turbine Security methods. | ||
Added to website documentation the Maven Plugin for Turbine. Now has goals to help with inplace development of Turbine apps. | ||
Upgraded to commons-pool-1.1 | ||
A means of initializing Velocity action modules has been added. | ||
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. | epugh | |
The cache, crypto, localization, intake, factory, and mimetype services have now been deprecated in favor of the Fulcrum versions as well. | epugh | |
Turbine security now uses the Fulcrum crypto component. | epugh | |
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. | epugh | |
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. | epugh | |
Fixed problem in Intake with the "remove" method in IntakeTool that is triggered by a "removeAll". | ||
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. | ||
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. | ||
HttpUtils.httpDateFormat had the year set as 'yyyyy', should be 'yyyy' therefore setting expiry dates failed. | ||
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. | epugh | |
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. | ||
Actions triggered from html input elements with type="button" are now processed correctly (the trailing ".x" and ".y" are removed from the event names). | ||
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). | ||
Intake was fixed so that DateString will use the "formatn" (where n >= 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). | ||
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). | ||
Fixed the intake DateString flexible rule so that it applies to the format rules and not just to the default locale format. | ||
DateFormatter now allows for a differnet date format to be provided via tool.dateTool.format in TurbineResources.properties. | ||
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. |
Release PRE 2.4
Type | Changes | By |
---|---|---|
Please see |