[hibernate-commits] Hibernate SVN: r19728 - in core/trunk/core/src/main/java/org/hibernate: impl and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Jun 14 22:15:54 EDT 2010
Author: gbadner
Date: 2010-06-14 22:15:54 -0400 (Mon, 14 Jun 2010)
New Revision: 19728
Modified:
core/trunk/core/src/main/java/org/hibernate/engine/LoadQueryInfluencers.java
core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java
Log:
HHH-5195 : FilterImpl.validate() throws NullPointerException on deserialization
Modified: core/trunk/core/src/main/java/org/hibernate/engine/LoadQueryInfluencers.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/engine/LoadQueryInfluencers.java 2010-06-15 02:15:05 UTC (rev 19727)
+++ core/trunk/core/src/main/java/org/hibernate/engine/LoadQueryInfluencers.java 2010-06-15 02:15:54 UTC (rev 19728)
@@ -111,6 +111,14 @@
return enabledFilters;
}
+ /**
+ * Returns an unmodifiable Set of enabled filter names.
+ * @return an unmodifiable Set of enabled filter names.
+ */
+ public Set getEnabledFilterNames() {
+ return java.util.Collections.unmodifiableSet( enabledFilters.keySet() );
+ }
+
public Filter getEnabledFilter(String filterName) {
return ( Filter ) enabledFilters.get( filterName );
}
Modified: core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java 2010-06-15 02:15:05 UTC (rev 19727)
+++ core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java 2010-06-15 02:15:54 UTC (rev 19728)
@@ -2150,9 +2150,16 @@
childSessionsByEntityMode = ( Map ) ois.readObject();
- Iterator iter = loadQueryInfluencers.getEnabledFilters().values().iterator();
+ // LoadQueryInfluencers.getEnabledFilters() tries to validate each enabled
+ // filter, which will fail when called before FilterImpl.afterDeserialize( factory );
+ // Instead lookup the filter by name, call FilterImpl.afterDeserialize( factory ),
+ // and then validate.
+ Iterator iter = loadQueryInfluencers.getEnabledFilterNames().iterator();
while ( iter.hasNext() ) {
- ( ( FilterImpl ) iter.next() ).afterDeserialize( factory );
+ String filterName = ( String ) iter.next();
+ FilterImpl filter = ( FilterImpl ) loadQueryInfluencers.getEnabledFilter( filterName );
+ filter.afterDeserialize( factory );
+ filter.validate();
}
if ( isRootSession && childSessionsByEntityMode != null ) {
More information about the hibernate-commits
mailing list