[hibernate-commits] Hibernate SVN: r15272 - core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Oct 8 00:38:56 EDT 2008


Author: steve.ebersole at jboss.com
Date: 2008-10-08 00:38:55 -0400 (Wed, 08 Oct 2008)
New Revision: 15272

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

Modified: core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java
===================================================================
--- core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java	2008-10-08 04:37:25 UTC (rev 15271)
+++ core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java	2008-10-08 04:38:55 UTC (rev 15272)
@@ -426,6 +426,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_3/core/src/main/java/org/hibernate/impl/SessionImpl.java
===================================================================
--- core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl/SessionImpl.java	2008-10-08 04:37:25 UTC (rev 15271)
+++ core/branches/Branch_3_3/core/src/main/java/org/hibernate/impl/SessionImpl.java	2008-10-08 04:38:55 UTC (rev 15272)
@@ -39,7 +39,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.dom4j.Element;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -125,7 +124,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;
@@ -176,30 +174,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".
 	 *
@@ -1924,6 +1900,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() );
@@ -2001,4 +1979,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