Skip to content

Commit 96caa30

Browse files
committed
three code cleanups
1 parent dde66e0 commit 96caa30

File tree

3 files changed

+51
-73
lines changed

3 files changed

+51
-73
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/event/impl/AbstractReactiveSaveEventListener.java

+14-16
Original file line numberDiff line numberDiff line change
@@ -180,23 +180,21 @@ private CompletionStage<Object> generateId(
180180
EventSource source,
181181
ReactiveIdentifierGenerator<?> generator,
182182
EntityPersister persister) {
183-
return generator
184-
.generate( (ReactiveConnectionSupplier) source, entity )
183+
return generator.generate( (ReactiveConnectionSupplier) source, entity )
185184
.thenApply( id -> {
186-
final Object generatedId = castToIdentifierType( id, persister );
187-
if ( generatedId == null ) {
188-
throw new IdentifierGenerationException( "null id generated for: " + entity.getClass() );
189-
}
190-
if ( LOG.isDebugEnabled() ) {
191-
LOG.debugf(
192-
"Generated identifier: %s, using strategy: %s",
193-
persister.getIdentifierType().toLoggableString( generatedId, source.getFactory() ),
194-
generator.getClass().getName()
195-
);
196-
}
197-
return generatedId;
198-
}
199-
);
185+
final Object generatedId = castToIdentifierType( id, persister );
186+
if ( generatedId == null ) {
187+
throw new IdentifierGenerationException( "null id generated for: " + entity.getClass() );
188+
}
189+
if ( LOG.isDebugEnabled() ) {
190+
LOG.debugf(
191+
"Generated identifier: %s, using strategy: %s",
192+
persister.getIdentifierType().toLoggableString( generatedId, source.getFactory() ),
193+
generator.getClass().getName()
194+
);
195+
}
196+
return generatedId;
197+
} );
200198
}
201199

