Downloads
Content File Name Date Format Size (Bytes)
PAJES Demonstration pajesdemo.zip 20-Dec-2012 ZIP 4,305,710
pajesdemo.tgz 20-Dec-2012 GZIPped TAR 4,116,808
Release 5.0.0
PAJES jar pajes-5.0.0.zip 20-Dec-2012 ZIP 569,977
pajes-5.0.0.tgz 20-Dec-2012 GZIPped TAR 571,169
PAJES Source pajes-5.0.0-src.zip 20-Dec-2012 ZIP 1,735,181
pajes-5.0.0-src.tgz 20-Dec-2012 GZIPped TAR 1,396,386
PAJES Documentation (javadoc) pajes-5.0.0-doc.zip 20-Dec-2012 ZIP 1,280,747
pajes-5.0.0-doc.tgz 20-Dec-2012 GZIPped TAR 811,047

  Recent History
Release 5.0.0: 20-Dec-2012 
- Package: org.pajes.html
 + Breaking change: renamed Button to InputButton, and 
   added new Button class to support HTML5 button
 + PajeTemplate now allows tags to be added as generic
   Container or Tag instances, rather than as Pajes
   HTML instances
 + Improved handling of new/unknown tags in PajeTemplate 

Release 4.1.3: 08-Oct-2012
- Package: org.pajes.html
 + Fixed bug in Text.decodeCharacterEntities
 + Traversable classes now implement Iterable
 + Added getPosition and insert methods to Traversable  

Release 4.1.2: 02-Oct-2012
- Package: org.pajes.db.entity
 + Value parsing of XMLand JSON failed to convert empty 
   string to null
- Package: org.pajes.html
 + PajeMemoryManager thread was never shut down 
- Package: org.pajes.servlet
 + PajeServlet stats logging did not show original URI
   when forwarded
 + Added ability to suppress stats logging for specific
   servlets

Release 4.1.1: 29-Sep-2012
- Package: org.pajes.db
 + Deregister JDBC driver when shutting down ConnectionManager
   to try and avoid PermGen OutOfMemoryErrors 
- Package: org.pajes.db.entity
 + Value parsing incorrectly converted empty string to null
- Package: org.pajes.security
 + Allowed customisation of login/logout log messages

Release 4.1.0: 28-Aug-2012
- Package: org.pajes.db.entity
 + Automatically convert Scope comparison values passed 
   in as java.util.Date instances to java.sql.Timestamp 
   objects
 + Entity.toXML() now defaults to NO attributes in generated 
   XML
 + Added JSON support to Entity
 + Added ISO8601DatFormat, and used for parsing/formatting
   dates in XML and JSON processing
 + Can now specify multiple Format objects for each column
 + Added isString() method to Value
 + Value setValue() method consistently applies parsing rules
   
Release 4.0.0: 14-Aug-2012
- Package: multiple
 + Support for Servlet API 3.0 annotations for embedded
   PAJES servlets
- Package: org.pajes.db.entity
 + Introduced generics 
- Package: org.pajes.util
 + Rework of Trace facility to provide new features like
   multiple loggers 

Release 3.1.0: 27-May-2012
- Package: org.pajes.db
 + Implemented JDBC 4.1 changes 
- Package: org.pajes.html
 + Added getBody() method to Table
- Package: org.pajes.servlet
 + Implemented Servlet API 3.0 changes
 + URL Encoding ignored for external sites 

Release 3.0.21: 08-Oct-2010
- Package: org.pajes.db
 + Instantiation of ConnectionPoolTimeOutException now 
   synchronized to prevent ConcurrentModificationException
   whilst reporting current open connections
- Package: org.pajes.html
 + Ensured the table header/body/footer in correct sequence
   before writing

