Skip to content

Commit 87711b9

Browse files
dreab8DavideD
authored andcommitted
[#2640] Fix compilation errors related to changes in ORM SessionBuilderImpl and RuntimeModelCreationContext
1 parent bab9928 commit 87711b9

File tree

4 files changed

+60
-11
lines changed

4 files changed

+60
-11
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/metamodel/mapping/internal/ReactiveRuntimeModelCreationContext.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.hibernate.mapping.Property;
2424
import org.hibernate.mapping.RootClass;
2525
import org.hibernate.mapping.SimpleValue;
26+
import org.hibernate.mapping.Value;
2627
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
2728
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
2829
import org.hibernate.query.sqm.function.SqmFunctionRegistry;
@@ -209,6 +210,11 @@ public Property getProperty() {
209210
return property;
210211
}
211212

213+
@Override
214+
public Value getValue() {
215+
return identifier;
216+
}
217+
212218
@Override
213219
public Type getType() {
214220
return identifier.getType();

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinySessionFactoryImpl.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import org.hibernate.Cache;
1616
import org.hibernate.engine.creation.internal.SessionBuilderImpl;
1717
import org.hibernate.engine.creation.internal.SessionCreationOptions;
18+
import org.hibernate.engine.spi.SessionImplementor;
1819
import org.hibernate.internal.SessionFactoryImpl;
20+
import org.hibernate.internal.SessionImpl;
1921
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
2022
import org.hibernate.reactive.common.spi.Implementor;
2123
import org.hibernate.reactive.context.Context;
@@ -89,7 +91,7 @@ public Context getContext() {
8991
@Override
9092
public Uni<Mutiny.Session> openSession() {
9193
SessionCreationOptions options = options();
92-
return uni( () -> connection( options.getTenantIdentifier() ) )
94+
return uni( () -> connection( getTenantIdentifier( options ) ) )
9395
.chain( reactiveConnection -> create( reactiveConnection,
9496
() -> new ReactiveSessionImpl( delegate, options, reactiveConnection ) ) )
9597
.map( s -> new MutinySessionImpl(s, this) );
@@ -119,7 +121,7 @@ private static Uni<Void> close(ReactiveConnection connection) {
119121
@Override
120122
public Uni<Mutiny.StatelessSession> openStatelessSession() {
121123
SessionCreationOptions options = options();
122-
return uni( () -> connection( options.getTenantIdentifier() ) )
124+
return uni( () -> connection( getTenantIdentifier( options ) ) )
123125
.chain( reactiveConnection -> create( reactiveConnection,
124126
() -> new ReactiveStatelessSessionImpl( delegate, options, reactiveConnection ) ) )
125127
.map( s -> new MutinyStatelessSessionImpl(s, this) );
@@ -134,12 +136,22 @@ public Uni<Mutiny.StatelessSession> openStatelessSession(String tenantId) {
134136
}
135137

136138
private SessionCreationOptions options() {
137-
return new SessionBuilderImpl( delegate );
139+
return new SessionBuilderImpl( delegate ) {
140+
@Override
141+
protected SessionImplementor createSession() {
142+
return new SessionImpl( delegate, this );
143+
}
144+
};
138145
}
139146

140147
private SessionCreationOptions options(String tenantIdentifier) {
141-
return (SessionCreationOptions) new SessionBuilderImpl( delegate )
142-
.tenantIdentifier( tenantIdentifier );
148+
SessionBuilderImpl sessionBuilder = new SessionBuilderImpl( delegate ) {
149+
@Override
150+
protected SessionImplementor createSession() {
151+
return new SessionImpl( delegate, this );
152+
}
153+
};
154+
return (SessionCreationOptions) sessionBuilder.tenantIdentifier( tenantIdentifier );
143155
}
144156

145157
private CompletionStage<ReactiveConnection> connection(String tenantId) {
@@ -284,4 +296,9 @@ public void close() {
284296
public boolean isOpen() {
285297
return delegate.isOpen();
286298
}
299+
300+
private String getTenantIdentifier(SessionCreationOptions options) {
301+
return options.getTenantIdentifierValue() == null ? null : delegate.getTenantIdentifierJavaType().toString(
302+
options.getTenantIdentifierValue() );
303+
}
287304
}

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/impl/StageSessionFactoryImpl.java

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import org.hibernate.Cache;
1010
import org.hibernate.engine.creation.internal.SessionBuilderImpl;
1111
import org.hibernate.engine.creation.internal.SessionCreationOptions;
12+
import org.hibernate.engine.spi.SessionImplementor;
1213
import org.hibernate.internal.SessionFactoryImpl;
14+
import org.hibernate.internal.SessionImpl;
1315
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
1416
import org.hibernate.reactive.common.spi.Implementor;
1517
import org.hibernate.reactive.context.Context;
@@ -77,7 +79,7 @@ public Context getContext() {
7779
@Override
7880
public CompletionStage<Stage.Session> openSession() {
7981
SessionCreationOptions options = options();
80-
return connection( options.getTenantIdentifier() )
82+
return connection( getTenantIdentifier( options ) )
8183
.thenCompose( connection -> create( connection,
8284
() -> new ReactiveSessionImpl( delegate, options, connection ) ) )
8385
.thenApply( StageSessionImpl::new );
@@ -94,7 +96,7 @@ public CompletionStage<Stage.Session> openSession(String tenantId) {
9496
@Override
9597
public CompletionStage<Stage.StatelessSession> openStatelessSession() {
9698
SessionCreationOptions options = options();
97-
return connection( options.getTenantIdentifier() )
99+
return connection( getTenantIdentifier( options ) )
98100
.thenCompose( connection -> create( connection,
99101
() -> new ReactiveStatelessSessionImpl( delegate, options, connection ) ) )
100102
.thenApply( StageStatelessSessionImpl::new );
@@ -125,12 +127,26 @@ private <S> CompletionStage<S> create(ReactiveConnection connection, Supplier<S>
125127
}
126128

127129
private SessionCreationOptions options() {
128-
return new SessionBuilderImpl( delegate );
130+
return new SessionBuilderImpl( delegate ) {
131+
@Override
132+
protected SessionImplementor createSession() {
133+
return new SessionImpl( delegate, this );
134+
}
135+
};
129136
}
130137

131-
private SessionCreationOptions options(String tenantIdentifier) {
132-
return (SessionCreationOptions) new SessionBuilderImpl( delegate )
133-
.tenantIdentifier( tenantIdentifier );
138+
private SessionCreationOptions options(String tenantId) {
139+
return new SessionBuilderImpl( delegate ) {
140+
@Override
141+
protected SessionImplementor createSession() {
142+
return new SessionImpl( delegate, this );
143+
}
144+
145+
@Override
146+
public Object getTenantIdentifierValue() {
147+
return tenantId;
148+
}
149+
};
134150
}
135151

136152
private CompletionStage<ReactiveConnection> connection(String tenantId) {
@@ -289,4 +305,8 @@ public HibernateCriteriaBuilder getCriteriaBuilder() {
289305
return delegate.getCriteriaBuilder();
290306
}
291307

308+
private String getTenantIdentifier(SessionCreationOptions options) {
309+
return options.getTenantIdentifierValue() == null ? null : delegate.getTenantIdentifierJavaType().toString(
310+
options.getTenantIdentifierValue() );
311+
}
292312
}

hibernate-reactive-core/src/main/java/org/hibernate/reactive/tuple/entity/ReactiveEntityMetamodel.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hibernate.mapping.Property;
2828
import org.hibernate.mapping.RootClass;
2929
import org.hibernate.mapping.SimpleValue;
30+
import org.hibernate.mapping.Value;
3031
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
3132
import org.hibernate.reactive.bythecode.spi.ReactiveBytecodeEnhancementMetadataPojoImplAdapter;
3233
import org.hibernate.reactive.id.ReactiveIdentifierGenerator;
@@ -194,6 +195,11 @@ public Property getProperty() {
194195
return property;
195196
}
196197

198+
@Override
199+
public Value getValue() {
200+
return identifier;
201+
}
202+
197203
@Override
198204
public Type getType() {
199205
return identifier.getType();

0 commit comments

Comments
 (0)