Skip to content

Commit 5cca19a

Browse files
committed
HHH-19774, HHH-19771 tests and initial work on TransactionCompletionCallbacks sharing
1 parent f08d255 commit 5cca19a

21 files changed

+344
-54
lines changed

hibernate-core/src/main/java/org/hibernate/boot/internal/SessionFactoryOptionsBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -901,7 +901,7 @@ public boolean isAllowOutOfTransactionUpdateOperations() {
901901
}
902902

903903

904-
@Override
904+
@Override @Deprecated(forRemoval = true)
905905
public boolean isReleaseResourcesOnCloseEnabled() {
906906
return releaseResourcesOnCloseEnabled;
907907
}

hibernate-core/src/main/java/org/hibernate/engine/creation/internal/CommonSharedSessionCreationOptions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hibernate.Interceptor;
99
import org.hibernate.Transaction;
1010
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;
11+
import org.hibernate.engine.spi.TransactionCompletionCallbacksImplementor;
1112
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
1213
import org.hibernate.resource.jdbc.spi.StatementInspector;
1314
import org.hibernate.resource.transaction.spi.TransactionCoordinator;
@@ -43,6 +44,7 @@ public interface CommonSharedSessionCreationOptions {
4344
boolean isTransactionCoordinatorShared();
4445
TransactionCoordinator getTransactionCoordinator();
4546
JdbcCoordinator getJdbcCoordinator();
47+
TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacksImplementor();
4648
Transaction getTransaction();
4749

4850
TimeZone getJdbcTimeZone();

hibernate-core/src/main/java/org/hibernate/engine/creation/internal/SessionCreationOptionsAdaptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import org.hibernate.Interceptor;
1010
import org.hibernate.SessionEventListener;
1111
import org.hibernate.Transaction;
12-
import org.hibernate.engine.internal.TransactionCompletionCallbacksImpl;
1312
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;
1413
import org.hibernate.engine.spi.SessionFactoryImplementor;
14+
import org.hibernate.engine.spi.TransactionCompletionCallbacksImplementor;
1515
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
1616
import org.hibernate.resource.jdbc.spi.StatementInspector;
1717
import org.hibernate.resource.transaction.spi.TransactionCoordinator;
@@ -140,7 +140,7 @@ public Transaction getTransaction() {
140140
}
141141

142142
@Override
143-
public TransactionCompletionCallbacksImpl getTransactionCompletionCallbacks() {
144-
return null;
143+
public TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacks() {
144+
return options.getTransactionCompletionCallbacksImplementor();
145145
}
146146
}

hibernate-core/src/main/java/org/hibernate/engine/creation/internal/SharedSessionBuilderImpl.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
import org.hibernate.SessionException;
1313
import org.hibernate.Transaction;
1414
import org.hibernate.engine.creation.spi.SharedSessionBuilderImplementor;
15-
import org.hibernate.engine.internal.TransactionCompletionCallbacksImpl;
1615
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;
1716
import org.hibernate.engine.spi.SessionImplementor;
1817
import org.hibernate.engine.spi.SharedSessionContractImplementor;
18+
import org.hibernate.engine.spi.TransactionCompletionCallbacksImplementor;
1919
import org.hibernate.internal.CoreLogging;
2020
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
2121
import org.hibernate.resource.jdbc.spi.StatementInspector;
@@ -277,6 +277,14 @@ public Transaction getTransaction() {
277277
: null;
278278
}
279279

280+
@Override
281+
public TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacks() {
282+
return shareTransactionContext
283+
? original.getTransactionCompletionCallbacksImplementor()
284+
: null;
285+
}
286+
287+
280288
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
281289
// CommonSharedSessionCreationOptions
282290

@@ -309,11 +317,6 @@ public CacheMode getInitialCacheMode() {
309317
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
310318
// SharedSessionCreationOptions
311319

312-
@Override
313-
public TransactionCompletionCallbacksImpl getTransactionCompletionCallbacks() {
314-
return null;
315-
}
316-
317320
@Override
318321
public boolean shouldAutoJoinTransactions() {
319322
return autoJoinTransactions;

hibernate-core/src/main/java/org/hibernate/engine/creation/internal/SharedSessionCreationOptions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
package org.hibernate.engine.creation.internal;
66

77
import org.hibernate.Transaction;
8-
import org.hibernate.engine.internal.TransactionCompletionCallbacksImpl;
98
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;
9+
import org.hibernate.engine.spi.TransactionCompletionCallbacksImplementor;
1010
import org.hibernate.resource.transaction.spi.TransactionCoordinator;
1111

1212
/**
@@ -25,5 +25,5 @@ public interface SharedSessionCreationOptions extends SessionCreationOptions {
2525
TransactionCoordinator getTransactionCoordinator();
2626
JdbcCoordinator getJdbcCoordinator();
2727
Transaction getTransaction();
28-
TransactionCompletionCallbacksImpl getTransactionCompletionCallbacks();
28+
TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacks();
2929
}

hibernate-core/src/main/java/org/hibernate/engine/creation/internal/SharedStatelessSessionBuilderImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;
1515
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1616
import org.hibernate.engine.spi.StatelessSessionImplementor;
17+
import org.hibernate.engine.spi.TransactionCompletionCallbacksImplementor;
1718
import org.hibernate.internal.CoreLogging;
1819
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
1920
import org.hibernate.resource.jdbc.spi.StatementInspector;
@@ -167,6 +168,13 @@ public JdbcCoordinator getJdbcCoordinator() {
167168
: null;
168169
}
169170

171+
@Override
172+
public TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacksImplementor() {
173+
return shareTransactionContext
174+
? original.getTransactionCompletionCallbacksImplementor()
175+
: null;
176+
}
177+
170178
@Override
171179
public Transaction getTransaction() {
172180
return shareTransactionContext

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
package org.hibernate.engine.internal;
66

77
import org.hibernate.engine.spi.SharedSessionContractImplementor;
8-
import org.hibernate.engine.spi.TransactionCompletionCallbacks;
8+
import org.hibernate.engine.spi.TransactionCompletionCallbacksImplementor;
99

1010
/**
1111
* @author Steve Ebersole
1212
*/
13-
public class TransactionCompletionCallbacksImpl implements TransactionCompletionCallbacks {
13+
public class TransactionCompletionCallbacksImpl implements TransactionCompletionCallbacksImplementor {
1414
private final SharedSessionContractImplementor session;
1515

1616
private BeforeTransactionCompletionProcessQueue beforeTransactionProcesses;
@@ -28,11 +28,13 @@ public void registerCallback(BeforeCompletionCallback process) {
2828
beforeTransactionProcesses.register( process );
2929
}
3030

31+
@Override
3132
public boolean hasBeforeCompletionCallbacks() {
3233
return beforeTransactionProcesses != null
3334
&& beforeTransactionProcesses.hasActions();
3435
}
3536

37+
@Override
3638
public void beforeTransactionCompletion() {
3739
if ( beforeTransactionProcesses != null && beforeTransactionProcesses.hasActions() ) {
3840
beforeTransactionProcesses.beforeTransactionCompletion();
@@ -47,23 +49,27 @@ public void registerCallback(AfterCompletionCallback process) {
4749
afterTransactionProcesses.register( process );
4850
}
4951

52+
@Override
5053
public boolean hasAfterCompletionCallbacks() {
5154
return afterTransactionProcesses != null && afterTransactionProcesses.hasActions();
5255
}
5356

57+
@Override
5458
public void afterTransactionCompletion(boolean success) {
5559
if ( afterTransactionProcesses != null && afterTransactionProcesses.hasActions() ) {
5660
afterTransactionProcesses.afterTransactionCompletion( success );
5761
}
5862
}
5963

64+
@Override
6065
public void addSpaceToInvalidate(String space) {
6166
if ( afterTransactionProcesses == null ) {
6267
afterTransactionProcesses = new AfterTransactionCompletionProcessQueue( session );
6368
}
6469
afterTransactionProcesses.addSpaceToInvalidate( space );
65-
}
70+
}
6671

72+
@Override
6773
public TransactionCompletionCallbacksImpl forSharing() {
6874
if ( beforeTransactionProcesses == null ) {
6975
beforeTransactionProcesses = new BeforeTransactionCompletionProcessQueue( session );

hibernate-core/src/main/java/org/hibernate/engine/spi/ActionQueue.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public class ActionQueue implements TransactionCompletionCallbacks {
9595

9696

9797
private transient boolean isTransactionCoordinatorShared;
98-
private TransactionCompletionCallbacksImpl transactionCompletionCallbacks;;
98+
private TransactionCompletionCallbacksImplementor transactionCompletionCallbacks;;
9999

100100
// Extract this as a constant to perform efficient iterations:
101101
// method values() otherwise allocates a new array on each invocation.
@@ -725,7 +725,7 @@ public int numberOfInsertions() {
725725
return insertions == null ? 0 : insertions.size();
726726
}
727727

728-
public TransactionCompletionCallbacksImpl getTransactionCompletionCallbacks() {
728+
public TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacks() {
729729
return transactionCompletionCallbacks.forSharing();
730730
}
731731

@@ -738,7 +738,7 @@ public TransactionCompletionCallbacksImpl getTransactionCompletionCallbacks() {
738738
* @param isTransactionCoordinatorShared Flag indicating shared transaction context.
739739
*/
740740
public void setTransactionCompletionCallbacks(
741-
TransactionCompletionCallbacksImpl callbacks,
741+
TransactionCompletionCallbacksImplementor callbacks,
742742
boolean isTransactionCoordinatorShared) {
743743
this.isTransactionCoordinatorShared = isTransactionCoordinatorShared;
744744
this.transactionCompletionCallbacks = callbacks;

hibernate-core/src/main/java/org/hibernate/engine/spi/SessionDelegatorBaseImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,6 +1175,11 @@ public TransactionCompletionCallbacks getTransactionCompletionCallbacks() {
11751175
return delegate.getTransactionCompletionCallbacks();
11761176
}
11771177

1178+
@Override
1179+
public TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacksImplementor() {
1180+
return delegate.getTransactionCompletionCallbacksImplementor();
1181+
}
1182+
11781183
@Override
11791184
public Object instantiate(EntityPersister persister, Object id) throws HibernateException {
11801185
return delegate.instantiate( persister, id );

hibernate-core/src/main/java/org/hibernate/engine/spi/SessionImplementor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ default TransactionCompletionCallbacks getTransactionCompletionCallbacks() {
7878
return getActionQueue();
7979
}
8080

81+
@Override
82+
default TransactionCompletionCallbacksImplementor getTransactionCompletionCallbacksImplementor() {
83+
return getActionQueue().getTransactionCompletionCallbacks();
84+
}
85+
8186
/**
8287
* Should this session be automatically closed after the current
8388
* transaction completes?

0 commit comments

Comments
 (0)