Release 3.0.20: 27-Jan-2010
- Package: org.pajes.db
 + Rework of connection wrapper to resolve driver 
   issues with cleanup on release
 + ConnectionPoolTimeOutException now only logs
   in use connections once
 + Changed auto-build of Scope from request to deal with
   dates
 + Fixed ConcurrentModificationException when
   acquiring a Connection
 + Fixed ConcurrentModificationException when
   shutting down ConnectionManager
- Package: org.pajes.html
 + Added FieldSet and Legend classes

Release 3.0.14: 05-Jul-2009
- Package: org.pajes.db.entity
 + Added ability to use existing connection to
   recache entities in Manager
- Package: org.pajes.html
 + InputRadioButtonSet did not propagate setForm
   to contained radio buttons
- Package: org.pajes.util
 + Trace getStackTrace did not use getCause to
   display root cause

Release 3.0.13: 26-Nov-2008
- Package: org.pajes.db.entity
 + Value uses BigDecimal.compare where appropriate 
   to detect change

Release 3.0.12: 26-Nov-2008
- Package: org.pajes.db.entity
 + Added head/foot/body to DefaultLister table
 + Added handling of generic Exceptions to
   MaintenanceServlet
- Package: org.pajes.html
 + Added handling for fieldset tags
 + Fixed bug in Table.HeadingCell constructor
   (td tag was created rather than a th tag)
  
Release 3.0.11: 29-Aug-2008
- Package: org.pajes.db.entity
 + Allowed over-ride of retrieveEntityBeforeUpdate
   in MaintenanceServlet

Release 3.0.10: 20-Aug-2008
- Package: org.pajes.db.entity
 + Fixed bug when creating new entity through
   MaintenanceServlet

Release 3.0.9: 07-Aug-2008
- Package: org.pajes.html
 + Fixed handling of defaults in OptionGroups 

Release 3.0.8: 17-Jul-2008
- Package: org.pajes.servlet
 + Modified URL encoding so that only http URLs
   are encoded 

Release 3.0.7: 03-Jul-2008
- Package: org.pajes.db.entity
 + Removed logging of statements in 
   ConnectionPoolTimeOutException

Release 3.0.6: 15-Jun-2008
- Package: org.pajes.db.entity
 + BLOB values were not handled correctly
- Package: org.pajes.html
 + Fixed bug with quote characters in on load
   alert 

Release 3.0.5: 22-May-2008
- Package: org.pajes.db
 + Added ConnectionPool getCurrentConnection()
   method to retrieve a connection acquired by 
   the current thread
 + Improved logging of connection states when
   pool timeout exception occurs 
- Package: org.pajes.db.entity
 + Fixed forced setting of table cols attribute
   on DefaultLister
- Package: org.pajes.servlet
 + Added new context parameter
   org.pajes.servlet.Browser.useURLEncodingWhenNeeded

Release 3.0.4: 21-Apr-2008
- Package: org.pajes.security
 + Fixed bug with parameter encryption when 
   parameters separated with & 

Release 3.0.3: 04-Apr-2008
- Package: org.pajes.security
 + Added postLogoutProcessing to AccessPermission
 + Added optional session invalidation after 
   logout
   
Release 3.0.2: 02-Apr-2008
- Package: org.pajes.db
 + Fixed entity deserialization when manager
   not yet registered
 + Manager attributes are now returned in 
   added order

Release 3.0.1: 29-Mar-2008
- Package: org.pajes.servlet & org.pajes.html
 + Handled potential null character encoding

Release 3.0.0: 18-Mar-2008
- Package: ALL
 + Updated for Java5+ syntax
 + Updated to JDOM 1.1 
- Package: org.pajes.html
 + Tag attributes are now written in the sequence
   that they are added (or parsed)
 + Anchor attributes are now written in the sequence
   that they are added
 + Added support for Table COL and COLGROUP tags

Release 2.5.6: 28-Feb-2008
- Package: org.pajes.db
 + Fixes for serialization
- Package: org.pajes.html
 + Handled additional Link attributes

