[hibernate-commits] Hibernate SVN: r15271 - core/branches/Branch_3_2/src/org/hibernate/impl.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Oct 8 00:37:25 EDT 2008


Author: steve.ebersole at jboss.com
Date: 2008-10-08 00:37:25 -0400 (Wed, 08 Oct 2008)
New Revision: 15271

Modified:
   core/branches/Branch_3_2/src/org/hibernate/impl/SessionFactoryImpl.java
   core/branches/Branch_3_2/src/org/hibernate/impl/SessionImpl.java
Log:
HHH-3515 : EntityNameResolver defensiveness

Modified: core/branches/Branch_3_2/src/org/hibernate/impl/SessionFactoryImpl.java
===================================================================
--- core/branches/Branch_3_2/src/org/hibernate/impl/SessionFactoryImpl.java	2008-10-08 04:28:51 UTC (rev 15270)
+++ core/branches/Branch_3_2/src/org/hibernate/impl/SessionFactoryImpl.java	2008-10-08 04:37:25 UTC (rev 15271)
@@ -391,6 +391,9 @@
 	}
 
 	private void registerEntityNameResolvers(EntityPersister persister) {
+		if ( persister.getEntityMetamodel() == null || persister.getEntityMetamodel().getTuplizerMapping() == null ) {
+			return;
+		}
 		Iterator itr = persister.getEntityMetamodel().getTuplizerMapping().iterateTuplizers();
 		while ( itr.hasNext() ) {
 			final EntityTuplizer tuplizer = ( EntityTuplizer ) itr.next();

Modified: core/branches/Branch_3_2/src/org/hibernate/impl/SessionImpl.java
===================================================================
--- core/branches/Branch_3_2/src/org/hibernate/impl/SessionImpl.java	2008-10-08 04:28:51 UTC (rev 15270)
+++ core/branches/Branch_3_2/src/org/hibernate/impl/SessionImpl.java	2008-10-08 04:37:25 UTC (rev 15271)
@@ -17,7 +17,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.dom4j.Element;
 import org.hibernate.CacheMode;
 import org.hibernate.ConnectionReleaseMode;
 import org.hibernate.Criteria;
@@ -98,7 +97,6 @@
 import org.hibernate.proxy.LazyInitializer;
 import org.hibernate.stat.SessionStatistics;
 import org.hibernate.stat.SessionStatisticsImpl;
-import org.hibernate.tuple.DynamicMapInstantiator;
 import org.hibernate.type.Type;
 import org.hibernate.util.ArrayHelper;
 import org.hibernate.util.CollectionHelper;
@@ -149,30 +147,8 @@
 	private transient Session rootSession;
 	private transient Map childSessionsByEntityMode;
 
-	private EntityNameResolver entityNameResolver = new EntityNameResolver() {
-		public String resolveEntityName(Object entity) {
-			String entityName = interceptor.getEntityName( entity );
-			if ( entityName != null ) {
-				return entityName;
-			}
+	private EntityNameResolver entityNameResolver = new CoordinatingEntityNameResolver();
 
-			Iterator itr = factory.iterateEntityNameResolvers( entityMode );
-			while ( itr.hasNext() ) {
-				final EntityNameResolver resolver = ( EntityNameResolver ) itr.next();
-				entityName = resolver.resolveEntityName( entity );
-				if ( entityName != null ) {
-					break;
-				}
-			}
-			if ( entityName != null ) {
-				return entityName;
-			}
-
-			// the old-time stand-by...
-			return entity.getClass().getName();
-		}
-	};
-
 	/**
 	 * Constructor used in building "child sessions".
 	 *
@@ -1887,6 +1863,8 @@
 	private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
 		log.trace( "deserializing session" );
 
+		entityNameResolver = new CoordinatingEntityNameResolver();
+
 		boolean isRootSession = ois.readBoolean();
 		connectionReleaseMode = ConnectionReleaseMode.parse( ( String ) ois.readObject() );
 		entityMode = EntityMode.parse( ( String ) ois.readObject() );
@@ -1964,4 +1942,28 @@
 		oos.writeObject( enabledFilters );
 		oos.writeObject( childSessionsByEntityMode );
 	}
+
+	private class CoordinatingEntityNameResolver implements EntityNameResolver {
+		public String resolveEntityName(Object entity) {
+			String entityName = interceptor.getEntityName( entity );
+			if ( entityName != null ) {
+				return entityName;
+			}
+
+			Iterator itr = factory.iterateEntityNameResolvers( entityMode );
+			while ( itr.hasNext() ) {
+				final EntityNameResolver resolver = ( EntityNameResolver ) itr.next();
+				entityName = resolver.resolveEntityName( entity );
+				if ( entityName != null ) {
+					break;
+				}
+			}
+			if ( entityName != null ) {
+				return entityName;
+			}
+
+			// the old-time stand-by...
+			return entity.getClass().getName();
+		}
+	}
 }




More information about the hibernate-commits mailing list