Skip to content

Commit 9a32930

Browse files
committed
minor code changes to org.hibernate.sql.results.graph.embeddable.internal
mostly just use of 'var'
1 parent e1351e0 commit 9a32930

File tree

5 files changed

+195
-204
lines changed

5 files changed

+195
-204
lines changed

hibernate-core/src/main/java/org/hibernate/sql/results/graph/embeddable/internal/AggregateEmbeddableFetchImpl.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,13 @@
77
import org.hibernate.engine.FetchTiming;
88
import org.hibernate.metamodel.mapping.EmbeddableMappingType;
99
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
10-
import org.hibernate.metamodel.mapping.SelectableMapping;
1110
import org.hibernate.spi.NavigablePath;
1211
import org.hibernate.sql.ast.SqlAstJoinType;
13-
import org.hibernate.sql.ast.spi.SqlAstCreationState;
14-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
1512
import org.hibernate.sql.ast.spi.SqlSelection;
1613
import org.hibernate.sql.ast.tree.expression.Expression;
1714
import org.hibernate.sql.ast.tree.from.TableGroup;
1815
import org.hibernate.sql.ast.tree.from.TableGroupJoin;
1916
import org.hibernate.sql.ast.tree.from.TableGroupProducer;
20-
import org.hibernate.sql.ast.tree.from.TableReference;
2117
import org.hibernate.sql.results.graph.AbstractFetchParent;
2218
import org.hibernate.sql.results.graph.AssemblerCreationState;
2319
import org.hibernate.sql.results.graph.DomainResultAssembler;
@@ -31,9 +27,9 @@
3127
import org.hibernate.sql.results.graph.embeddable.AggregateEmbeddableResultGraphNode;
3228
import org.hibernate.sql.results.graph.embeddable.EmbeddableInitializer;
3329
import org.hibernate.sql.results.graph.embeddable.EmbeddableValuedFetchable;
34-
import org.hibernate.type.spi.TypeConfiguration;
3530

3631
import static org.hibernate.internal.util.NullnessUtil.castNonNull;
32+
import static org.hibernate.sql.results.graph.embeddable.AggregateEmbeddableResultGraphNode.determineAggregateValuesArrayPositions;
3733

