------------------------------
 Requested Features
------------------------------

 o Log configuration details at startup.
 o executeQueryFor[RowSet|ResultSet]
 o OS Cache

------------------------------
 1.2.5-Release (B) - Jul 27, 2003
------------------------------

 - Added setting driverHintsEnabled="true|false" to enable/disable result set size hints
 - Hotfix specifically for PostgreSQL.  Apparently they have not finished their driver!

------------------------------
 1.2.5-Final - Jul 27, 2003
------------------------------

 - Improved PaginatedDataList initial load and goto performance (single query vs. multiple)
 - Changed transaction-pool element in dao.xml optional, for custom programmatic control
 - Changed PaginatedDataList to balk at invalid next/previous page requests
 - Changed SimpleDataSource to only rollback (automatically) if autocommit=false
 - Fixed XmlSqlMapValidator so it doesn't attempt to load datasources (rarely available)
 - Fixed bug in PaginatedDataList.previousPage() (isPreviousPageAvailable would return true on page 0)

------------------------------
 1.2.5-RC3 - Jul 20, 2003
------------------------------

 - Added management of JTA global transaction for easy distributed transactions (UserTransaction)
 - Added XmlSqlMapValidator to allow simple validation of SQL Maps during build (e.g. Ant)
 - Added direct support for java.sql.* data types (although discouraged as per best practice)
 - Added collection support to isEmpty dynamic sql tag
 - Added addExecuteListener to SqlMap to allow easy addition of listeners to all MappedStatement instances
 - Added isTransactionStarted() to DaoManager
 - Removed sql map stacked transactions.  Rollback semantics too complex/awkward (i.e. not good)
 - Fixed Map parameters to dynamic mapped statements (comparison always returned false)

------------------------------
 1.2.5-RC2 - Jul 11, 2003
------------------------------

 - Added setting to use fully qualified statement names (sqlMapName.mappedStatementName)
 - Added nested exceptions wherever possible.  (NestedException, NestedRuntimeException)
 - Improved byte[] support further to support large binaries (via Streams)
 - Changed SimpleDataSource to now use Commons Logging
 - Changed ScriptRunner to use Commons Logging (also still supports PrintWriters)

------------------------------
 1.2.5-RC1 - Jul 1, 2003
------------------------------

 - Added arbitrary driver property support to SimpleDataSource ("Driver.") [Thanks to Larry Meadors!]
 - Added #val# synonym for #value# for use with DBs where "value" is a reserved word (e.g. SAP DB)
 - Added getPageIndex() to PaginatedList interface
 - Changed method names hasXxxxPage() to isXxxxPageAvailable() (Beans compliant)
 - Changed default for useBeansMetaClasses to false (faster startup time/slower overall)
 - Fixed debug exception messages
 - Fixed dynamic greater/less tags in the case of one null property
 - Fixed hasReadableProperty/hasWriteableProperty for Map types
 - Fixed globalTransactions setting in examples
 - Fixed settings element so only desired attributes need to be set (others default)

------------------------------
 1.2.5-Beta4 - Jun 24, 2003
------------------------------

 - Added StaticBeanProbe.setUseMetaClasses(true|false);
 - Added useBeansMetaClasses="true|false" setting to SQL Map Config
 - Added MappedStatement.executeQueryForMap (conn, param, keyProp, [valueProp]) (w/cache)
 - Added MappedStatement.executeQueryForPaginatedList(conn, param, pageSize)
 - Added composite key support to result (map column="{prop1=colunm1,prop2=column2,...}")
 - Added complete byte[] support (read/write; driver dependent)
 - Added performance hints for skipRows/maxSize and break on maxSize > row count
 - Added xml config setting to disable sql map caching globally (cacheModelsEnabled="true|false")
 - Changed DaoManager constructor to protected
 - Changed composite key to use Object instead of Integer
 - Fixed $dynamicElement[]$ for iterate tag
 - Fixed useGlobalTransaction attribute name
 - Fixed SqlMap autocommit exception handling

------------------------------
 1.2.5-Beta3 - Jun 8, 2003
