Skip to content

Commit 0777f26

Browse files
committed
tiny refactoring in proxy interceptors
1 parent f939ef1 commit 0777f26

File tree

4 files changed

+58
-58
lines changed

4 files changed

+58
-58
lines changed

hibernate-core/src/main/java/org/hibernate/proxy/AbstractLazyInitializer.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
import org.hibernate.SessionException;
1111
import org.hibernate.boot.spi.SessionFactoryOptions;
1212
import org.hibernate.engine.spi.EntityKey;
13+
import org.hibernate.engine.spi.SessionFactoryImplementor;
1314
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1415
import org.hibernate.internal.CoreLogging;
1516
import org.hibernate.internal.CoreMessageLogger;
1617
import org.hibernate.internal.SessionFactoryRegistry;
17-
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
1818
import org.hibernate.persister.entity.EntityPersister;
1919

2020
/**
@@ -25,6 +25,7 @@
2525
* @author Gavin King
2626
*/
2727
public abstract class AbstractLazyInitializer implements LazyInitializer {
28+
2829
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( AbstractLazyInitializer.class );
2930

3031
private final String entityName;
@@ -77,20 +78,22 @@ public final Object getIdentifier() {
7778
return id;
7879
}
7980

80-
private MappingMetamodelImplementor getMappingMetamodel() {
81-
return session.getFactory().getMappingMetamodel();
81+
private SessionFactoryImplementor getFactory() {
82+
return session.getFactory();
8283
}
8384

84-
private EntityPersister getEntityDescriptor() {
85-
return getMappingMetamodel().getEntityDescriptor( entityName );
85+
public EntityPersister getEntityDescriptor() {
86+
return getFactory().getMappingMetamodel().getEntityDescriptor( entityName );
8687
}
8788

8889
private SessionFactoryOptions getSessionFactoryOptions() {
89-
return session.getFactory().getSessionFactoryOptions();
90+
return getFactory().getSessionFactoryOptions();
9091
}
9192

9293
private boolean isInitializeProxyWhenAccessingIdentifier() {
93-
return session != null && getSessionFactoryOptions().getJpaCompliance().isJpaProxyComplianceEnabled();
94+
return session != null
95+
&& getSessionFactoryOptions().getJpaCompliance()
96+
.isJpaProxyComplianceEnabled();
9497
}
9598

9699
@Override
@@ -208,8 +211,10 @@ protected void permissiveInitialization() {
208211
session.getPersistenceContext().setDefaultReadOnly( true );
209212
session.setHibernateFlushMode( FlushMode.MANUAL );
210213

211-
final boolean isJTA = session.getTransactionCoordinator().getTransactionCoordinatorBuilder().isJta();
212-
214+
final boolean isJTA =
215+
session.getTransactionCoordinator()
216+
.getTransactionCoordinatorBuilder()
217+
.isJta();
213218
if ( !isJTA ) {
214219
// Explicitly handle the transactions only if we're not in
215220
// a JTA environment. A lazy loading temporary session can
@@ -262,8 +267,7 @@ else if ( session.isOpenOrWaitingForAutoClose() && session.isConnected() ) {
262267
*/
263268
public final void initializeWithoutLoadIfPossible() {
264269
if ( !initialized && session != null && session.isOpenOrWaitingForAutoClose() ) {
265-
final var entityDescriptor = getMappingMetamodel().getEntityDescriptor( getEntityName() );
266-
final var key = session.generateEntityKey( getInternalIdentifier(), entityDescriptor );
270+
final var key = session.generateEntityKey( getInternalIdentifier(), getEntityDescriptor() );
267271
final Object entity = session.getPersistenceContextInternal().getEntity( key );
268272
if ( entity != null ) {
269273
setImplementation( entity );
@@ -279,16 +283,15 @@ protected void prepareForPossibleLoadingOutsideTransaction() {
279283
if ( session != null ) {
280284
allowLoadOutsideTransaction =
281285
getSessionFactoryOptions().isInitializeLazyStateOutsideTransactionsEnabled();
282-
283286
if ( sessionFactoryUuid == null ) {
284287
// we're going to need the UUID even if the SessionFactory configuration doesn't
285288
// allow any operations on it, as we need it to match deserialized objects with
286289
// the originating SessionFactory: at very least it's useful to actually get
287290
// such configuration, so to know if such operation isn't allowed or configured otherwise.
288-
sessionFactoryUuid = session.getFactory().getUuid();
291+
sessionFactoryUuid = getFactory().getUuid();
289292
}
290293
if ( sessionFactoryName == null ) {
291-
sessionFactoryName = session.getFactory().getName();
294+
sessionFactoryName = getFactory().getName();
292295
}
293296
}
294297
}
@@ -312,10 +315,9 @@ protected final boolean isConnectedToSession() {
312315

313316
private Object getProxyOrNull() {
314317
final var entityKey = generateEntityKeyOrNull( getInternalIdentifier(), session, getEntityName() );
315-
if ( entityKey != null && session != null && session.isOpenOrWaitingForAutoClose() ) {
316-
return session.getPersistenceContextInternal().getProxy( entityKey );
317-
}
318-
return null;
318+
return entityKey != null && session != null && session.isOpenOrWaitingForAutoClose()
319+
? session.getPersistenceContextInternal().getProxy( entityKey )
320+
: null;
319321
}
320322

321323
@Override
@@ -344,7 +346,7 @@ public String getImplementationEntityName() {
344346
}
345347
if ( getEntityDescriptor().hasSubclasses() ) {
346348
initialize();
347-
return session.getFactory().bestGuessEntityName( target );
349+
return getFactory().bestGuessEntityName( target );
348350
}
349351
return entityName;
350352
}

hibernate-core/src/main/java/org/hibernate/proxy/map/MapProxy.java

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,77 +21,77 @@
2121
@SuppressWarnings("rawtypes")
2222
public class MapProxy implements HibernateProxy, Map, Serializable {
2323

24-
private final MapLazyInitializer li;
24+
private final MapLazyInitializer lazyInitializer;
2525

2626
private Object replacement;
2727

28-
MapProxy(MapLazyInitializer li) {
29-
this.li = li;
28+
MapProxy(MapLazyInitializer lazyInitializer) {
29+
this.lazyInitializer = lazyInitializer;
3030
}
3131

3232
@Override
3333
public LazyInitializer getHibernateLazyInitializer() {
34-
return li;
34+
return lazyInitializer;
3535
}
3636

3737
@Override
3838
public int size() {
39-
return li.getMap().size();
39+
return lazyInitializer.getMap().size();
4040
}
4141

4242
@Override
4343
public void clear() {
44-
li.getMap().clear();
44+
lazyInitializer.getMap().clear();
4545
}
4646

4747
@Override
4848
public boolean isEmpty() {
49-
return li.getMap().isEmpty();
49+
return lazyInitializer.getMap().isEmpty();
5050
}
5151

5252
@Override
5353
public boolean containsKey(Object key) {
54-
return li.getMap().containsKey(key);
54+
return lazyInitializer.getMap().containsKey(key);
5555
}
5656

5757
@Override
5858
public boolean containsValue(Object value) {
59-
return li.getMap().containsValue(value);
59+
return lazyInitializer.getMap().containsValue(value);
6060
}
6161

6262
@Override
6363
public Collection<?> values() {
64-
return li.getMap().values();
64+
return lazyInitializer.getMap().values();
6565
}
6666

6767
@Override @SuppressWarnings("unchecked")
6868
public void putAll(Map map) {
69-
li.getMap().putAll(map);
69+
lazyInitializer.getMap().putAll(map);
7070
}
7171

7272
@Override
7373
public Set<?> entrySet() {
74-
return li.getMap().entrySet();
74+
return lazyInitializer.getMap().entrySet();
7575
}
7676

7777
@Override
7878
public Set<?> keySet() {
79-
return li.getMap().keySet();
79+
return lazyInitializer.getMap().keySet();
8080
}
8181

8282
@Override
8383
public Object get(Object key) {
84-
return li.getMap().get(key);
84+
return lazyInitializer.getMap().get(key);
8585
}
8686

8787
@Override
8888
public Object remove(Object key) {
89-
return li.getMap().remove(key);
89+
return lazyInitializer.getMap().remove(key);
9090
}
9191

9292
@Override @SuppressWarnings("unchecked")
9393
public Object put(Object key, Object value) {
94-
return li.getMap().put(key, value);
94+
return lazyInitializer.getMap().put(key, value);
9595
}
9696

9797
@Serial
@@ -101,30 +101,30 @@ public Object writeReplace() {
101101
* If the target has already been loaded somewhere, just not set on the proxy,
102102
* then use it to initialize the proxy so that we will serialize that instead of the proxy.
103103
*/
104-
li.initializeWithoutLoadIfPossible();
104+
lazyInitializer.initializeWithoutLoadIfPossible();
105105

106-
if ( li.isUninitialized() ) {
106+
if ( lazyInitializer.isUninitialized() ) {
107107
if ( replacement == null ) {
108-
li.prepareForPossibleLoadingOutsideTransaction();
108+
lazyInitializer.prepareForPossibleLoadingOutsideTransaction();
109109
replacement = serializableProxy();
110110
}
111111
return replacement;
112112
}
113113
else {
114-
return li.getImplementation();
114+
return lazyInitializer.getImplementation();
115115
}
116116
}
117117

118118
private Object serializableProxy() {
119119
return new SerializableMapProxy(
120-
li.getEntityName(),
121-
li.getInternalIdentifier(),
122-
li.isReadOnlySettingAvailable()
123-
? Boolean.valueOf( li.isReadOnly() )
124-
: li.isReadOnlyBeforeAttachedToSession(),
125-
li.getSessionFactoryUuid(),
126-
li.getSessionFactoryName(),
127-
li.isAllowLoadOutsideTransaction()
120+
lazyInitializer.getEntityName(),
121+
lazyInitializer.getInternalIdentifier(),
122+
lazyInitializer.isReadOnlySettingAvailable()
123+
? Boolean.valueOf( lazyInitializer.isReadOnly() )
124+
: lazyInitializer.isReadOnlyBeforeAttachedToSession(),
125+
lazyInitializer.getSessionFactoryUuid(),
126+
lazyInitializer.getSessionFactoryName(),
127+
lazyInitializer.isAllowLoadOutsideTransaction()
128128
);
129129
}
130130

hibernate-core/src/main/java/org/hibernate/proxy/pojo/BasicLazyInitializer.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ private Object getReplacement() {
105105
else {
106106
return getTarget();
107107
}
108-
109108
}
110109

111110
@Override
@@ -118,16 +117,12 @@ public Class<?> getImplementationClass() {
118117
if ( !isUninitialized() ) {
119118
return getImplementation().getClass();
120119
}
120+
else if ( getSession() == null ) {
121+
throw new LazyInitializationException( "could not retrieve real entity class ["
122+
+ getEntityName() + "#" + getInternalIdentifier() + "] - no Session" );
123+
}
121124
else {
122-
final var session = getSession();
123-
if ( session == null ) {
124-
throw new LazyInitializationException( "could not retrieve real entity class ["
125-
+ getEntityName() + "#" + getInternalIdentifier() + "] - no Session" );
126-
}
127-
final var entityDescriptor =
128-
session.getFactory().getMappingMetamodel()
129-
.getEntityDescriptor( getEntityName() );
130-
return entityDescriptor.hasSubclasses()
125+
return getEntityDescriptor().hasSubclasses()
131126
? getImplementation().getClass()
132127
: persistentClass;
133128
}

hibernate-core/src/main/java/org/hibernate/proxy/pojo/bytebuddy/ByteBuddyInterceptor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
import static org.hibernate.internal.CoreLogging.messageLogger;
1717
import static org.hibernate.internal.util.ReflectHelper.isPublic;
1818

19-
public class ByteBuddyInterceptor extends BasicLazyInitializer implements ProxyConfiguration.Interceptor {
19+
public class ByteBuddyInterceptor
20+
extends BasicLazyInitializer
21+
implements ProxyConfiguration.Interceptor {
22+
2023
private static final CoreMessageLogger LOG = messageLogger( ByteBuddyInterceptor.class );
2124

2225
private final Class<?>[] interfaces;

0 commit comments

Comments
 (0)