202200
/**

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/impl/ReactiveSessionImpl.java

+7-9
Original file line numberDiff line numberDiff line change
@@ -415,20 +415,17 @@ public void prepareForQueryExecution(boolean requiresTxn) {
415415
@Override
416416
public <T> ReactiveNativeQuery<T> createReactiveNativeQuery(String sqlString, Class<T> resultClass) {
417417
final ReactiveNativeQuery<T> query = createReactiveNativeQuery( sqlString );
418-
return addResultType( resultClass, query );
418+
addEntityOrResultType( resultClass, query );
419+
return query;
419420
}
420421

421-
private <T> ReactiveNativeQuery<T> addResultType(Class<T> resultClass, ReactiveNativeQuery<T> query) {
422-
if ( Tuple.class.equals( resultClass ) ) {
423-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
424-
}
425-
else if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
422+
private <T> void addEntityOrResultType(Class<T> resultClass, ReactiveNativeQuery<T> query) {
423+
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
426424
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
427425
}
428426
else if ( resultClass != Object.class && resultClass != Object[].class ) {
429427
query.addResultTypeClass( resultClass );
430428
}
431-
return query;
432429
}
433430

434431
@Override
@@ -464,7 +461,7 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, St
464461
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, String resultSetMappingName, Class<R> resultClass) {
465462
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString, resultSetMappingName );
466463
if ( Tuple.class.equals( resultClass ) ) {
467-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
464+
query.setTupleTransformer( NativeQueryTupleTransformer.INSTANCE );
468465
}
469466
return query;
470467
}
@@ -610,7 +607,8 @@ private void addAffectedEntities(AffectedEntities affectedEntities, NativeQueryI
610607
@Override
611608
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String queryString, Class<R> resultType, AffectedEntities affectedEntities) {
612609
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( queryString, affectedEntities );
613-
return addResultType( resultType, query );
610+
addEntityOrResultType( resultType, query );
611+
return query;
614612
}
615613

616614
@Override

hibernate-reactive-core/src/main/java/org/hibernate/reactive/session/impl/ReactiveStatelessSessionImpl.java

+30-48
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,8 @@
5151
import org.hibernate.query.criteria.JpaCriteriaQuery;
5252
import org.hibernate.query.criteria.JpaRoot;
5353
import org.hibernate.query.hql.spi.SqmQueryImplementor;
54-
import org.hibernate.query.named.NamedResultSetMappingMemento;
5554
import org.hibernate.query.spi.HqlInterpretation;
5655
import org.hibernate.query.spi.QueryImplementor;
57-
import org.hibernate.query.sql.internal.NativeQueryImpl;
5856
import org.hibernate.query.sql.spi.NativeQueryImplementor;
5957
import org.hibernate.query.sqm.internal.SqmUtil;
6058
import org.hibernate.query.sqm.tree.SqmStatement;
@@ -372,12 +370,18 @@ private void firePostInsert(Object entity, Object id, Object[] state, EntityPers
372370

373371
private CompletionStage<?> generateId(EntityPersister persister, Object entity, Generator generator) {
374372
if ( generator.generatesOnInsert() ) {
375-
return generator instanceof ReactiveIdentifierGenerator
376-
? ( (ReactiveIdentifierGenerator<?>) generator ).generate( this, this )
377-
: completedFuture( ( (BeforeExecutionGenerator) generator ).generate( this, entity, null, INSERT ) );
378-
}
373+
if ( generator instanceof ReactiveIdentifierGenerator<?> reactiveGenerator ) {
374+
return reactiveGenerator.generate(this, this);
375+
}
376+
else if ( generator instanceof BeforeExecutionGenerator beforeExecutionGenerator ) {
377+
return completedFuture( beforeExecutionGenerator.generate(this, entity, null, INSERT) );
378+
}
379+
else {
380+
throw new IllegalArgumentException( "Unsupported generator type: " + generator.getClass().getName() );
381+
}
382+
}
379383
else {
380-
Object id = persister.getIdentifier( entity, this );
384+
final Object id = persister.getIdentifier( entity, this );
381385
if ( id == null ) {
382386
throw new IdentifierGenerationException( "Identifier of entity '" + persister.getEntityName() + "' must be manually assigned before calling 'insert()'" );
383387
}
@@ -878,8 +882,7 @@ public <R> ReactiveNativeQueryImplementor<R> createReactiveNativeQuery(String sq
878882
delayedAfterCompletion();
879883

880884
try {
881-
ReactiveNativeQueryImpl<R> query = new ReactiveNativeQueryImpl<>( sqlString, this);
882-
885+
final ReactiveNativeQueryImpl<R> query = new ReactiveNativeQueryImpl<>( sqlString, this );
883886
if ( isEmpty( query.getComment() ) ) {
884887
query.setComment( "dynamic native SQL query" );
885888
}
@@ -893,17 +896,18 @@ public <R> ReactiveNativeQueryImplementor<R> createReactiveNativeQuery(String sq
893896

894897
@Override
895898
public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, Class<R> resultClass) {
896-
ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
897-
if ( Tuple.class.equals( resultClass ) ) {
898-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
899-
}
900-
else if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
899+
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
900+
addEntityOrResultType( resultClass, query );
901+
return query;
902+
}
903+
904+
private <R> void addEntityOrResultType(Class<R> resultClass, ReactiveNativeQuery<R> query) {
905+
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
901906
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
902907
}
903-
else {
904-
( (NativeQueryImpl<?>) query ).addScalar( 1, resultClass );
908+
else if ( resultClass != Object.class && resultClass != Object[].class ) {
909+
query.addResultTypeClass( resultClass );
905910
}
906-
return query;
907911
}
908912

909913
@Override
@@ -912,12 +916,13 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(
912916
Class<R> resultClass,
913917
String tableAlias) {
914918
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString );
915-
if ( getFactory().getMappingMetamodel().isEntityClass(resultClass) ) {
919+
if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
916920
query.addEntity( tableAlias, resultClass.getName(), LockMode.READ );
917921
return query;
918922
}
919-
920-
throw new UnknownEntityTypeException( "unable to locate persister: " + resultClass.getName() );
923+
else {
924+
throw new UnknownEntityTypeException( "unable to locate persister: " + resultClass.getName() );
925+
}
921926
}
922927

923928
@Override
@@ -927,19 +932,9 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(String sqlString, St
927932
delayedAfterCompletion();
928933

929934
try {
930-
if ( isNotEmpty( resultSetMappingName ) ) {
931-
final NamedResultSetMappingMemento resultSetMappingMemento = getFactory().getQueryEngine()
932-
.getNamedObjectRepository()
933-
.getResultSetMappingMemento( resultSetMappingName );
934-
935-
if ( resultSetMappingMemento == null ) {
936-
throw new HibernateException( "Could not resolve specified result-set mapping name : " + resultSetMappingName );
937-
}
938-
return new ReactiveNativeQueryImpl<>( sqlString, resultSetMappingMemento, this );
939-
}
940-
else {
941-
return new ReactiveNativeQueryImpl<>( sqlString, this );
942-
}
935+
return isNotEmpty( resultSetMappingName )
936+
? new ReactiveNativeQueryImpl<>( sqlString, getResultSetMappingMemento( resultSetMappingName ), this )
937+
: new ReactiveNativeQueryImpl<>( sqlString, this );
943938
//TODO: why no applyQuerySettingsAndHints( query ); ???
944939
}
945940
catch (RuntimeException he) {
@@ -954,7 +949,7 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(
954949
Class<R> resultClass) {
955950
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( sqlString, resultSetMappingName );
956951
if ( Tuple.class.equals( resultClass ) ) {
957-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
952+
query.setTupleTransformer( NativeQueryTupleTransformer.INSTANCE );
958953
}
959954
return query;
960955
}
@@ -1097,20 +1092,7 @@ public <R> ReactiveNativeQuery<R> createReactiveNativeQuery(
10971092
Class<R> resultType,
10981093
AffectedEntities affectedEntities) {
10991094
final ReactiveNativeQuery<R> query = createReactiveNativeQuery( queryString, affectedEntities );
1100-
return addResultType( resultType, query );
1101-
}
1102-
1103-
//TODO: copy/paste from ORM, change visibility
1104-
private <T> ReactiveNativeQuery<T> addResultType(Class<T> resultClass, ReactiveNativeQuery<T> query) {
1105-
if ( Tuple.class.equals( resultClass ) ) {
1106-
query.setTupleTransformer( new NativeQueryTupleTransformer() );
1107-
}
1108-
else if ( getFactory().getMappingMetamodel().isEntityClass( resultClass ) ) {
1109-
query.addEntity( "alias1", resultClass.getName(), LockMode.READ );
1110-
}
1111-
else if ( resultClass != Object.class && resultClass != Object[].class ) {
1112-
query.addScalar( 1, resultClass );
1113-
}
1095+
addEntityOrResultType( resultType, query );
11141096
return query;
11151097
}
11161098

0 commit comments

Comments
 (0)