Skip to content

Commit f98e15e

Browse files
Sannestliu
authored andcommitted
HHH-6862 Use generic Map for StatefulPersistenceContext.entityEntries
1 parent ddb3a8c commit f98e15e

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

hibernate-core/src/main/java/org/hibernate/engine/internal/StatefulPersistenceContext.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.Iterator;
3535
import java.util.List;
3636
import java.util.Map;
37+
import java.util.Map.Entry;
3738

3839
import org.apache.commons.collections.map.AbstractReferenceMap;
3940
import org.apache.commons.collections.map.ReferenceMap;
@@ -98,7 +99,7 @@ public class StatefulPersistenceContext implements PersistenceContext {
9899
private Map entitiesByUniqueKey;
99100

100101
// Identity map of EntityEntry instances, by the entity instance
101-
private Map entityEntries;
102+
private Map<Object,EntityEntry> entityEntries;
102103

103104
// Entity proxies, by EntityKey
104105
private Map proxiesByKey;
@@ -281,8 +282,8 @@ private void setHasNonReadOnlyEnties(Status status) {
281282
public void afterTransactionCompletion() {
282283
cleanUpInsertedKeysAfterTransaction();
283284
// Downgrade locks
284-
for ( Object o : entityEntries.values() ) {
285-
((EntityEntry) o).setLockMode( LockMode.NONE );
285+
for ( EntityEntry o : entityEntries.values() ) {
286+
o.setLockMode( LockMode.NONE );
286287
}
287288
}
288289

@@ -416,20 +417,20 @@ public void addEntity(EntityUniqueKey euk, Object entity) {
416417
}
417418

418419
/**
419-
* Retreive the EntityEntry representation of the given entity.
420+
* Retrieve the EntityEntry representation of the given entity.
420421
*
421422
* @param entity The entity for which to locate the EntityEntry.
422423
* @return The EntityEntry for the given entity.
423424
*/
424425
public EntityEntry getEntry(Object entity) {
425-
return (EntityEntry) entityEntries.get(entity);
426+
return entityEntries.get(entity);
426427
}
427428

428429
/**
429430
* Remove an entity entry from the session cache
430431
*/
431432
public EntityEntry removeEntry(Object entity) {
432-
return (EntityEntry) entityEntries.remove(entity);
433+
return entityEntries.remove(entity);
433434
}
434435

435436
/**
@@ -1148,7 +1149,7 @@ public Serializable getOwnerId(String entityName, String propertyName, Object ch
11481149
// try cache lookup first
11491150
Object parent = parentsByChild.get( childEntity );
11501151
if ( parent != null ) {
1151-
final EntityEntry entityEntry = ( EntityEntry ) entityEntries.get( parent );
1152+
final EntityEntry entityEntry = entityEntries.get( parent );
11521153
//there maybe more than one parent, filter by type
11531154
if ( persister.isSubclassEntityName(entityEntry.getEntityName() )
11541155
&& isFoundInParent( propertyName, childEntity, persister, collectionPersister, parent ) ) {
@@ -1161,10 +1162,10 @@ && isFoundInParent( propertyName, childEntity, persister, collectionPersister, p
11611162

11621163
//not found in case, proceed
11631164
// iterate all the entities currently associated with the persistence context.
1164-
Iterator entities = IdentityMap.entries(entityEntries).iterator();
1165+
Iterator<Entry<Object,EntityEntry>> entities = IdentityMap.entries(entityEntries).iterator();
11651166
while ( entities.hasNext() ) {
1166-
final Map.Entry me = ( Map.Entry ) entities.next();
1167-
final EntityEntry entityEntry = ( EntityEntry ) me.getValue();
1167+
final Map.Entry<Object,EntityEntry> me = entities.next();
1168+
final EntityEntry entityEntry = me.getValue();
11681169
// does this entity entry pertain to the entity persister in which we are interested (owner)?
11691170
if ( persister.isSubclassEntityName( entityEntry.getEntityName() ) ) {
11701171
final Object entityEntryInstance = me.getKey();
@@ -1263,7 +1264,7 @@ public Object getIndexInOwner(String entity, String property, Object childEntity
12631264
// try cache lookup first
12641265
Object parent = parentsByChild.get(childEntity);
12651266
if (parent != null) {
1266-
final EntityEntry entityEntry = (EntityEntry) entityEntries.get(parent);
1267+
final EntityEntry entityEntry = entityEntries.get(parent);
12671268
//there maybe more than one parent, filter by type
12681269
if ( persister.isSubclassEntityName( entityEntry.getEntityName() ) ) {
12691270
Object index = getIndexInParent(property, childEntity, persister, cp, parent);
@@ -1285,10 +1286,10 @@ public Object getIndexInOwner(String entity, String property, Object childEntity
12851286
}
12861287

12871288
//Not found in cache, proceed
1288-
Iterator entities = IdentityMap.entries(entityEntries).iterator();
1289+
Iterator<Entry<Object,EntityEntry>> entities = IdentityMap.entries(entityEntries).iterator();
12891290
while ( entities.hasNext() ) {
1290-
Map.Entry me = (Map.Entry) entities.next();
1291-
EntityEntry ee = (EntityEntry) me.getValue();
1291+
Map.Entry<Object,EntityEntry> me = entities.next();
1292+
EntityEntry ee = me.getValue();
12921293
if ( persister.isSubclassEntityName( ee.getEntityName() ) ) {
12931294
Object instance = me.getKey();
12941295

@@ -1408,7 +1409,7 @@ private void setEntityReadOnly(Object entity, boolean readOnly) {
14081409

14091410
public void replaceDelayedEntityIdentityInsertKeys(EntityKey oldKey, Serializable generatedId) {
14101411
Object entity = entitiesByKey.remove( oldKey );
1411-
EntityEntry oldEntry = ( EntityEntry ) entityEntries.remove( entity );
1412+
EntityEntry oldEntry = entityEntries.remove( entity );
14121413
parentsByChild.clear();
14131414

14141415
final EntityKey newKey = session.generateEntityKey( generatedId, oldEntry.getPersister() );

hibernate-core/src/main/java/org/hibernate/internal/util/collections/IdentityMap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public static Map.Entry[] concurrentEntries(Map map) {
9090
return ( (IdentityMap) map ).entryArray();
9191
}
9292

93-
public static List entries(Map map) {
93+
public static <K,V> List<Entry<K,V>> entries(Map<K,V> map) {
9494
return ( (IdentityMap) map ).entryList();
9595
}
9696

0 commit comments

Comments
 (0)