Release 2.5.5: 29-Jan-2008
- Package: org.pajes.db
 + Fixed serialization
- Package: org.pajes.html
 + Added HTML isChildOf methods
 + Added TagTitleAttribute and TagURIAttribute
 + Added Tag hasAttribute method
 + Ampersands within the title and src, action and
   href attributes are now encoded correctly
 + Removed Table cols attribute from output
 + Fixed bug in Container where parent not set
   when item inserted or set
 
Release 2.5.4: 22-Oct-2007
- Package: org.pajes.html
 + Fixed getContainedText method in Anchor and Span

Release 2.5.3: 24-Sep-2007
- Package: org.pajes.db
 + Increased visibility of classes and methods

Release 2.5.2: 19-Aug-2007
- Package: org.pajes.html
 + Improved detection of unmatched quotes to ignore double
   quoted singles quotes and single quoted double quotes

Release 2.5.1: 12-Jun-2007
- Package: org.pajes.html
 + Added support for dl, dt and dd tags

Release 2.5.0: 03-Jun-2007
- Package: org.pajes.db
 + Added support for new JDK 1.6 methods
- Package: org.pajes.servlet
 + Added support for new Servlet API 2.5 methods

Release 2.4.5: 11-Jan-2007
- Package: org.pajes.servlet
 + Added logging of commencement to STATS level

Release 2.4.4: 09-Jan-2007
- Package: org.pajes.security
 + Removed synchronized qualifier on 
   DefaultWritePermission.getInstance()

Release 2.4.3: 06-Jan-2007
- Package: org.pajes.html
 + Defaulted dummy browser to XHTML
 + Fixed handling unary attributes in XHTML document 

Release 2.4.2: 01-Jan-2007
- Package: org.pajes.db
 + ConnectionPool verifies availablity on init(), and 
   waits until a connection can be obtained   

Release 2.4.1: 29-Dec-2006
- Package: org.pajes.html
 + Increased visibility of PajeFactory items 

Release 2.4.0: 26-Dec-2006
- Package: org.pajes.html
 + Moved Container methods to Traversable
 + Deprecated get/setContainer in Tag and replaced with 
   get/setParent
 + Fixed bug where hierarchy was lost when using the
   setContent method on Tag 

Release 2.3.11: 15-Nov-2006
- Package: org.pajes.db
 + Handled closed connection found on free pool
- Package: org.pajes.html
 + Added encoding of single quotes in Text
 
Release 2.3.10: 06-Jul-2006
- Package: org.pajes.html
 + Improved handling of unexpected end tags in PajeTemplate

Release 2.3.9: 07-Aug-2005
- Package: org.pajes.html
 + Removed unused variable/method from Container
 + Various minor code optimisations

Release 2.3.8: 23-Jul-2005
- Package: org.pajes.html
 + Correctly handles attributes on the HTML tag
 + DOCTYPE is now handled correctly when parsing and
   writing a Paje
 + Default behaviour when calling setWritable(boolean)
   on a TraversableElement is now to cascade the 
   writable setting
 + Table COLS attribute is now only set if explicitly 
   set
 + Default SUMMARY attribute created for Table
 + Paje.setDestroyAfterWrite default value can now be 
   set globally via a web.xml context-param or the
   new PajeFactory setDestroyAfterWrite method
 + Fixed lookup of methods when handling META tag 
   over-rides
 + Paje processes META tag over-rides before 
   checking if client validation is required, so that 
   any validation added in the META tags works
 + Added more META tag processing over-rides
 + Added PajeTemplate.modifyLineBreaks method to 
   allow a custom template to over-ride default
   tag line break processing
 + PajeTemplate handleTag and handleTag_input now only
   use reflection if an unknown tag is found
 + Improved handling of unclosed text formatting tags
 + Fixed handling of FONT tags
 + Fixed bug where caching of keys by PajeFactory
   would cause the wrong paje to be returned