3834
/**
3935
* A Fetch for an embeddable that is mapped as aggregate e.g. STRUCT, JSON or XML.
@@ -66,7 +62,7 @@ public AggregateEmbeddableFetchImpl(
6662
this.fetchTiming = fetchTiming;
6763
this.hasTableGroup = hasTableGroup;
6864

69-
final SqlAstCreationState sqlAstCreationState = creationState.getSqlAstCreationState();
65+
final var sqlAstCreationState = creationState.getSqlAstCreationState();
7066
this.tableGroup = sqlAstCreationState.getFromClauseAccess().resolveTableGroup(
7167
getNavigablePath(),
7268
np -> {
@@ -88,19 +84,19 @@ public AggregateEmbeddableFetchImpl(
8884

8985
);
9086

91-
final SqlExpressionResolver sqlExpressionResolver = sqlAstCreationState.getSqlExpressionResolver();
92-
final TableReference tableReference = tableGroup.getPrimaryTableReference();
93-
final SelectableMapping selectableMapping = fetchContainer.getAggregateMapping();
87+
final var sqlExpressionResolver = sqlAstCreationState.getSqlExpressionResolver();
88+
final var tableReference = tableGroup.getPrimaryTableReference();
89+
final var selectableMapping = fetchContainer.getAggregateMapping();
9490
final Expression expression = sqlExpressionResolver.resolveSqlExpression( tableReference, selectableMapping );
95-
final TypeConfiguration typeConfiguration = sqlAstCreationState.getCreationContext().getTypeConfiguration();
91+
final var typeConfiguration = sqlAstCreationState.getCreationContext().getTypeConfiguration();
9692
final SqlSelection aggregateSelection = sqlExpressionResolver.resolveSqlSelection(
9793
expression,
9894
typeConfiguration.getJavaTypeRegistry().resolveDescriptor( Object[].class ),
9995
fetchParent,
10096
typeConfiguration
10197
);
10298
this.discriminatorFetch = creationState.visitEmbeddableDiscriminatorFetch( this, true );
103-
this.aggregateValuesArrayPositions = AggregateEmbeddableResultGraphNode.determineAggregateValuesArrayPositions( fetchParent, aggregateSelection );
99+
this.aggregateValuesArrayPositions = determineAggregateValuesArrayPositions( fetchParent, aggregateSelection );
104100
resetFetches( creationState.visitNestedFetches( this ) );
105101
}
106102

@@ -162,7 +158,7 @@ public EmbeddableMappingType getReferencedMappingType() {
162158
}
163159

164160
@Override
165-
public DomainResultAssembler createAssembler(
161+
public DomainResultAssembler<?> createAssembler(
166162
InitializerParent<?> parent,
167163
AssemblerCreationState creationState) {
168164
return new EmbeddableAssembler( creationState.resolveInitializer( this, parent, this ).asEmbeddableInitializer() );

hibernate-core/src/main/java/org/hibernate/sql/results/graph/embeddable/internal/AggregateEmbeddableResultImpl.java

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,12 @@
77
import org.hibernate.internal.util.NullnessUtil;
88
import org.hibernate.metamodel.mapping.EmbeddableMappingType;
99
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
10-
import org.hibernate.metamodel.mapping.SelectableMapping;
1110
import org.hibernate.spi.NavigablePath;
1211
import org.hibernate.sql.ast.SqlAstJoinType;
13-
import org.hibernate.sql.ast.spi.FromClauseAccess;
14-
import org.hibernate.sql.ast.spi.SqlAstCreationState;
15-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
1612
import org.hibernate.sql.ast.spi.SqlSelection;
1713
import org.hibernate.sql.ast.tree.expression.Expression;
1814
import org.hibernate.sql.ast.tree.from.TableGroup;
1915
import org.hibernate.sql.ast.tree.from.TableGroupJoin;
20-
import org.hibernate.sql.ast.tree.from.TableReference;
2116
import org.hibernate.sql.results.graph.AbstractFetchParent;
2217
import org.hibernate.sql.results.graph.AssemblerCreationState;
2318
import org.hibernate.sql.results.graph.DomainResult;
@@ -33,7 +28,8 @@
3328
import org.hibernate.sql.results.graph.embeddable.EmbeddableResult;
3429
import org.hibernate.sql.results.graph.internal.ImmutableFetchList;
3530
import org.hibernate.type.descriptor.java.JavaType;
36-
import org.hibernate.type.spi.TypeConfiguration;
31+
32+
import static org.hibernate.sql.results.graph.embeddable.AggregateEmbeddableResultGraphNode.determineAggregateValuesArrayPositions;
3733

3834
/**
3935
* A Result for an embeddable that is mapped as aggregate e.g. STRUCT, JSON or XML.
@@ -42,10 +38,9 @@
4238
* uses {@link org.hibernate.sql.results.graph.DomainResultCreationState#visitNestedFetches(FetchParent)}
4339
* for creating the fetches for the attributes of the embeddable.
4440
*/
45-
public class AggregateEmbeddableResultImpl<T> extends AbstractFetchParent implements AggregateEmbeddableResultGraphNode,
46-
DomainResult<T>,
47-
EmbeddableResult<T>,
48-
InitializerProducer<AggregateEmbeddableResultImpl<T>> {
41+
public class AggregateEmbeddableResultImpl<T> extends AbstractFetchParent
42+
implements AggregateEmbeddableResultGraphNode, DomainResult<T>, EmbeddableResult<T>,
43+
InitializerProducer<AggregateEmbeddableResultImpl<T>> {
4944
private final String resultVariable;
5045
private final boolean containsAnyNonScalars;
5146
private final EmbeddableMappingType fetchContainer;
@@ -66,15 +61,16 @@ public AggregateEmbeddableResultImpl(
6661
this.fetchContainer = embeddedPartDescriptor.getEmbeddableTypeDescriptor();
6762
this.resultVariable = resultVariable;
6863

69-
final SqlAstCreationState sqlAstCreationState = creationState.getSqlAstCreationState();
70-
final FromClauseAccess fromClauseAccess = sqlAstCreationState.getFromClauseAccess();
71-
64+
final var sqlAstCreationState = creationState.getSqlAstCreationState();
65+
final var fromClauseAccess = sqlAstCreationState.getFromClauseAccess();
7266
final TableGroup tableGroup = fromClauseAccess.resolveTableGroup(
7367
getNavigablePath(),
7468
np -> {
75-
final EmbeddableValuedModelPart embeddedValueMapping = embeddedPartDescriptor.getEmbeddableTypeDescriptor()
76-
.getEmbeddedValueMapping();
77-
final TableGroup tg = fromClauseAccess.findTableGroup( NullnessUtil.castNonNull( np.getParent() ).getParent() );
69+
final EmbeddableValuedModelPart embeddedValueMapping =
70+
embeddedPartDescriptor.getEmbeddableTypeDescriptor()
71+
.getEmbeddedValueMapping();
72+
final TableGroup tg =
73+
fromClauseAccess.findTableGroup( NullnessUtil.castNonNull( np.getParent() ).getParent() );
7874
final TableGroupJoin tableGroupJoin = embeddedValueMapping.createTableGroupJoin(
7975
np,
8076
tg,
@@ -90,11 +86,11 @@ public AggregateEmbeddableResultImpl(
9086
}
9187
);
9288

93-
final SqlExpressionResolver sqlExpressionResolver = sqlAstCreationState.getSqlExpressionResolver();
94-
final TableReference tableReference = tableGroup.getPrimaryTableReference();
95-
final SelectableMapping selectableMapping = embeddedPartDescriptor.getEmbeddableTypeDescriptor().getAggregateMapping();
89+
final var sqlExpressionResolver = sqlAstCreationState.getSqlExpressionResolver();
90+
final var tableReference = tableGroup.getPrimaryTableReference();
91+
final var selectableMapping = embeddedPartDescriptor.getEmbeddableTypeDescriptor().getAggregateMapping();
9692
final Expression expression = sqlExpressionResolver.resolveSqlExpression( tableReference, selectableMapping );
97-
final TypeConfiguration typeConfiguration = sqlAstCreationState.getCreationContext().getTypeConfiguration();
93+
final var typeConfiguration = sqlAstCreationState.getCreationContext().getTypeConfiguration();
9894
final SqlSelection aggregateSelection = sqlExpressionResolver.resolveSqlSelection(
9995
expression,
10096
// Using the Object[] type here, so that a different JDBC extractor is chosen
@@ -103,7 +99,7 @@ public AggregateEmbeddableResultImpl(
10399
typeConfiguration
104100
);
105101
this.discriminatorFetch = creationState.visitEmbeddableDiscriminatorFetch( this, true );
106-
this.aggregateValuesArrayPositions = AggregateEmbeddableResultGraphNode.determineAggregateValuesArrayPositions( null, aggregateSelection );
102+
this.aggregateValuesArrayPositions = determineAggregateValuesArrayPositions( null, aggregateSelection );
107103
resetFetches( creationState.visitNestedFetches( this ) );
108104
this.containsAnyNonScalars = determineIfContainedAnyScalars( getFetches() );
109105
}
@@ -119,7 +115,6 @@ private static boolean determineIfContainedAnyScalars(ImmutableFetchList fetches
119115
return true;
120116
}
121117
}
122-
123118
return false;
124119
}
125120

hibernate-core/src/main/java/org/hibernate/sql/results/graph/embeddable/internal/EmbeddableInitializerImpl.java

Lines changed: 48 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@
1414
import org.hibernate.metamodel.mapping.EmbeddableMappingType;
1515
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
1616
import org.hibernate.metamodel.mapping.VirtualModelPart;
17-
import org.hibernate.metamodel.spi.EmbeddableInstantiator;
1817
import org.hibernate.metamodel.spi.ValueAccess;
1918
import org.hibernate.property.access.spi.PropertyAccess;
2019
import org.hibernate.property.access.spi.Setter;
21-
import org.hibernate.proxy.HibernateProxy;
22-
import org.hibernate.proxy.LazyInitializer;
2320
import org.hibernate.spi.NavigablePath;
2421
import org.hibernate.sql.results.graph.AssemblerCreationState;
2522
import org.hibernate.sql.results.graph.DomainResult;
@@ -32,7 +29,6 @@
3229
import org.hibernate.sql.results.graph.InitializerParent;
3330
import org.hibernate.sql.results.graph.basic.BasicFetch;
3431
import org.hibernate.sql.results.graph.basic.BasicResultAssembler;
35-
import org.hibernate.sql.results.graph.collection.CollectionInitializer;
3632
import org.hibernate.sql.results.graph.embeddable.EmbeddableInitializer;
3733
import org.hibernate.sql.results.graph.embeddable.EmbeddableResultGraphNode;
3834
import org.hibernate.sql.results.graph.entity.EntityInitializer;
@@ -42,6 +38,7 @@
4238

4339
import org.checkerframework.checker.nullness.qual.Nullable;
4440

41+
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
4542
import static org.hibernate.sql.results.graph.entity.internal.BatchEntityInsideEmbeddableSelectFetchInitializer.BATCH_PROPERTY;
4643

4744
/**
@@ -361,9 +358,9 @@ public void resolveInstance(@Nullable Object instance, EmbeddableInitializerData
361358
}
362359

363360
private void resolveInstanceSubInitializers(int subclassId, Object instance, RowProcessingState rowProcessingState) {
364-
final Initializer<?>[] initializers = subInitializersForResolveFromInitialized[subclassId];
361+
final var initializers = subInitializersForResolveFromInitialized[subclassId];
365362
for ( int i = 0; i < initializers.length; i++ ) {
366-
final Initializer<?> initializer = initializers[i];
363+
final var initializer = initializers[i];
367364
if ( initializer != null ) {
368365
final Object subInstance = embeddableMappingType.getValue( instance, i );
369366
if ( subInstance == LazyPropertyInitializer.UNFETCHED_PROPERTY ) {
@@ -387,7 +384,7 @@ public void initializeInstance(EmbeddableInitializerData data) {
387384
if ( embedded.getParentInjectionAttributePropertyAccess() != null || embedded instanceof VirtualModelPart ) {
388385
handleParentInjection( data );
389386

390-
final LazyInitializer lazyInitializer = HibernateProxy.extractLazyInitializer( data.getInstance() );
387+
final var lazyInitializer = extractLazyInitializer( data.getInstance() );
391388
// If the composite instance has a lazy initializer attached, this means that the embeddable is actually virtual
392389
// and the compositeInstance == entity, so we have to inject the row state into the entity when it finishes resolution
393390
if ( lazyInitializer != null ) {
@@ -415,19 +412,19 @@ public void initializeInstance(EmbeddableInitializerData data) {
415412

416413
@Override
417414
protected void forEachSubInitializer(BiConsumer<Initializer<?>, RowProcessingState> consumer, InitializerData data) {
418-
final EmbeddableInitializerData embeddableInitializerData = (EmbeddableInitializerData) data;
419-
final RowProcessingState rowProcessingState = embeddableInitializerData.getRowProcessingState();
415+
final var embeddableInitializerData = (EmbeddableInitializerData) data;
416+
final var rowProcessingState = embeddableInitializerData.getRowProcessingState();
420417
if ( embeddableInitializerData.concreteEmbeddableType == null ) {
421-
for ( Initializer<?>[] initializers : subInitializers ) {
422-
for ( Initializer<?> initializer : initializers ) {
418+
for ( var initializers : subInitializers ) {
419+
for ( var initializer : initializers ) {
423420
if ( initializer != null ) {
424421
consumer.accept( initializer, rowProcessingState );
425422
}
426423
}
427424
}
428425
}
429426
else {
430-
for ( Initializer<?> initializer : subInitializers[embeddableInitializerData.getSubclassId()] ) {
427+
for ( var initializer : subInitializers[embeddableInitializerData.getSubclassId()] ) {
431428
if ( initializer != null ) {
432429
consumer.accept( initializer, rowProcessingState );
433430
}
@@ -460,12 +457,18 @@ private void prepareCompositeInstance(EmbeddableInitializerData data) {
460457
// Virtual model parts use the owning entity as container which the fetch parent access provides.
461458
// For an identifier or foreign key this is called during the resolveKey phase of the fetch parent,
462459
// so we can't use the fetch parent access in that case.
463-
if ( parent != null && embedded instanceof VirtualModelPart && !isPartOfKey && data.getState() != State.MISSING ) {
464-
final InitializerData subData = parent.getData( data.getRowProcessingState() );
465-
parent.resolveInstance( subData );
466-
data.setInstance( ((EntityInitializer<InitializerData>) parent).getTargetInstance( subData ) );
467-
if ( data.getState() == State.INITIALIZED ) {
468-
return;
460+
if ( parent != null && embedded instanceof VirtualModelPart && !isPartOfKey ) {
461+
final State state = data.getState();
462+
if ( state != State.MISSING ) {
463+
final InitializerData subData = parent.getData( data.getRowProcessingState() );
464+
parent.resolveInstance( subData );
465+
final Object targetInstance =
466+
((EntityInitializer<InitializerData>) parent)
467+
.getTargetInstance( subData );
468+
data.setInstance( targetInstance );
469+
if ( state == State.INITIALIZED ) {
470+
return;
471+
}
469472
}
470473
}
471474

@@ -478,19 +481,13 @@ private void prepareCompositeInstance(EmbeddableInitializerData data) {
478481

479482
protected void extractRowState(EmbeddableInitializerData data) {
480483
boolean stateAllNull = true;
481-
final DomainResultAssembler<?>[] subAssemblers = assemblers[data.getSubclassId()];
482-
final RowProcessingState rowProcessingState = data.getRowProcessingState();
484+
final var subAssemblers = assemblers[data.getSubclassId()];
485+
final var rowProcessingState = data.getRowProcessingState();
483486
final Object[] rowState = data.rowState;
484487
for ( int i = 0; i < subAssemblers.length; i++ ) {
485-
final DomainResultAssembler<?> assembler = subAssemblers[i];
488+
final var assembler = subAssemblers[i];
486489
final Object contributorValue = assembler == null ? null : assembler.assemble( rowProcessingState );
487-
488-
if ( contributorValue == BATCH_PROPERTY ) {
489-
rowState[i] = null;
490-
}
491-
else {
492-
rowState[i] = contributorValue;
493-
}
490+
rowState[i] = contributorValue == BATCH_PROPERTY ? null : contributorValue;
494491
if ( contributorValue != null ) {
495492
stateAllNull = false;
496493
}
@@ -512,8 +509,8 @@ protected boolean isNull(EmbeddableInitializerData data) {
512509

513510
@Override
514511
public void resolveState(EmbeddableInitializerData data) {
515-
final RowProcessingState rowProcessingState = data.getRowProcessingState();
516-
for ( final DomainResultAssembler<?> assembler : assemblers[data.getSubclassId()] ) {
512+
final var rowProcessingState = data.getRowProcessingState();
513+
for ( var assembler : assemblers[data.getSubclassId()] ) {
517514
assembler.resolveState( rowProcessingState );
518515
}
519516
}
@@ -522,33 +519,30 @@ private Object createCompositeInstance(EmbeddableInitializerData data) {
522519
if ( data.getState() == State.MISSING ) {
523520
return null;
524521
}
525-
526-
final EmbeddableInstantiator instantiator = data.concreteEmbeddableType == null
527-
? embeddableMappingType.getRepresentationStrategy().getInstantiator()
528-
: data.concreteEmbeddableType.getInstantiator();
529-
final Object instance = instantiator.instantiate( data );
530-
data.setState( State.RESOLVED );
531-
// EMBEDDED_LOAD_LOGGER.tracef( "Created composite instance [%s]: %s", navigablePath, instance );
532-
return instance;
522+
else {
523+
final var instantiator =
524+
data.concreteEmbeddableType == null
525+
? embeddableMappingType.getRepresentationStrategy().getInstantiator()
526+
: data.concreteEmbeddableType.getInstantiator();
527+
final Object instance = instantiator.instantiate( data );
528+
data.setState( State.RESOLVED );
529+
// EMBEDDED_LOAD_LOGGER.tracef( "Created composite instance [%s]: %s", navigablePath, instance );
530+
return instance;
531+
}
533532
}
534533

535534
private void handleParentInjection(EmbeddableInitializerData data) {
536535
final PropertyAccess parentInjectionAccess = embedded.getParentInjectionAttributePropertyAccess();
537-
if ( parentInjectionAccess == null ) {
538-
// embeddable defined no parent injection
539-
return;
540-
}
541-
542-
final Initializer<?> owningInitializer = determineOwningInitializer();
543-
final Object parent = determineParentInstance( owningInitializer, data.getRowProcessingState() );
544-
if ( parent == null ) {
545-
return;
536+
if ( parentInjectionAccess != null ) {
537+
final Object parent =
538+
determineParentInstance( determineOwningInitializer(), data.getRowProcessingState() );
539+
if ( parent != null ) {
540+
final Setter setter = parentInjectionAccess.getSetter();
541+
assert setter != null;
542+
setter.set( data.getInstance(), parent );
543+
}
546544
}
547-
548-
final Setter setter = parentInjectionAccess.getSetter();
549-
assert setter != null;
550-
551-
setter.set( data.getInstance(), parent );
545+
// else embeddable defined no parent injection
552546
}
553547

554548
private Initializer<?> determineOwningInitializer() {
@@ -570,12 +564,12 @@ private Object determineParentInstance(Initializer<?> parentInitializer, RowProc
570564
throw new UnsupportedOperationException( "Cannot determine Embeddable: " + navigablePath + " parent instance, parent initializer is null" );
571565
}
572566

573-
final CollectionInitializer<?> collectionInitializer = parentInitializer.asCollectionInitializer();
567+
final var collectionInitializer = parentInitializer.asCollectionInitializer();
574568
if ( collectionInitializer != null ) {
575569
return collectionInitializer.getCollectionInstance( rowProcessingState ).getOwner();
576570
}
577571

578-
final EntityInitializer<?> parentEntityInitializer = parentInitializer.asEntityInitializer();
572+
final var parentEntityInitializer = parentInitializer.asEntityInitializer();
579573
if ( parentEntityInitializer != null ) {
580574
return parentEntityInitializer.getTargetInstance( rowProcessingState );
581575
}

0 commit comments

Comments
 (0)