From 903bb292e7d223dccca4ce587c626dceefe3219e Mon Sep 17 00:00:00 2001 From: Gail Badner Date: Thu, 9 Apr 2020 14:09:15 -0700 Subject: [PATCH] HHH-13916 : Add a unique Session "token" --- .../engine/spi/SharedSessionContractImplementor.java | 9 +++++++++ .../internal/AbstractSharedSessionContract.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/hibernate-core/src/main/java/org/hibernate/engine/spi/SharedSessionContractImplementor.java b/hibernate-core/src/main/java/org/hibernate/engine/spi/SharedSessionContractImplementor.java index ad57f8421e..2dc2d681cb 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/spi/SharedSessionContractImplementor.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/spi/SharedSessionContractImplementor.java @@ -118,6 +118,15 @@ default SharedSessionContractImplementor getSession() { return this; } + /** + * A "token" that is unique to this Session. + * + * @return The token + */ + default Object getSessionToken() { + return this; + } + /** * Checks whether the session is closed. Provided separately from * {@link #isOpen()} as this method does not attempt any JTA synchronization diff --git a/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java b/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java index 032fbc7e7b..e9bd15e60c 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java @@ -105,6 +105,7 @@ public abstract class AbstractSharedSessionContract implements SharedSessionCont private final String tenantIdentifier; protected transient FastSessionServices fastSessionServices; private UUID sessionIdentifier; + private Object sessionToken; private transient JdbcConnectionAccess jdbcConnectionAccess; private transient JdbcSessionContext jdbcSessionContext; @@ -277,6 +278,14 @@ public UUID getSessionIdentifier() { return sessionIdentifier; } + @Override + public Object getSessionToken() { + if ( sessionToken == null ) { + sessionToken = new Object(); + } + return sessionToken; + } + @Override public String getTenantIdentifier() { return tenantIdentifier;