- Package: org.pajes.html.validation
 + Just setting min or max length on IsLength didn't 
   give correct results
- Package: org.pajes.servlet
 + UploadFileRequest was incorrectly decoding parameter
   names and values
 + Increased visibilty of request wrappers
- Package: org.pajes.db
 + Improved debugging messages
- Package: org.pajes.db.entity
 + Added CLOB support when populating an Entity from
   a ResultSet
 + Fixed a bug in Manager where cache was not properly 
   refreshed when insert/update/delete failed
 + Upgraded to JDOM 1.0
- Package: org.pajes.security
 + Removed user principal from request after Logout
- Package: org.pajes.util
 + Deprecated Class constructors in URI

Release 2.3.7: 25-Aug-2004
- Package: org.pajes.html
 + Improved message when logging warning for
   Input elements not on a Form
- Package: org.pajes.servlet
 + Added getRequestURL() method to Browser

Release 2.3.6: 03-Aug-2004
- Package: org.pajes.html
 + Added support for HTML Label tag
- Package: org.pajes.servlet
 + Updated for new Servlet API 2.4 methods

Release 2.3.5: 25-Feb-2004
- Package: org.pajes.html
 + Container.getContent() now returns an object
   consistent with the setContent() method and 
   with Tag.getContent()
 + TraversableElement.setWritable(boolean, boolean)
   was fixed as it neither worked as documented or 
   expected, and would always cascade the visible 
   setting
 + Added support for embed, noembed, map and area 
   tags to PajeTemplate
 + Paje now has a delegate method for the Body
   method getDocTypeHeader()
 + Paragraph now implements TextContainer
 + Table.getMaxColumns() now returns the correct 
   number of columns, based on the implicit and 
   explicit colspan of each cell in the longest
   row, UNLESS the COLS attribute is specified
   on the TABLE tag or via the setMaxColumns()
   method, in which case that value will be 
   returned
 + Table.getLogicalCellMap(boolean) is a new 
   method that returns a two dimensional array 
   containing the table cells in their logical 
   positions
 + Table.getLogicalCell(int, int) is a new 
   method that returns the cell in the specified
   logical position
 + Table.Cell has two new methods: getRowSpan()
   and getColumnSpan(), both of which return
   int values and the implicit value of 1 if the
   attribute has not been defined
 + Table.Row.getLogicalCell(int) is a new method 
   to return a Cell from a Row based on the 
   colspan (but not rowspan) settings
 + Table.Row.getLogicalCellCount() is a new 
   method to return the number of Cells in the
   Row allowing for the colspan settings
- Package: org.pajes.servlet
 + Browser is no longer final
 + CharConversionException is now handled in 
   BrowserOutputStream.print(String) instead of
   Browser.write(String) to fix bug that occured when
   the illegal character was not the first character 
   in the String
 + Default Content-Type is now configurable via a
   web.xml context-param
 + Fixed NullPointerException in HttpServletRequestWrapper
   when no AccessPermission defined
- Package: org.pajes.db
 + Modified ConnectionPool to better handle a null 
   connection returned by JDBC Driver
- Package: org.pajes.db.entity
 + RuntimeExceptions are now NOT handled as an
   EntityException in Manager.getEditor,
   getLister and getViewer
 + Added new constructor and set methods to 
   Attributes
 + Fixed handling of auto-increment InputFields
   in Attributes
 + Default Editor/Lister/ViewerPosition no longer set 
   when an Attributes object is registered if it 
   already has a non-zero position

Release 2.3.4: 30-Dec-2003
- Package: org.pajes.html
 + Added new constructor to Paje that accepts a 
   PajeParser
- Package: org.pajes.db.entity
 + Increased visibility of Entity.setValue methods
 + Fixed bug in Scope innerJoin and leftOuterJoin 
   methods
- Package: org.pajes.security
 + AccessPermission.isPermitted now called by new
   AuthenticatedPajeServlet.isPermitted
 + DefaultPrincipal obtains getName() value from
   HttpServletRequest if not null (i.e. if Servlet
   Container authentication is used)
