Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

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

hibernate-commits

2008-10-08


Author LoginPost Reply
Author: steve.ebersole@(protected)
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)
@@(protected) @@
 }

 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)
@@(protected) @@

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;
@@(protected) @@
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;
@@(protected) @@
 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".
  *
@@(protected) @@
 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() );
@@(protected) @@
   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();
+    }
+  }
}

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.