[hibernate-commits] Hibernate SVN: r15273 - core/trunk/core/src/main/java/org/hibernate/impl.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Wed Oct 8 00:39:11 EDT 2008
Author: steve.ebersole at jboss.com
Date: 2008-10-08 00:39:11 -0400 (Wed, 08 Oct 2008)
New Revision: 15273
Modified:
core/trunk/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java
core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java
Log:
HHH-3515 : EntityNameResolver defensiveness
Modified: core/trunk/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java 2008-10-08 04:38:55 UTC (rev 15272)
+++ core/trunk/core/src/main/java/org/hibernate/impl/SessionFactoryImpl.java 2008-10-08 04:39:11 UTC (rev 15273)
@@ -468,6 +468,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/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java 2008-10-08 04:38:55 UTC (rev 15272)
+++ core/trunk/core/src/main/java/org/hibernate/impl/SessionImpl.java 2008-10-08 04:39:11 UTC (rev 15273)
@@ -39,7 +39,6 @@
import java.util.Map;
import java.util.Set;
-import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,7 +72,6 @@
import org.hibernate.engine.CollectionEntry;
import org.hibernate.engine.EntityEntry;
import org.hibernate.engine.EntityKey;
-import org.hibernate.engine.FilterDefinition;
import org.hibernate.engine.PersistenceContext;
import org.hibernate.engine.QueryParameters;
import org.hibernate.engine.StatefulPersistenceContext;
@@ -127,8 +125,6 @@
import org.hibernate.proxy.LazyInitializer;
import org.hibernate.stat.SessionStatistics;
import org.hibernate.stat.SessionStatisticsImpl;
-import org.hibernate.tuple.DynamicMapInstantiator;
-import org.hibernate.tuple.entity.PojoEntityTuplizer;
import org.hibernate.type.Type;
import org.hibernate.util.ArrayHelper;
import org.hibernate.util.CollectionHelper;
@@ -177,30 +173,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".
*
@@ -1944,6 +1918,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() );
@@ -2020,4 +1996,28 @@
oos.writeObject( loadQueryInfluencers );
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