|Jaffa Release Notes v1.3.0
This document describes the changes that have been made in the current development version of Jaffa,
relative to the Jaffa 1.2.0 release.
For details about a previous release click here
|What's New in Version 1.3
- Created PortletFilter which is a replacement for the PortletServlet and the org.jaffa.presentation.portlet.security package.
- Created ComponentExpiredException and the message: exception.org.jaffa.exceptions.ComponentExpiredException.componentExpired=The page you are trying to view has expired!
- Added the message: exception.org.jaffa.presentation.portlet.session.UserSessionSetupException.setupException=Error in setting up the UserSession
- Added Ant tasks that wrapper org.jaffa.tools.build.ConfigFileUpdate and org.jaffa.tools.build.ValidatePropertiesFile, <configfileupdate> and <validatepropertiesfile>.
- Created the following classes to support configurable data sources - IConnectionFactory, DbConnectionBrokerConnectionFactory, DbcpDataSourceConnectionFactory, JndiDataSourceConnectionFactory
- Created a new XML schema 'jdbc-engine-init_1_0.xsd' and a DTD 'jdbc-engine-init_1_0.dtd' for the jdbcengine init.xml file
- The 'BOOLEAN' datatype has been enhanced to support different packing styles, viz. BOOLEAN_BIT, BOOLEAN_TF, BOOLEAN_YN, BOOLEAN_10 (Feature#730303, http://sourceforge.net/tracker/index.php?func=detail&aid=730303&group_id=39497&atid=425398)
- Added org.jaffa.util.SettingsBase to be used to access web/ejb server based properties
- Added org.jaffa.util.EmailHelper for sending emails with Excel attachments
- Added support for database generated key in the persistence layer
- components.xml: Removed the reference to the deprecated LogonComponent
- struts-config.xml: Made it compatible with the new Struts1.1 DTD. Removed the references to the Logon component. Moved the mapping for pageExpired.jsp from struts-config.xml to web.xml
- web.xml: Added the PortletFilter. Replaced the PortletServlet with the ActionServlet
- FormBase: Since Struts1.1, the reset() method is being invoked from the FormTag, in addition to the ActionServlet(or RequestProcessor). Modified the reset() method to not set the widget-cache, as it leads to erroneous state
- Revamped the init.xml to conform to the 'jdbc-engine-init_1_0.xsd' schema. Some of the major changes are
a) New elements - connection-factory, hitlistSize, jdbcSecurityPlugin, usePreparedStatement
b) The parameters are now children of the connection-factory element
c) New parameters to support DbcpDataSourceConnectionFactory - maxWait, testOnBorrow, testOnReturn, validationQuery
d) New parameters to support JndiDataSourceConnectionFactory - jndiDataSourceName
- Moved the framework properties to init.xml - framework.persistence.jdbcengine.usePreparedStatement, framework.persistence.jdbcengine.security.plugin. As a result the following classes needed to be changed - DataSource, JdbcBridge
- Modified realm to support data sources (RFE#781129, http://sourceforge.net/tracker/index.php?func=detail&aid=781129&group_id=39497&atid=425398)
Merged datasource code into the realm, resynced based on Tomcat 4.1.26 source code for both DataSource and JDBC realms
- Modified the getStatement() method in the DataSource class of the jdbc engine, to get a Statement object from a connection, using the default settings - TYPE_FORWARD_ONLY and CONCUR_READ_ONLY. This will be much more effecient than the previous code which was using the TYPE_SCROLL_INSENSITIVE and CONCUR_UPDATABLE settings
- Made the following changes in ButtonTag, CheckBoxTag, DateTimeTag, DropDownTag, EditBoxTag, FooterTag, FormTag, GridColumnTag, GridTag, HeaderTag, ImageTag, LookupTag, RadioButtonTag, TableTag, TagHelper, TreeTag, UserGridColumnTag, UserGridTag
a- Used pageContext.REQUEST_SCOPE when invoking pageContext.setAttribute()
b- Replaced 'pageContext.getAttribute()' invocations with 'pageContext.findAttribute()'
This was done to allow Jaffa widgets to be spread across multiple JSPs in template environmnents like the TILES framework. This would allow us to paint the FormTag in a Layout JSP and the widgets in the inner Tile JSP.
- Replaced '(String) pageContext.getAttribute(TagHelper.ATTRIBUTE_FORM_NAME)' with 'TagHelper.getFormName(pageContext)' in finder-pattern/ComponentResultsJSP, lookup-pattern/ComponentResultsJSP and httpunittest/results.jsp
- Modified DataSourceFactory to use the class specified in init.xml for instantiating an IConnectionFactory for obtaining database connections
- Modified ConfigurationService to use JAXB for reading init.xml
- Added a hack to JDBCSecurityPlugin to extract the oracle connection from the dbcp wrapper
- Modified the classes Engine and PersistentTransaction to use the JAXB generated class 'Database' instead of JAFFADataSource
- Added some extra customization points in the maintence pattern
- Concurrency bottleneck in ActionBase (Bug#780503, http://sourceforge.net/tracker/index.php?func=detail&aid=780503&group_id=39497&atid=425395)
Struts has implemented a singleton pattern for each Action class. But we set instance variables in the Action class. This leads to concurrency problems when multiple submissions are made to an Action class.
Fixed the ActionBase class such that a new instance of the Action class is created in the perform() method, which is then used for event handling.
- Fixed GridController and UserGridController. The call to update the inner model is not made, if the model is null. This fixes the NullPointerException being thrown by the log.debug() method
- Fixed LoadTester, AppBuilder & DomainObjectHelper. They use JAXB but weren't ignoring the <!DOCTYPE>. Now they don't rely on http://jaffa/sf/net/DTD being available
- Fixed the date field error for MySQL (Bug#800690, http://sourceforge.net/tracker/index.php?func=detail&aid=800690&group_id=39497&atid=425395). This involved the following changes
- Added a new variant property 'PROP_USE_TO_DATE_SQL_FUNCTION' which will determine if the to_date() function is to be used for managing date fields.
- Modified DataSource, DataTranslator, JdbcBridge, QueryStatementHelper, StatementHelper and TypeDefs to propagate 'engineType' when generating SQL
- Added UnitTests for testing date based queries/inserts/updates
- Fixed the quote character bug in MS SQL Server (Bug#730595, http://sourceforge.net/tracker/index.php?func=detail&aid=730595&group_id=39497&atid=425395). This involved the following changes
a) Fixed the class 'TypeDefs' to not replace quote characters when using PreparedStatements
b) Added a UnitTest to check the fix
- Fixed UserGridManager, replacing the warnings with error logs when a MalformedURLException is thrown (Bug#771979, http://sourceforge.net/tracker/index.php?func=detail&aid=771979&group_id=39497&atid=425395)
- Removed the logic related to tokens in Config class and deleted the tokens.properties file.
- Removed the Config constants - PROP_CASTOR_DATABASE_URI, PROP_CASTOR_DATABASE_NAME, PROP_PERSISTENCE_ENGINE_LOGGING
- Deprecated the Config constants - PROP_PORTLET_SECURITY_ENABLED, PROP_PORTLET_SECURITY_MGR, PROP_PORTLET_SECURITY_BYPASS_ACTION_LIST
- Removed the framework properties - framework.security.portlet.enabled, framework.security.portlet.manager, framework.security.portlet.bypassActionList
- Deleted the org.jaffa.presentation.portal package
- Deprecated PortletServlet
- Deprecated the package org.jaffa.presentation.portlet.security
- Deleted switchSkin.jsp
- Removed org.jaffa.util.XmlBean and org.jaffa.util.xml.XmlBean. These two 'experimental' classes, either use the XML serializer or the Jakarta collections-bean-utils for these kind of functions.
- UserSessionFilter has been deprecated as it has been superceeded with the new PortletFilter
- Deleted JdbcSecurityPluginFactory, since its no longer used. DataSourceFactory does the needful.
- Deleted InitParser and JAFFADataSource. They have been replaced by the JAXB files generated for jdbc-engine-init_1_0.xsd and the logic added to ConfigurationService
- Deprecated logon.jsp; instead use container authentication
|Migration Issues from v1.2.0
Fixes to overcome Compile errors when working with Struts1.1 (new Struts JARs and TLDs)
- PortletServlet - removed references to processPreprocess, processPath, processMapping, processActionForward, processPopulate methods of ActionServlet. Refactored most of the code. Commented out processPopulate(), which is redundant and should have been removed when the error-handling was revamped in FormBase
- FormTag - Removed the getActionMappingURL() method, and instead extended the renderFormStartElement() and lookup() methods of the base class to support the 'url' attribute. Also replaced references to getName() with getBeanName()
- ButtonTag, EditBoxTag, TreeTag - replaced the reference to formTag.getName() with TagHelper.getFormName(pageContext)
Fixes to overcome Deprecation warnings when working with Struts1.1
- ActionBase, LogonAction, LogonPreAction, SampleApplication.LogoutAction - replaced the perform() method with execute() method
- ActionBase - Refactored the exception-handling, with the new signature of execute() allowing an Exception to be thrown
- StartComponentAction - Refactored the exception handling, with the new signature of execute() allowing an Exception to be thrown
- EventHandlerRuntimeException - This class has been removed, since its redundant with the new signature of execute() allowing an Exception to be thrown
- FormBase - replaced the call to ActionMessages.empty() with ActionMessages.isEmpty()
- FormBase, MessageHelper - replaced the references to Action.constants with Globals.constants
Fixes to add a Form ID tag to allow multiple forms to have their actions fired in Netscape
- FormTag was updated. If a style ID tag is not specified, the ID will be written as the Form bean name.
- UserGridSettings.js was modified to allow the form bean name to be passed in instead of using Form which does not work in Netscape.