- Package: org.pajes.servlet
 + AuthenticatedPajeServlet has two new methods:
   isPermitted and doForbidden
   
Release 2.3.3: 16-Dec-2003
- Package: org.pajes.html
 + Added ability to set the check for changed fields 
   confirmation text (previously was always "Discard 
   changes?", with no ability to i18n).
 + Added ability to set tag over-rides via header Meta
   tags
 + Determination of correct quotes to use in TagAttributes 
   now based on whether value contains a quote character
 + Fixed problem calling Tag.toString() on non-writable
   Tag instance
 + Fixed handling of 0 decimal places in InputDecimal
 + Fixed occassional problem with Table.clone()
 + Fixed unhandled attributes on option and meta tags in
   PajeTemplate
 + Fixed bug in cloning of Anchor HREFAttributes
 + Fixed PajeTemplate to encode character entities
   in parsed text
 + Added getAttribute and toPaje methods to PajeParser
- Package: org.pajes.html.validation
 + Fixed handling of 0 decimal places in IsDecimal
   function in Validation.js
- Package: org.pajes.html.tree
 + Improved quality of icon images
- Package: org.pajes.servlet
 + Fixed bug with re-processing of input stream by
   HttpServletRequestWrapper when debugging turned on
- Package: org.pajes.util
 + QuotedString now defaults to double quotes when using 
   automatic determination
 + Fixed bug in TraceServlet when dynamic servlet 
   mapping not used
 + Set defaults for all use... options on no-parameter
   Browser constructor to false
- Package: org.pajes.db.entity
 + Fixed potential bug in MaintenanceServlet.doPost
 + handleCancel(HttpServletRequest, HttpServletResponse)
   deprecated and added handleCancel(HttpServletRequest, 
   HttpServletResponse, Entity) in MaintenanceServlet
 + Added useQualifiedColumnNamesInScope method to Lister
 + When creating a Scope from HttpServletRequest and
   Manager, can qualify column names with table
 + Modified Scope and Manager.getSQLSelectStatement to
   allow an alternate select table to be specified on 
   the Scope
 + Added static getEntityFromSession method to 
   MaintenanceServlet
 + Fixed bug in Manager.retrieve(Scope, int, Connection)
   where connection was not re-used
 + Lister.getScope() did not work as documented
 + Fixed bug in handling of null values from a select list 
   when building a Scope from HttpServletRequest
 + Listers can now have more than one header row
 + Fixed bug in PagingLister that only appeared when the
   rows returned count was 0 after next page request
   
Release 2.3.2: 30-Oct-2003
- Package: org.pajes.html
 + Added PajeFactory.getServletContext() method
 + Fixed bug with adding scripts to Head after clear()
 + Added check for add of duplicate Link objects to Head
 + Added logging of instances where Head silently ignored
   replaced/ignored objects
- Package: org.pajes.servlet
 + Deprecated Browser.usePersistentConnection
- Package: org.pajes.db.entity
 + Entity.toXMLElement now uses any defined formatter when
   writing values
- Package: org.pajes.db.util
 + Added ability to suppress line feeds in Trace messages

Release 2.3.1: 20-Oct-2003
- Package: org.pajes.html
 + Fixed bug in InputDate.js that caused year to disappear
- Package: org.pajes.db.entity
 + Fixed bug in JoinScope.join when using aliases
 + Fixed spacing between tablename and alias in Manager
   getSQLSelectStatement()

Release 2.3.0: 16-Oct-2003
- Package: org.pajes.html
 + Head.useDefaultBaseHREF can now be set via the Browser object
   or via the org.pajes.servlet.Browser.useDefaultBaseHREF
   context parameter
 + Head.getDefaultBaseHREF generates the href based on the Host
   header (if it is not null), rather than HttpServletRequest 
   getServerName() and getServerPort(), because of inconsistent
   results between servlet containers
 + Added ability to turn off generation of client-side JavaScript
   form validation via the Browser object or via the 
   org.pajes.servlet.Browser.useClientValidation context parameter
 + Added setChangedFlag and isChangeFlagEnabled methods to Input
   to control whether the JavaScript flag to indicate that a 
   form has been changed will be set when the element is changed
 + Button defaults to no longer setting the changed flag
 + Fixed bug where Text always incorrectly returned the 
   DefaultWritePermission
 + Added new InputDateTimeString and changed super-class of
   InputDate, InputTime and InputTimestamp 
 + InputDate now allows the year range for the pop-up calendar
   drop-own list to be specified
 + Fixed bug in setting/retrieving selected options in SelectList,
   and added check to ensure that a default is always set to 
   ensure that the read-only JavaScript logic always works
 + Added support for applet, param and object tags
 + Made all protected "handleTag_xxx" methods public, and
   now walks class hierarchy to find methods, to improve 
   sub-classing of PajeTemplate
 + Added support for parsing of empty tags (e.g. thead/)
 + Tag is no longer abstract, and constructors are public
- Package: org.pajes.html.validation
 + IsManadatory dependant field check now works correctly with
   checkboxes, radio buttons, and select lists
 + Added IsDateTime validation
- Package: org.pajes.html.util
 + Fixed bug in ProperCaseString when handling an already proper
   cased string with spaces
- Package: org.pajes.db
 + Improved ability to sub-class ConnectionManager and 
   ConnectionPool
- Package: org.pajes.db.entity
 + Added support for user-defined Attributes
 + Added support for a Format object to be specifed on Attributes
   to parse a value into the correct Object type, and to display
   as a correctly formatted value in Listers and Editors
 + A table alias set on a Scope is now automatically prefixed to
   the column name
 + Scopes can be built from other Scope instances or merged
   together
 + Fixed NullPointerException in JoinScope
 + Manager.retrieveCount now uses getSQLSelectStatement so 
   that Scopes are consistently applied
 + DefaultLister now right-aligns date values by default
 + Calling Entity.setValues, and specifying that the initial
   values are to be set, defaults isNew() to false
 + Added new toXMLElement method and new toXML and toXMLDocument
   signatures to Entity
 
Release 2.2.3: 23-Jun-2003
- Package: org.pajes.db.entity
 + Added support for direct page access in Listers
 + Fixed bug when creating a Scope from a HttpServletRequest
- Package: org.pajes.html
 + Added getScripts() method to Head
 + Added ability to retrieve tags by name, class, or attribute 
   name/value pair to TraversableElement
 + Added support for TBODY, TFOOT and THEAD tags

Release 2.2.2: 06-Jun-2003
- Package: org.pajes.db.entity
 + Added getEntityFromSession and removeEntityFromSession methods to
   MaintenanceServlet
- Package: org.pajes.html
 + Removed code to ignore whitespace between tokens in PajeParser
   
Release 2.2.1: 02-Jun-2003
- Package: org.pajes.db.entity
 + Fixed bug in populating an Entity from an XML Element
- Package: org.pajes.html
 + Removed trimming of text in PajeParser
- Package: org.pajes.html.validation
 + Added handling of arrays of elements passed as a parameter to functions
   expecting a single element
- Package: org.pajes.servlet
 + ServletContextWrapper checks org.pajes.util.MIMEType if the container
   returns null from getMimeType
- Package: org.pajes.util
 + Fixed bug in QuotedString.setReplace
 + MIMEType can now be accessed as a singleton for performance
 
Release 2.2.0: 28-Apr-2003
- Package: org.pajes.db
 + Added JDBC 3.0 support
 + Improved getConnection() logic in ConnectionPool
- Package: org.pajes.db.entity
 + Added getCancel/Delete/SaveButton() methods to DefaultEditor
 + Added getCancelButton() method to DefaultViewer
 + Added mandatory, read-only and default Attributes
 + Added support for INNER and LEFT OUTER joins
- Package: org.pajes.html
 + Re-architected attribute handling
 + HTML.setContent() now handled more consistently through Tag implementation
 + Added HTML.addContent(String) and Tag.getContent() methods
 + Fixed bug in SubmitImage that caused incorrect HTML to be generated
 + Improved detection of unmatched quotes in PajeParser
 + Added main() method to PajeParser to validate one or more templates
 + Fixed detection of changed source files in PajeFactory under Tomcat
 + Added browser support to wrap attribute in InputTextArea
 + SelectList.add(List) now supports OptionItem instances as List elements
 + Allowed validation to be called as a function independently of Submit
 + Changed client side validation to handle multiple forms
 + InputDate does not display calendar if isReadOnly()
 + Changed Span to sub-class of Container
 + Allowed a specific style sheet class to be defined for read-only fields
- Package: org.pajes.html.validation
 + Added IsChecked class
 + Fixed bugs in leap year validation
- Package: org.pajes.security
 + Minimum requirement now Servlet API 2.3
 + AccessPermission.logout() method now invalidates the session
 + Added new isPermitted() method to AccessPermission
 + QueryParameters encryption must be explicitly turned on
- Package: org.pajes.servlet
 + Minimum requirement now Servlet API 2.3
 + Made service() method in AuthenticatedPajeServlet final
 + Added support for AccessPermission.isPermitted()
- Package: org.pajes.util
 + Deprecated Debug, removed DebugServlet and replaced with Trace and 
   TraceServlet.

Release 2.1.2: 30-Jul-2002
- Package: org.pajes.db.entity
 + Fixed entity caching bug

Release 2.1.1: 29-Jul-2002
- Package: org.pajes.db
 + Added ability to call some specified SQL when destroying a ConnectionPool
- Package: org.pajes.html
 + Fixed incorrect line/column reporting in PajeParser
 + Fixed shallow cloning problem with some Traversable implementations
 + Fixed ClassCastException bug on SelectList.clearDefaultvalues()
 + Allowed public access to SelectList.getOptions()
 + Added logging of PajeTemplate warnings to PajeFactory
 + Added encodeDBCSText(String, String) method to Text class
- Package: org.pajes.servlet
 + Fixed bug in HttpServletRequestWrapper in handling parameters that are 
   already decoded
 + Changed UploadedFile.renameTo() to a file read/write operation, rather 
   than calling File.renameTo(), to resolve cross-platform implementation 
   issues
 + Fixed a bug parsing encrypted query parameters when a parameter value 
   contained an asterisk
 + Modified Browser to check to see if Content-Type and Last-Modified 
   headers are already set before resetting them
 + Resolved some issues with initialisation in Servlet API 2.3+ containers
- Package: org.pajes.util
 + Fixed a bug in URI.setPrefix
 + Updated associations in MIMETypes

Release 2.1.0: 18-May-2002
 + Added support for IFRAME tag
 + Added support for INPUT TYPE="IMAGE" (SubmitImage class)
 + Added support for OPTGROUP tag
 + Added support for TABINDEX attribute of INPUT tags
 + Added TITLE attribute as a global attribute set on Tag
 + Added new setContent(String) method to HTML interface
 + Added getMaxColumns() method to Table
 + Added new setWritable(boolean, boolean) to Traversable to cascade 
   writable setting to all contained objects
 + Added new getFirstFieldByName(String) and getFirstTagbyID(String) 
   methods to TraversableElement
 + TraversableElement getFirstFieldByName, getFieldByName, getFirstTagbyID 
   and getTagByID now do case-insensitive searches
 + Head.Meta.setContent() now returns void
 + Added addStyleSheetLink() method to Head
 + Added call to InputDate field onChange handler when date selected
 + Fixed missing global attributes on ListItem
 + Fixed JavaScript error on InputPasswordConfirm caused by having the 
   same id attribute value on both the password and confirm password fields
 + Table.add() now throws TagNotFoundException(INVALID_TABLE_CONTENT) if 
   try to add something that is not a Table.Row
 + Added ability to return the path patterns used to create PajeResources
 + Added ability to return the PajeResources from a PajeFactory
 + Fixed bug in setting defaults for file modification checking and i18n in 
   PajeFactory (always set to false by default, not true as documented)
 + Fixed bug in PajeTemplate that always displayed warnings after a parse 
   failure, even if a fixed HTML source file was applied
 + Fixed bug in Browser class that caused some DBCS characters to be 
   written incorrectly
 + Fixed bug on SubmitAnchor
 + Added get/setPajeFactory and createPaje convenience methods to PajeServlet
 + Deprecated PajeServlet.handleException
 + Delayed processing of parameters and input stream in 
   HttpServletRequestWrapper so that methods like setCharacterEncoding on 
   HttpServletRequest work correctly
 + Separated Lister and Editor objects from Entity Manager, and added Viewer
 + Added ability to create a Scope from an existing WHERE clause, add an 
   IN clause, and fixed a bug in handling non-String values from a request
 + MaintenanceServlet now treats rowsAffected=0 as successful if 
   Entity.isChanged() returns false
 + Added new debugging messages and classes

Release 2.0.4: 18-Jan-2002
 + Fixed bug in Input classes that permanently set Input fields to read-only

Release 2.0.3: 16-Jan-2002
 + Fix for clone() bug in Tag submitted by mbesalduch@onebox.com
 + Fixed bug in Form constructors that caused OnChange flag to not be set
 + PlainText.getId() now always returns null
 + Added getURL() method to Anchor
 + Added accessor methods to Image
 + Added default TYPE attribute value of TEXT for INPUT tag when not specified
 + Added the ability to set the title displayed when the mouse cursor 
   traverses the pop-up calendar icon on an InputDate field
 + Added support for the disabled attribute on Input sub-classes
 + Added HSQLDB support to ConnectionPoolManager, so that the JDBC URL can be 
   dynamically reconfigured to a relative path within the ServletContext
 + Added toXMLDocument() methods to Entity
 + Added ability to set Entity values from another Entity
 + Added suppression of attributes in Entity.toXML()
 + Fixed potential NullPointerException in Entity.getValue()
 + Fixed NullPointerException in Value.setValue()
 + Fixed a bug in Debug that prevented messages from being logged

Release 2.0.2: 22-Nov-2001
 + XHTML compliance is now optional for an entire application, not just on a 
   page by page basis
 + URL Encoding is no longer automatic - now turned on via a context parameter
 + Minor performance improvements
 + Added basic auditing facility to MaintenanceServlet

Release 2.0.1: 30-Oct-2001
 + Add a pop-up JavaScript calendar to InputDate fields
 + Manager was not closing Statements after it had finised with them
 + Fixed minor bugs in automatic Entity maintenance screens
 + Fixed bug in ConnectionPool that prevented failed connections from being closed

Release 2.0.0: 17-Oct-2001
 + Servlet API 2.3 support
 + Minor performance improvements
 + Fixed bug in handling of width attribute on hr tag
 + Added ability to specify multiple style sheets for trees
 + Added static methods to TreePaje to generate JavaScript function calls to 
   modify the tree after generation
 + Uploaded files are now saved as temporary files and deleted on exit if not 
   moved or renamed
 + Fixed NullPointerException in DataAccessPaje when not using a database
 + If HttpSession.isNew() or AccessPermission.getLoginAttempts() == null, 
   AuthenticatedPajeServlet now redirects to the login page, rather than the 
   login failed page
 + Fixed Entity handling of SMALLINT and TINYINT as some JDBC drivers return 
   them as Integer, and some as Short/Byte.