[xwiki-devs] Hibernate 3.3.1 upgrade?
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could do it as soon as we create the 1.6 branch (next week). WDYT? Thanks -Vincent Here's the changelog since our 3.2.6 version: 3.3.0CR1 Changes: ** Bug * [HHH-1312] - Unclosed ResultSet when using Identity * [HHH-1396] - Table.validateColumns fails on valid column * [HHH-1569] - Immutable Natural Id check fails with ArrayIndexOutOfBounds in some cases * [HHH-1593] - Infinite loop/StackOverflow when calling configuration.setListener(null) * [HHH-1753] - DB2Dialect.getCurrentTimestampSQLFunctionName() uses Oracle syntax * [HHH-1916] - param values in generator element should be trimmed during HbmBinding * [HHH-1920] - Incorrect documentation regarding XML manipulation in Hibernate reference manual (chapter 18.3). * [HHH-1956] - Interceptor.afterTransactionCompletion not called with JTATransaction (CacheSynchronization.hibernateTransaction not set) * [HHH-2159] - NullPointerException in FromElement#findIntendedAliasedFromElementBasedOnCrazyJPARequirements with 'hibernate.query.jpaql_strict_compliance' enabled * [HHH-2164] - Minor bug in section "20.1.1. Customizing the schema" * [HHH-2200] - Memory leak in AbstractBatcher with Generated Properties * [HHH-2320] - Regression: optional properties under a <join> tag no longer update properly * [HHH-2503] - AbstractEntityPersister swallows JDBCExceptions in processGeneratedProperties * [HHH-2513] - Abusive WARN logged during deserialization of replicated SessionFactory * [HHH-2542] - NullPointerException in TypeFactory.replaceAssociations for ComponentType * [HHH-2553] - New LoadContexts Implementation causing possible performance degradation * [HHH-2593] - Keyword UNION is prefixed with "this_." in filter conditions * [HHH-2616] - No event is fired on Collection recreate/remove/ update action * [HHH-2627] - Generated properties leak prepared statements in Hibernate 3.2.3 and higher. * [HHH-2631] - Leaking PreparedStatement and ResultSet via CollectionLoadContext instances maintained in Map collectionLoadContexts in LoadContexts * [HHH-2711] - PropertyAccessException with backref and <composite-map-key/> * [HHH-2726] - spelling o your CLASSPATH * [HHH-2728] - Calling session.clear() while retrieving objects via an iterator will cause a "LazyInitializationException - No Session" by the CGLIBLazyInitializer * [HHH-2788] - Oracl8iDialect No Dialect mapping for JDBC type 91 * [HHH-2795] - CollectionLoadContexts for empy collections are not removed until PersistenceContext.clear() * [HHH-2816] - DefaultFlushEntityEventListener.checkNaturalId() causes extra SELECTs on read-only entities * [HHH-2833] - insert-select query fails with NPE when select includes join * [HHH-2857] - schemaSupport for HSQLDialect remote connections doesn't work * [HHH-2861] - cascade="delete-orphan,all" is ignored * [HHH-2863] - testsuite fix-ups for maven and/or directory changes * [HHH-2864] - Merging a detached instance with a new child in a unidirectional one-to-many association fails if the parent was previously loaded as a proxy * [HHH-2892] - skip up-to-date checks of query cache for natural- id only if immutable * [HHH-2928] - optimizers for enhanced id generators should be synchronized against multi-threaded access * [HHH-2948] - QueryStatistics.executionMinTime always = 0 * [HHH-3111] - WebSphereExtendedJTATransactionLookup $TransactionManagerAdapter.getStatus() implemented incorrect * [HHH-3140] - Region prefix ignored for entities and collections ** Deprecation * [HHH-2755] - Wrong "jsdk.jar" referenced in the tutorial ** Improvement * [HHH-1786] - JTASessionContext.CleanupSynch does not remove sessions from currentSessionMap * [HHH-2048] - Incomplete MappingException at org.hibernate.mapping.SimpleValue * [HHH-2156] - Section 19.3, "Managing the caches" doesn't document CacheMode.IGNORE * [HHH-2533] - redesign Cache/CacheProviders * [HHH-2662] - Workaround PostgreSQL issues in testsuite * [HHH-2663] - Map java.sql.Types.REAL to Hibernate FloatType for auto-discovery stuff * [HHH-2665] - Split Oracle9Dialect into Oracle9iDialect and Oracle10gDialect * [HHH-2669] - Unequivocally map MySQL LOB types to the LONG variant * [HHH-2682] - support for auto-discovery of H2 dialect * [HHH-2696] - Consider migrating to slf4j * [HHH-2761] - Handle null and empty string consistently in PropertiesHelper * [HHH-2778] - TransactionManagerLookup implementation for Bitronix Transaction Manager * [HHH-2789] - Section 19.2 of the documentation does not show OSCache as supporting clusters. It does. * [HHH-2822] - timestamp extraction functions for SAPDBDialect * [HHH-2826] - IS [NOT] NULL checks with component values * [HHH-2859] - Introduce a 'Work' API for user to perform JDBC work * [HHH-3131] - Add a method to ActionQueue to tell whether there are currently entries in the executions collection ** New Feature * [HHH-1] - Optimize Hibernate for the bulk insertion of related entities * [HHH-2555] - Create new RegionFactory for JBossCache * [HHH-2884] - Provide a sessionFactory close event or hook for the event listeners ** Patch * [HHH-952] - Patch to allow subqueries with joins using Criteria API and Subqueries with DetachedCriteria * [HHH-2070] - Expand DB2Dialect auto-discovery support (Martin Renner) * [HHH-2519] - Schema dropping not documented with hibernate.hbm2ddl.auto=create * [HHH-2630] - Hibernate Dialect is not auto-detected for Sybase ASE and DB2 (Shelley McGowan) * [HHH-2758] - Patch IngresDialect based on certification * [HHH-2839] - Don't use dummy dual table for hsqldb (David Bala? ic) * [HHH-2849] - Better error logging in IdentifierGeneratorFactory (Antony Stubbs) * [HHH-2957] - ActionQueue Insertion sort performance degrades exponentially (Jay Erb) * [HHH-3084] - DialectFactory detection of Ingres metadata (Michael Leo) ** Task * [HHH-2702] - Officially move to JDK 1.4 * [HHH-2704] - Migrate to Maven2 for build 3.3.0CR2 changes: ** Bug * [HHH-1697] - OracleDialect fails to recognize sequence accessible through syonyms when validating schema * [HHH-2604] - Isolator.JdbcDelegate masks the exception if it isn't possible to open a connection. * [HHH-2683] - "datediff" is declared as NoArgSQLFunction in H2Dialect, but actually accepts 3 arguments. * [HHH-3006] - ConcurrentModificationException in AbstractBatcher results in infinite loop * [HHH-3229] - Merge can fail when there is a transient entity reachable by multiple paths and at least one path does not cascade on merge * [HHH-3257] - Content images not displayed * [HHH-3260] - Hibernate wraps a listener init or destroy exception into an AssertionFailure * [HHH-3261] - Do not wrap exceptions raised by event listeners (at init or destroy time) * [HHH-3265] - change license url in pom to http://www.gnu.org/licenses/lgpl-2.1.html * [HHH-3266] - distribution bundle missing jta dependency * [HHH-3272] - using of Integer.valueOf(int), which is not available in JDK 1.4 * [HHH-3282] - DB2Dialect should report supportsLobValueChangePropogation() == false * [HHH-3309] - Serialize/Deserialize problem in AbstractLazyInitializer with entitymode.MAP. * [HHH-3409] - ResultTransformers need smarter equals() and hashCode() impls ** Improvement * [HHH-1786] - JTASessionContext.CleanupSynch does not remove sessions from currentSessionMap * [HHH-2060] - To be able to use <generator> with <composite-id> * [HHH-2506] - Make javassist the default ByteCodeProvider * [HHH-2875] - repackage cglib/asm under org.hibernate namespace * [HHH-3269] - upgrade to jDocBook plugin version 2.1.1 * [HHH-3283] - protect BulkManipulationTest#testInsertWithGeneratedTimestampVersion where Dialect#supportsParametersInInsertSelect == false * [HHH-3358] - Enable JTATransactionFactory and JTATransaction factory to work without JNDI * [HHH-3390] - Use READ_COMMITTED for JBC 2 cache ** Patch * [HHH-3294] - Version incorrectly incremented for unchanged persistent entity that is parent of a one to many relationship ** Task * [HHH-3270] - follow up on documentation license questions 3.3.0GA changes: ** Bug * [HHH-2021] - org.hibernate.cache.QueryKey has a fragile equals() method * [HHH-3333] - build Wiki has a typo and includes a lie re:jdk version * [HHH-3378] - DB2CustomSQLTest fails, need "RESULT SETS 1" in proc definitions * [HHH-3430] - distribution bundles cglib directly instead of the hibernate repackaging ** Improvement * [HHH-2926] - All *Event must inherit AbstractEvent * [HHH-3247] - Provide more information in TypeMismatchException message 3.3.0SP1 changes: ** Bug * [HHH-3437] - re-add incorrectly removed public getSource() methods on events 3.3.1GA changes: ** Bug * [HHH-2694] - create-drop with c3p0 causes SQLException * [HHH-3231] - org.hibernate.id.enhanced.TableGenerator throws "IllegalArgumentException: alias not found: tbl" under Oracle * [HHH-3392] - Query Cache entries are not distributable * [HHH-3472] - JTASessionContext broken for WebSphere ** Improvement * [HHH-2686] - Include a primary key in the sequence table used by id.enhanced.TableGenerator * [HHH-3249] - Make o.h.id.enhanced.TableGenerator more extension- friendly * [HHH-3424] - concat() with param binding fails function on derby * [HHH-3454] - Allow enhanced.TableGenerator to segment itself per entity as default * [HHH-3456] - Make o.h.id.enhanced.SequenceStyleGenerator more extension-friendly * [HHH-3471] - Provide true-false type that maps to int values ** Task * [HHH-3474] - Upgrade to use slf4j 1.5 (1.5.2)
Hello, Just a side note: Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki (Again it is *not* an implementation, it's just a facade, with plug-able implementations.) greetings Jonas Vincent Massol wrote:
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could do it as soon as we create the 1.6 branch (next week).
WDYT?
Thanks -Vincent
Here's the changelog since our 3.2.6 version:
3.3.0CR1 Changes:
** Bug * [HHH-1312] - Unclosed ResultSet when using Identity * [HHH-1396] - Table.validateColumns fails on valid column * [HHH-1569] - Immutable Natural Id check fails with ArrayIndexOutOfBounds in some cases * [HHH-1593] - Infinite loop/StackOverflow when calling configuration.setListener(null) * [HHH-1753] - DB2Dialect.getCurrentTimestampSQLFunctionName() uses Oracle syntax * [HHH-1916] - param values in generator element should be trimmed during HbmBinding * [HHH-1920] - Incorrect documentation regarding XML manipulation in Hibernate reference manual (chapter 18.3). * [HHH-1956] - Interceptor.afterTransactionCompletion not called with JTATransaction (CacheSynchronization.hibernateTransaction not set) * [HHH-2159] - NullPointerException in FromElement#findIntendedAliasedFromElementBasedOnCrazyJPARequirements with 'hibernate.query.jpaql_strict_compliance' enabled * [HHH-2164] - Minor bug in section "20.1.1. Customizing the schema" * [HHH-2200] - Memory leak in AbstractBatcher with Generated Properties * [HHH-2320] - Regression: optional properties under a <join> tag no longer update properly * [HHH-2503] - AbstractEntityPersister swallows JDBCExceptions in processGeneratedProperties * [HHH-2513] - Abusive WARN logged during deserialization of replicated SessionFactory * [HHH-2542] - NullPointerException in TypeFactory.replaceAssociations for ComponentType * [HHH-2553] - New LoadContexts Implementation causing possible performance degradation * [HHH-2593] - Keyword UNION is prefixed with "this_." in filter conditions * [HHH-2616] - No event is fired on Collection recreate/remove/ update action * [HHH-2627] - Generated properties leak prepared statements in Hibernate 3.2.3 and higher. * [HHH-2631] - Leaking PreparedStatement and ResultSet via CollectionLoadContext instances maintained in Map collectionLoadContexts in LoadContexts * [HHH-2711] - PropertyAccessException with backref and <composite-map-key/> * [HHH-2726] - spelling o your CLASSPATH * [HHH-2728] - Calling session.clear() while retrieving objects via an iterator will cause a "LazyInitializationException - No Session" by the CGLIBLazyInitializer * [HHH-2788] - Oracl8iDialect No Dialect mapping for JDBC type 91 * [HHH-2795] - CollectionLoadContexts for empy collections are not removed until PersistenceContext.clear() * [HHH-2816] - DefaultFlushEntityEventListener.checkNaturalId() causes extra SELECTs on read-only entities * [HHH-2833] - insert-select query fails with NPE when select includes join * [HHH-2857] - schemaSupport for HSQLDialect remote connections doesn't work * [HHH-2861] - cascade="delete-orphan,all" is ignored * [HHH-2863] - testsuite fix-ups for maven and/or directory changes * [HHH-2864] - Merging a detached instance with a new child in a unidirectional one-to-many association fails if the parent was previously loaded as a proxy * [HHH-2892] - skip up-to-date checks of query cache for natural- id only if immutable * [HHH-2928] - optimizers for enhanced id generators should be synchronized against multi-threaded access * [HHH-2948] - QueryStatistics.executionMinTime always = 0 * [HHH-3111] - WebSphereExtendedJTATransactionLookup $TransactionManagerAdapter.getStatus() implemented incorrect * [HHH-3140] - Region prefix ignored for entities and collections
** Deprecation * [HHH-2755] - Wrong "jsdk.jar" referenced in the tutorial
** Improvement * [HHH-1786] - JTASessionContext.CleanupSynch does not remove sessions from currentSessionMap * [HHH-2048] - Incomplete MappingException at org.hibernate.mapping.SimpleValue * [HHH-2156] - Section 19.3, "Managing the caches" doesn't document CacheMode.IGNORE * [HHH-2533] - redesign Cache/CacheProviders * [HHH-2662] - Workaround PostgreSQL issues in testsuite * [HHH-2663] - Map java.sql.Types.REAL to Hibernate FloatType for auto-discovery stuff * [HHH-2665] - Split Oracle9Dialect into Oracle9iDialect and Oracle10gDialect * [HHH-2669] - Unequivocally map MySQL LOB types to the LONG variant * [HHH-2682] - support for auto-discovery of H2 dialect * [HHH-2696] - Consider migrating to slf4j * [HHH-2761] - Handle null and empty string consistently in PropertiesHelper * [HHH-2778] - TransactionManagerLookup implementation for Bitronix Transaction Manager * [HHH-2789] - Section 19.2 of the documentation does not show OSCache as supporting clusters. It does. * [HHH-2822] - timestamp extraction functions for SAPDBDialect * [HHH-2826] - IS [NOT] NULL checks with component values * [HHH-2859] - Introduce a 'Work' API for user to perform JDBC work * [HHH-3131] - Add a method to ActionQueue to tell whether there are currently entries in the executions collection
** New Feature * [HHH-1] - Optimize Hibernate for the bulk insertion of related entities * [HHH-2555] - Create new RegionFactory for JBossCache * [HHH-2884] - Provide a sessionFactory close event or hook for the event listeners
** Patch * [HHH-952] - Patch to allow subqueries with joins using Criteria API and Subqueries with DetachedCriteria * [HHH-2070] - Expand DB2Dialect auto-discovery support (Martin Renner) * [HHH-2519] - Schema dropping not documented with hibernate.hbm2ddl.auto=create * [HHH-2630] - Hibernate Dialect is not auto-detected for Sybase ASE and DB2 (Shelley McGowan) * [HHH-2758] - Patch IngresDialect based on certification * [HHH-2839] - Don't use dummy dual table for hsqldb (David Bala? ic) * [HHH-2849] - Better error logging in IdentifierGeneratorFactory (Antony Stubbs) * [HHH-2957] - ActionQueue Insertion sort performance degrades exponentially (Jay Erb) * [HHH-3084] - DialectFactory detection of Ingres metadata (Michael Leo)
** Task * [HHH-2702] - Officially move to JDK 1.4 * [HHH-2704] - Migrate to Maven2 for build
3.3.0CR2 changes:
** Bug * [HHH-1697] - OracleDialect fails to recognize sequence accessible through syonyms when validating schema * [HHH-2604] - Isolator.JdbcDelegate masks the exception if it isn't possible to open a connection. * [HHH-2683] - "datediff" is declared as NoArgSQLFunction in H2Dialect, but actually accepts 3 arguments. * [HHH-3006] - ConcurrentModificationException in AbstractBatcher results in infinite loop * [HHH-3229] - Merge can fail when there is a transient entity reachable by multiple paths and at least one path does not cascade on merge * [HHH-3257] - Content images not displayed * [HHH-3260] - Hibernate wraps a listener init or destroy exception into an AssertionFailure * [HHH-3261] - Do not wrap exceptions raised by event listeners (at init or destroy time) * [HHH-3265] - change license url in pom to http://www.gnu.org/licenses/lgpl-2.1.html * [HHH-3266] - distribution bundle missing jta dependency * [HHH-3272] - using of Integer.valueOf(int), which is not available in JDK 1.4 * [HHH-3282] - DB2Dialect should report supportsLobValueChangePropogation() == false * [HHH-3309] - Serialize/Deserialize problem in AbstractLazyInitializer with entitymode.MAP. * [HHH-3409] - ResultTransformers need smarter equals() and hashCode() impls
** Improvement * [HHH-1786] - JTASessionContext.CleanupSynch does not remove sessions from currentSessionMap * [HHH-2060] - To be able to use <generator> with <composite-id> * [HHH-2506] - Make javassist the default ByteCodeProvider * [HHH-2875] - repackage cglib/asm under org.hibernate namespace * [HHH-3269] - upgrade to jDocBook plugin version 2.1.1 * [HHH-3283] - protect BulkManipulationTest#testInsertWithGeneratedTimestampVersion where Dialect#supportsParametersInInsertSelect == false * [HHH-3358] - Enable JTATransactionFactory and JTATransaction factory to work without JNDI * [HHH-3390] - Use READ_COMMITTED for JBC 2 cache
** Patch * [HHH-3294] - Version incorrectly incremented for unchanged persistent entity that is parent of a one to many relationship
** Task * [HHH-3270] - follow up on documentation license questions
3.3.0GA changes:
** Bug * [HHH-2021] - org.hibernate.cache.QueryKey has a fragile equals() method * [HHH-3333] - build Wiki has a typo and includes a lie re:jdk version * [HHH-3378] - DB2CustomSQLTest fails, need "RESULT SETS 1" in proc definitions * [HHH-3430] - distribution bundles cglib directly instead of the hibernate repackaging
** Improvement * [HHH-2926] - All *Event must inherit AbstractEvent * [HHH-3247] - Provide more information in TypeMismatchException message
3.3.0SP1 changes:
** Bug * [HHH-3437] - re-add incorrectly removed public getSource() methods on events
3.3.1GA changes:
** Bug * [HHH-2694] - create-drop with c3p0 causes SQLException * [HHH-3231] - org.hibernate.id.enhanced.TableGenerator throws "IllegalArgumentException: alias not found: tbl" under Oracle * [HHH-3392] - Query Cache entries are not distributable * [HHH-3472] - JTASessionContext broken for WebSphere
** Improvement * [HHH-2686] - Include a primary key in the sequence table used by id.enhanced.TableGenerator * [HHH-3249] - Make o.h.id.enhanced.TableGenerator more extension- friendly * [HHH-3424] - concat() with param binding fails function on derby * [HHH-3454] - Allow enhanced.TableGenerator to segment itself per entity as default * [HHH-3456] - Make o.h.id.enhanced.SequenceStyleGenerator more extension-friendly * [HHH-3471] - Provide true-false type that maps to int values
** Task * [HHH-3474] - Upgrade to use slf4j 1.5 (1.5.2)
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
On Sep 13, 2008, at 11:30 PM, Jonas von Malottki wrote:
Hello,
Just a side note:
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki (Again it is *not* an implementation, it's just a facade, with plug- able implementations.)
But we don't need it... We have our own simple facade which can be plugged to any logging system including slf4j. See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/m... I'm completely against replacing it with any external framework since those frameworks come and go. As an example the de facto standard was log4j a few years ago, then came commons-logging, then it was included in the JDK, then now slf4j. Then who knows what will happen tomorrow. Our rule is to use our own interface for all our core components so that we are independent of such changes. Thanks -Vincent
Vincent Massol wrote:
Might be good to upgrade to Hibernate 3.3.1 for Platform 1.7. We could do it as soon as we create the 1.6 branch (next week).
WDYT?
Thanks -Vincent
Here's the changelog since our 3.2.6 version:
3.3.0CR1 Changes:
** Bug * [HHH-1312] - Unclosed ResultSet when using Identity * [HHH-1396] - Table.validateColumns fails on valid column * [HHH-1569] - Immutable Natural Id check fails with ArrayIndexOutOfBounds in some cases * [HHH-1593] - Infinite loop/StackOverflow when calling configuration.setListener(null) * [HHH-1753] - DB2Dialect.getCurrentTimestampSQLFunctionName() uses Oracle syntax * [HHH-1916] - param values in generator element should be trimmed during HbmBinding * [HHH-1920] - Incorrect documentation regarding XML manipulation in Hibernate reference manual (chapter 18.3). * [HHH-1956] - Interceptor.afterTransactionCompletion not called with JTATransaction (CacheSynchronization.hibernateTransaction not set) * [HHH-2159] - NullPointerException in FromElement#findIntendedAliasedFromElementBasedOnCrazyJPARequirements with 'hibernate.query.jpaql_strict_compliance' enabled * [HHH-2164] - Minor bug in section "20.1.1. Customizing the schema" * [HHH-2200] - Memory leak in AbstractBatcher with Generated Properties * [HHH-2320] - Regression: optional properties under a <join> tag no longer update properly * [HHH-2503] - AbstractEntityPersister swallows JDBCExceptions in processGeneratedProperties * [HHH-2513] - Abusive WARN logged during deserialization of replicated SessionFactory * [HHH-2542] - NullPointerException in TypeFactory.replaceAssociations for ComponentType * [HHH-2553] - New LoadContexts Implementation causing possible performance degradation * [HHH-2593] - Keyword UNION is prefixed with "this_." in filter conditions * [HHH-2616] - No event is fired on Collection recreate/remove/ update action * [HHH-2627] - Generated properties leak prepared statements in Hibernate 3.2.3 and higher. * [HHH-2631] - Leaking PreparedStatement and ResultSet via CollectionLoadContext instances maintained in Map collectionLoadContexts in LoadContexts * [HHH-2711] - PropertyAccessException with backref and <composite-map-key/> * [HHH-2726] - spelling o your CLASSPATH * [HHH-2728] - Calling session.clear() while retrieving objects via an iterator will cause a "LazyInitializationException - No Session" by the CGLIBLazyInitializer * [HHH-2788] - Oracl8iDialect No Dialect mapping for JDBC type 91 * [HHH-2795] - CollectionLoadContexts for empy collections are not removed until PersistenceContext.clear() * [HHH-2816] - DefaultFlushEntityEventListener.checkNaturalId() causes extra SELECTs on read-only entities * [HHH-2833] - insert-select query fails with NPE when select includes join * [HHH-2857] - schemaSupport for HSQLDialect remote connections doesn't work * [HHH-2861] - cascade="delete-orphan,all" is ignored * [HHH-2863] - testsuite fix-ups for maven and/or directory changes * [HHH-2864] - Merging a detached instance with a new child in a unidirectional one-to-many association fails if the parent was previously loaded as a proxy * [HHH-2892] - skip up-to-date checks of query cache for natural- id only if immutable * [HHH-2928] - optimizers for enhanced id generators should be synchronized against multi-threaded access * [HHH-2948] - QueryStatistics.executionMinTime always = 0 * [HHH-3111] - WebSphereExtendedJTATransactionLookup $TransactionManagerAdapter.getStatus() implemented incorrect * [HHH-3140] - Region prefix ignored for entities and collections
** Deprecation * [HHH-2755] - Wrong "jsdk.jar" referenced in the tutorial
** Improvement * [HHH-1786] - JTASessionContext.CleanupSynch does not remove sessions from currentSessionMap * [HHH-2048] - Incomplete MappingException at org.hibernate.mapping.SimpleValue * [HHH-2156] - Section 19.3, "Managing the caches" doesn't document CacheMode.IGNORE * [HHH-2533] - redesign Cache/CacheProviders * [HHH-2662] - Workaround PostgreSQL issues in testsuite * [HHH-2663] - Map java.sql.Types.REAL to Hibernate FloatType for auto-discovery stuff * [HHH-2665] - Split Oracle9Dialect into Oracle9iDialect and Oracle10gDialect * [HHH-2669] - Unequivocally map MySQL LOB types to the LONG variant * [HHH-2682] - support for auto-discovery of H2 dialect * [HHH-2696] - Consider migrating to slf4j * [HHH-2761] - Handle null and empty string consistently in PropertiesHelper * [HHH-2778] - TransactionManagerLookup implementation for Bitronix Transaction Manager * [HHH-2789] - Section 19.2 of the documentation does not show OSCache as supporting clusters. It does. * [HHH-2822] - timestamp extraction functions for SAPDBDialect * [HHH-2826] - IS [NOT] NULL checks with component values * [HHH-2859] - Introduce a 'Work' API for user to perform JDBC work * [HHH-3131] - Add a method to ActionQueue to tell whether there are currently entries in the executions collection
** New Feature * [HHH-1] - Optimize Hibernate for the bulk insertion of related entities * [HHH-2555] - Create new RegionFactory for JBossCache * [HHH-2884] - Provide a sessionFactory close event or hook for the event listeners
** Patch * [HHH-952] - Patch to allow subqueries with joins using Criteria API and Subqueries with DetachedCriteria * [HHH-2070] - Expand DB2Dialect auto-discovery support (Martin Renner) * [HHH-2519] - Schema dropping not documented with hibernate.hbm2ddl.auto=create * [HHH-2630] - Hibernate Dialect is not auto-detected for Sybase ASE and DB2 (Shelley McGowan) * [HHH-2758] - Patch IngresDialect based on certification * [HHH-2839] - Don't use dummy dual table for hsqldb (David Bala? ic) * [HHH-2849] - Better error logging in IdentifierGeneratorFactory (Antony Stubbs) * [HHH-2957] - ActionQueue Insertion sort performance degrades exponentially (Jay Erb) * [HHH-3084] - DialectFactory detection of Ingres metadata (Michael Leo)
** Task * [HHH-2702] - Officially move to JDK 1.4 * [HHH-2704] - Migrate to Maven2 for build
3.3.0CR2 changes:
** Bug * [HHH-1697] - OracleDialect fails to recognize sequence accessible through syonyms when validating schema * [HHH-2604] - Isolator.JdbcDelegate masks the exception if it isn't possible to open a connection. * [HHH-2683] - "datediff" is declared as NoArgSQLFunction in H2Dialect, but actually accepts 3 arguments. * [HHH-3006] - ConcurrentModificationException in AbstractBatcher results in infinite loop * [HHH-3229] - Merge can fail when there is a transient entity reachable by multiple paths and at least one path does not cascade on merge * [HHH-3257] - Content images not displayed * [HHH-3260] - Hibernate wraps a listener init or destroy exception into an AssertionFailure * [HHH-3261] - Do not wrap exceptions raised by event listeners (at init or destroy time) * [HHH-3265] - change license url in pom to http://www.gnu.org/licenses/lgpl-2.1.html * [HHH-3266] - distribution bundle missing jta dependency * [HHH-3272] - using of Integer.valueOf(int), which is not available in JDK 1.4 * [HHH-3282] - DB2Dialect should report supportsLobValueChangePropogation() == false * [HHH-3309] - Serialize/Deserialize problem in AbstractLazyInitializer with entitymode.MAP. * [HHH-3409] - ResultTransformers need smarter equals() and hashCode() impls
** Improvement * [HHH-1786] - JTASessionContext.CleanupSynch does not remove sessions from currentSessionMap * [HHH-2060] - To be able to use <generator> with <composite-id> * [HHH-2506] - Make javassist the default ByteCodeProvider * [HHH-2875] - repackage cglib/asm under org.hibernate namespace * [HHH-3269] - upgrade to jDocBook plugin version 2.1.1 * [HHH-3283] - protect BulkManipulationTest#testInsertWithGeneratedTimestampVersion where Dialect#supportsParametersInInsertSelect == false * [HHH-3358] - Enable JTATransactionFactory and JTATransaction factory to work without JNDI * [HHH-3390] - Use READ_COMMITTED for JBC 2 cache
** Patch * [HHH-3294] - Version incorrectly incremented for unchanged persistent entity that is parent of a one to many relationship
** Task * [HHH-3270] - follow up on documentation license questions
3.3.0GA changes:
** Bug * [HHH-2021] - org.hibernate.cache.QueryKey has a fragile equals() method * [HHH-3333] - build Wiki has a typo and includes a lie re:jdk version * [HHH-3378] - DB2CustomSQLTest fails, need "RESULT SETS 1" in proc definitions * [HHH-3430] - distribution bundles cglib directly instead of the hibernate repackaging
** Improvement * [HHH-2926] - All *Event must inherit AbstractEvent * [HHH-3247] - Provide more information in TypeMismatchException message
3.3.0SP1 changes:
** Bug * [HHH-3437] - re-add incorrectly removed public getSource() methods on events
3.3.1GA changes:
** Bug * [HHH-2694] - create-drop with c3p0 causes SQLException * [HHH-3231] - org.hibernate.id.enhanced.TableGenerator throws "IllegalArgumentException: alias not found: tbl" under Oracle * [HHH-3392] - Query Cache entries are not distributable * [HHH-3472] - JTASessionContext broken for WebSphere
** Improvement * [HHH-2686] - Include a primary key in the sequence table used by id.enhanced.TableGenerator * [HHH-3249] - Make o.h.id.enhanced.TableGenerator more extension- friendly * [HHH-3424] - concat() with param binding fails function on derby * [HHH-3454] - Allow enhanced.TableGenerator to segment itself per entity as default * [HHH-3456] - Make o.h.id.enhanced.SequenceStyleGenerator more extension-friendly * [HHH-3471] - Provide true-false type that maps to int values
** Task * [HHH-3474] - Upgrade to use slf4j 1.5 (1.5.2)
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
Hi, Vincent Massol wrote:
On Sep 13, 2008, at 11:30 PM, Jonas von Malottki wrote:
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki (Again it is *not* an implementation, it's just a facade, with plug- able implementations.)
But we don't need it... We have our own simple facade which can be plugged to any logging system including slf4j.
See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/m...
Ah, seeing this remembered me, that I wanted to introduce one of the slf4j features: delayed expanding of messages for logging see: http://n2.nabble.com/Logging-architecture-proposal-tt516791.html#none I have done a small patch with this now (attachment). Or should I create a Jira issue? An SLF4J Logger implementation is also very easy then. And I can use it ;). Greetings Jonas
I'm completely against replacing it with any external framework since those frameworks come and go. As an example the de facto standard was log4j a few years ago, then came commons-logging, then it was included in the JDK, then now slf4j. Then who knows what will happen tomorrow. Our rule is to use our own interface for all our core components so that we are independent of such changes.
Thanks -Vincent
Hi Jonas, On Sep 14, 2008, at 1:27 AM, Jonas von Malottki wrote:
Hi,
Vincent Massol wrote:
On Sep 13, 2008, at 11:30 PM, Jonas von Malottki wrote:
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki (Again it is *not* an implementation, it's just a facade, with plug- able implementations.)
But we don't need it... We have our own simple facade which can be plugged to any logging system including slf4j. See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/m...
Ah, seeing this remembered me, that I wanted to introduce one of the slf4j features: delayed expanding of messages for logging see: http://n2.nabble.com/Logging-architecture-proposal-tt516791.html#none
Ah I had forgotten this email of yours, sorry about that. I've read it again and it seems good to me, especially since our best practice is now to use this: logger.debug(String.format("text with %s in format syntax", var1, var2,...); So I'm +1 for modifying our logger interface to support this style. Actually I even think we should maybe deprecate the old signatures.
I have done a small patch with this now (attachment). Or should I create a Jira issue?
Can you create a jira issue and attach your patch there? Thanks a lot Jonas for pursuing this! -Vincent
An SLF4J Logger implementation is also very easy then. And I can use it ;).
Greetings Jonas
I'm completely against replacing it with any external framework since those frameworks come and go. As an example the de facto standard was log4j a few years ago, then came commons-logging, then it was included in the JDK, then now slf4j. Then who knows what will happen tomorrow. Our rule is to use our own interface for all our core components so that we are independent of such changes. Thanks -Vincent
Index: core/xwiki-component/src/main/java/org/xwiki/component/ logging/Logger.java =================================================================== --- core/xwiki-component/src/main/java/org/xwiki/component/logging/ Logger.java (revision 12676) +++ core/xwiki-component/src/main/java/org/xwiki/component/logging/ Logger.java (working copy) @@ -39,17 +39,41 @@
void debug( String message );
+ /** + * Logs the {@code message} to the logger while replacing all + * '{}' in the message String with the corresponding object + * from the objects array. Replacing first '{}' by + * {@code objects[0].toString()}, second '{}' by + * {@code objects[1].toString()} and so forth. + * </br> + * Ideally the message should only be expanded and thus the + * {@code toString()} be called iff the message is really logged. + * + * @param message The message to be formatted + * @param objects The objects to be filled into the message + */ + void debug( String message, Object... objects ); + void debug( String message, Throwable throwable );
boolean isDebugEnabled();
void info( String message ); + + /** + * @see Logger.debug(String, Object...) + * @param message + * @param objects + */ + void info( String message, Object... objects );
void info( String message, Throwable throwable );
boolean isInfoEnabled();
void warn( String message ); + + void warn( String message, Object... objects );
void warn( String message, Throwable throwable );
@@ -57,6 +81,8 @@
void error( String message );
+ void error( String message, Object... objects ); + void error( String message, Throwable throwable );
boolean isErrorEnabled(); Index: core/xwiki-plexus/src/main/java/org/xwiki/plexus/logging/ PlexusLogger.java =================================================================== --- core/xwiki-plexus/src/main/java/org/xwiki/plexus/logging/ PlexusLogger.java (revision 12676) +++ core/xwiki-plexus/src/main/java/org/xwiki/plexus/logging/ PlexusLogger.java (working copy) @@ -26,6 +26,64 @@ { private org.codehaus.plexus.logging.Logger logger;
+ private static String expandMessage(String message, Object... objects){ + if(message == null) + return ""; + if(objects == null ) + return message; + int olast = objects.length - 1; + if(olast == -1) + return message; + + char[] msgchar = message.toCharArray(); + int mlast = msgchar.length - 1; + + StringBuffer sb = new StringBuffer(); + + int o = 0; + + // iterate through the Object Array and replace '{}' in the msg + for(int i = 0; i < mlast; i++) + { + if(msgchar[i] == '{' && msgchar[i+1] == '}') + { + i++; // the next one can be skipped + if( o < objects.length ) + { + if(objects[o] == null) + { + sb.append("(null)"); + } else { + sb.append(objects[o].toString()); + } + o++; + } + } else { + sb.append(msgchar[i]); + } + } + + // append last char only if it did not came from a '{}' + if( !(msgchar[mlast-1] == '{' && msgchar[mlast] == '}') ) + { + sb.append(msgchar[mlast]); + } + + if(objects[olast] instanceof Throwable) + { + Throwable e = (Throwable)objects[olast]; + sb.append("\n"); + for(StackTraceElement se : e.getStackTrace()) + { + sb.append(" "); + sb.append(se.toString()); + } + } + + return sb.toString(); + + } + public PlexusLogger(org.codehaus.plexus.logging.Logger logger) { this.logger = logger; @@ -36,6 +94,15 @@ this.logger.debug(message); }
+ public void debug(String message, Object... objects) + { + // only expand the message if the Debug level is enabled + if(this.logger.isDebugEnabled()) + { + this.logger.debug(expandMessage(message, objects)); + } + } + public void debug(String message, Throwable throwable) { this.logger.debug(message, throwable); @@ -50,6 +117,15 @@ { this.logger.info(message); } + + public void info(String message, Object... objects) + { + // only expand the message if the Info level is enabled + if(this.logger.isInfoEnabled()) + { + this.logger.info(expandMessage(message, objects)); + } + }
public void info(String message, Throwable throwable) { @@ -65,6 +141,15 @@ { this.logger.warn(message); } + + public void warn(String message, Object... objects) + { + // only expand the message if the Warn level is enabled + if(this.logger.isWarnEnabled()) + { + this.logger.debug(expandMessage(message, objects)); + } + }
public void warn(String message, Throwable throwable) { @@ -81,6 +166,15 @@ this.logger.error(message); }
+ public void error(String message, Object... objects) + { + // only expand the message if the Error level is enabled + if(this.logger.isErrorEnabled()) + { + this.logger.error(expandMessage(message, objects)); + } + } + public void error(String message, Throwable throwable) { this.logger.error(message, throwable);
Hi Vincent, Vincent Massol wrote:
Hi Jonas,
On Sep 14, 2008, at 1:27 AM, Jonas von Malottki wrote:
Hi,
Vincent Massol wrote:
On Sep 13, 2008, at 11:30 PM, Jonas von Malottki wrote:
Oh, Hibernate now uses slf4j, which I once suggested for use in XWiki (Again it is *not* an implementation, it's just a facade, with plug- able implementations.) But we don't need it... We have our own simple facade which can be plugged to any logging system including slf4j. See http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-component/src/m... Ah, seeing this remembered me, that I wanted to introduce one of the slf4j features: delayed expanding of messages for logging see: http://n2.nabble.com/Logging-architecture-proposal-tt516791.html#none
Ah I had forgotten this email of yours, sorry about that. I've read it again and it seems good to me, especially since our best practice is now to use this:
logger.debug(String.format("text with %s in format syntax", var1, var2,...);
If you already use this then the message could also be left in the String.format format? Would make the message formatting another tick simpler.
So I'm +1 for modifying our logger interface to support this style. Actually I even think we should maybe deprecate the old signatures.
I have done a small patch with this now (attachment). Or should I create a Jira issue?
Can you create a jira issue and attach your patch there?
Done: http://jira.xwiki.org/jira/browse/XWIKI-2667
Thanks a lot Jonas for pursuing this! -Vincent
An SLF4J Logger implementation is also very easy then. And I can use it ;).
Greetings Jonas
participants (3)
-
Artem Melentyev -
Jonas von Malottki -
Vincent Massol