------------------------------

 - Added support for Jakarta DBCP for connection pooling (DAO and SQL Map)
 - Added logging via Jakarta commons-logging (included log4j examples)
 - Added support for separate DATE and TIME types (rather than just DATETIME/TIMESTAMP)
 - Added setMaxTransactions() for limiting concurrent transaction threads
 - Added settings element to sql-map-config.xml (for settings like setMaxTransactions())
 - Added SqlMap.setUseGlobalTransaction(boolean) to support global transactions (JTA)
 - Added debug JAR and reorganized distribution
 - Improved all examples to demonstrate better patterns
 - Changed sematics regarding SqlMap.startTransaction() (now stacks multiple transactions)
 - Fixed $dynamic$ placeholders in DynamicMappedStatement
 - Deprecated com.ibatis.common.log.*
 - Deprecated SqlMap setLogWriter(), getLogWritere(), log()
 - Updated libraries (JDOM, Xerces, CGLIB)
 - "Nearly New" Developer's Guide!

------------------------------
 1.2.5-Beta2 - May 21, 2003
------------------------------

 - Added optional Lazy Loading of mapped Collection and List properties (default=true)
 - Fixed parameter-class in dynamic-mapped-statement DTD
 - Fixed name:type:null inline parametersin dynamic-mapped-statement
 - Fixed complex/collection field when populated by a dynamic-mapped-statement
 - Fixed result-class for Map implementations
 - Included JUnit tests in CVS and build.

------------------------------
 1.2.5-Beta1 - May 12, 2003
------------------------------
 - Performance Release!
 - Modified StaticBeanProbe to use CGLIB rather than normal Reflection
 - if-else trees replaced with Map/handler implementations
 - ResultMap and ParameterMap now each use only a single Map to reduce lookups
 - Optional PreparedStatement Caching
 - Optionally use column indexes (instead of names) to avoid metadata lookups
 - Some other minor code optimizations
 - Started managing better JavaDocs (much thanks to Larry Meadors!)

------------------------------
 1.2.0-Final - May 7, 2003
------------------------------

 - Added methods to Resources to allow ClassLoader to be specified
 - Fixed Resources class to handle null ClassLoader case (thanks David Yaw)

------------------------------
 1.2.0-beta2 - Apr 7, 2003
------------------------------

 - Added Map and List support to static bean probe (full traversal)
 - Added 'parameterPresent' tag for checking if parameterObject exists in dynamic statements
 - Added 'empty' tag for checking null or zero length strings in dynamic statements
 - Added 'iterate' tag for iterating over a List (only) within dynamic statements
 - Added support for Collection properties (still supports List as well)
 - Added setMaxExecutePerConnection() to SqlMap to handle high volumes on limited servers
 - Improved error messages (now includes property name where error occurred)
 - Fixed Simple type cast exception if used with automap (result-class)
 - Fixed cache if executeQueryForObject and executeQueryForList used against same statement
 - Fixed inline-parameters="false" failing if no explicit parameter-map defined
 - Fixed cache returning same results for two different mapped statements with same SQL
 - Fixed BeanProbe .hasReadableProperty(String)/.hasWritableProperty(String) method signatures

------------------------------
 1.2.0-beta1 - Mar 15, 2003
------------------------------

 - Added dynamic mapped statements (dynamic SQL for both queries and updates)
 - Added configurable cache-models (flush policies etc.)
 - Added parameter-class for type checking on the mapped-statement parameter object
 - Added result-class for very quick and simple results mapping
 - Added SqlMapDaoTransactionPool for DAO API to make integrating SQL Maps and DAOs much easier
 - Added local transaction API to DaoManager to reduce/eliminate transaction parameter passing
 - Added batch update support to SQL Map API
 - Added optional PreparedStatement caching
 - Added lots of examples
 - Added XmlDaoManagerBuilder for a more consistent and more modular API
 - Improved caching (for both individiual objects and collections)
 - Changed DTDs to resolve from JAR file (no net connection required)
 - Fixed order of closing result sets, prepared statements
 - Fixed dynamic part HashMap/Simple type support
 - Fixed caching bug (all were being stored as STRONG)
 - Fixed byte[] bug for Oracle (workaround)

------------------------------
 1.1.0-Final - Feb 21, 2003
------------------------------

 - Added support simple type parameters (String, Integer, Boolean etc...)

------------------------------
 1.1.0-rc3 - Feb 20, 2003
------------------------------

 - Added support simple type collections and single results (String, Integer, Boolean etc...)
 - Added new Value types (to replace Key and Result types)
 - Deprecated Key and Result types

------------------------------
 1.1.0-rc2 - Feb 09, 2003
------------------------------

 - Added support for Map to be used as a ResultMap and/or ParameterMap
 - Added RowHandler interface and executeQueryWithRowHandler for row-by-row processing
 - Added Resources.getResourceAsReader(String resource)
 - Added optional XML validation to be in XmlSqlMapBuilder
 - Improved Error Reporting
 - Improved CacheKey comparisons --now compares all bean properties
 - Fixed DTD bugs.

------------------------------
 1.1.0-rc1 - Jan 21, 2003
------------------------------

 - Added support for null value constants in SQL Maps (including primitives)
 - Added new alternate SqlMap APIs for executing mapped statements
 - Added new SqlMap APIs for starting transactions, committing and rolling back
 - Added new SqlMapBuilder method to build SQL Maps based on a Reader
 - Added new SqlMap configuration file type for explicitly specifying SQL Maps
 - Added DataSource configuration to SQL Map configuration file
 - Added properties placeholders to SQL Maps (just like ant: ${DB_URL})
 - Changed property placeholders to allow System properties to be used in place of properties file
 - Changed parameter-map="inline" to inline-parameters="true" (or none for default of true)
 - Changed CLOB support so that it must be specified in result map-type attribute (e.g. type="CLOB")
 - Changed ScriptRunner (added new constructors, runScript now runs from a Reader instead of a File
 - Changed DTD filenames (new names are dao.dtd, sql-map.dtd and sql-map-config.dtd)
 - Updated DTDs for SQL Map, DAO and SQL Config files
 - Refactored MappedStatement setBeanProperty
 - Fixed minor bug in executeQueryForObject with resultObject and cache
 - Fixed bug in getPropertyTypeForSetter()/Getter()

------------------------------
 1.0.9 - December 17, 2002
------------------------------
 - Added DaoTransaction.release() method so transactions can release themselves.
 - Added Cache.flush() and SqlMap.flushCache() to clear cache contents.

------------------------------
 1.0.8 - November 30, 2002
------------------------------
 - Added CLOB to String mapping support (read only)
 - Added dao.xml properties placeholders (just like ant: ${DB_URL})
 - Refactored XML builders (cleaned up code, fixed some minor bugs)

------------------------------
 1.0.7 - November 17, 2002
------------------------------
 - Added IntegerResult and StringResult

------------------------------
 1.0.6 - November 10, 2002
------------------------------
 - Added MappedStatement.executeQueryForObject (connection, parameterObject, resultObject)
 - Added MappedStatement.executeQueryForList (connection, parameterObject, maxResults, skipResults)
 - Added JndiDataSourceDaoTransactionPool (for looking up a DataSource in a JNDI context)
 - Added <mapped-statement [cache-model="STRONG|SOFT|WEAK"]>

------------------------------
 1.0.5 - November 4, 2002
------------------------------
 - Minor performance improvement

------------------------------
 1.0.4 - October 31, 2002
------------------------------
 - Introduced optional column type specifiers for parameter maps
    -Some databases (Oracle) require the type for the setNull() method

------------------------------
 1.0.3 - October 31, 2002
------------------------------
 - Stopped outputting all SQL from XmlSqlMapBuilder

------------------------------
 1.0.2 - October 30, 2002
------------------------------
 - Changed method of setting NULL column values
 - Fixed bug with ignored CDATA blocks in mapped statements

------------------------------
 1.0.1 - September 26, 2002
------------------------------
 - Added support for byte[] (Thanks to Serge Sozonoff)
 - Result set columns are now allways read in the order specified in SQL Map XML

------------------------------
 1.0.0 - September 5, 2002
------------------------------
 - First release