Skip to content

Commit 1468b9d

Browse files
committed
use 'var' in DynamicInstantiation stuff
1 parent 9eaedc4 commit 1468b9d

8 files changed

+45
-61
lines changed

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiation.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.util.ArrayList;
88
import java.util.List;
99
import java.util.Map;
10-
import java.util.stream.Collectors;
1110

1211
import org.hibernate.query.sqm.DynamicInstantiationNature;
1312
import org.hibernate.query.sqm.sql.ConversionException;
@@ -18,17 +17,19 @@
1817

1918
import org.jboss.logging.Logger;
2019

20+
import static java.util.stream.Collectors.toList;
21+
2122
/**
2223
* Represents a dynamic-instantiation (from an SQM query) as a DomainResultProducer
2324
*
2425
* @author Steve Ebersole
2526
*/
26-
public class DynamicInstantiation<T> implements DomainResultProducer {
27+
public class DynamicInstantiation<T> implements DomainResultProducer<T> {
2728
private static final Logger LOG = Logger.getLogger( DynamicInstantiation.class );
2829

2930
private final DynamicInstantiationNature nature;
3031
private final JavaType<T> targetJavaType;
31-
private List<DynamicInstantiationArgument> arguments;
32+
private List<DynamicInstantiationArgument<?>> arguments;
3233

3334
private boolean argumentAdditionsComplete = false;
3435

@@ -47,7 +48,7 @@ public JavaType<T> getTargetJavaType() {
4748
return targetJavaType;
4849
}
4950

50-
public void addArgument(String alias, DomainResultProducer<?> argumentResultProducer, DomainResultCreationState creationState) {
51+
public void addArgument(String alias, DomainResultProducer<?> argumentResultProducer) {
5152
if ( argumentAdditionsComplete ) {
5253
throw new ConversionException( "Unexpected call to DynamicInstantiation#addAgument after previously complete" );
5354
}
@@ -82,7 +83,7 @@ public void complete() {
8283
argumentAdditionsComplete = true;
8384
}
8485

85-
public List<DynamicInstantiationArgument> getArguments() {
86+
public List<DynamicInstantiationArgument<?>> getArguments() {
8687
return arguments;
8788
}
8889

@@ -92,17 +93,16 @@ public String toString() {
9293
}
9394

9495
@Override
95-
public DomainResult createDomainResult(
96+
public DomainResult<T> createDomainResult(
9697
String resultVariable,
9798
DomainResultCreationState creationState) {
98-
//noinspection unchecked
99-
return new DynamicInstantiationResultImpl(
99+
return new DynamicInstantiationResultImpl<>(
100100
resultVariable,
101101
getNature(),
102102
getTargetJavaType(),
103103
getArguments().stream()
104104
.map( argument -> argument.buildArgumentDomainResult( creationState ) )
105-
.collect( Collectors.toList() )
105+
.collect( toList() )
106106
);
107107
}
108108

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiationArgument.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import org.hibernate.query.sqm.sql.BaseSqmToSqlAstConverter;
88
import org.hibernate.query.sqm.sql.internal.DomainResultProducer;
9-
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
109
import org.hibernate.sql.results.graph.DomainResultCreationState;
1110

1211
/**
@@ -26,9 +25,9 @@ public String getAlias() {
2625
}
2726

2827
public ArgumentDomainResult<T> buildArgumentDomainResult(DomainResultCreationState creationState) {
29-
final SqlExpressionResolver sqlExpressionResolver = creationState.getSqlAstCreationState()
30-
.getCurrentProcessingState()
31-
.getSqlExpressionResolver();
28+
final var sqlExpressionResolver =
29+
creationState.getSqlAstCreationState().getCurrentProcessingState()
30+
.getSqlExpressionResolver();
3231
if ( sqlExpressionResolver instanceof BaseSqmToSqlAstConverter.SqmAliasedNodeCollector ) {
3332
if ( !( argumentResultProducer instanceof DynamicInstantiation<?> ) ) {
3433
( (BaseSqmToSqlAstConverter.SqmAliasedNodeCollector) sqlExpressionResolver ).next();

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiationAssemblerConstructorImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public JavaType<R> getAssembledJavaType() {
4040
@Override
4141
public R assemble(RowProcessingState rowProcessingState) {
4242
final int numberOfArgs = argumentReaders.size();
43-
Object[] args = new Object[ numberOfArgs ];
43+
final var args = new Object[ numberOfArgs ];
4444
for ( int i = 0; i < numberOfArgs; i++ ) {
4545
args[i] = argumentReaders.get( i ).assemble( rowProcessingState );
4646
}
@@ -60,14 +60,14 @@ public R assemble(RowProcessingState rowProcessingState) {
6060

6161
@Override
6262
public void resolveState(RowProcessingState rowProcessingState) {
63-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
63+
for ( var argumentReader : argumentReaders ) {
6464
argumentReader.resolveState( rowProcessingState );
6565
}
6666
}
6767

6868
@Override
6969
public <X> void forEachResultAssembler(BiConsumer<Initializer<?>, X> consumer, X arg) {
70-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
70+
for ( var argumentReader : argumentReaders ) {
7171
argumentReader.forEachResultAssembler( consumer, arg );
7272
}
7373
}

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiationAssemblerInjectionImpl.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
package org.hibernate.sql.results.graph.instantiation.internal;
66

77
import java.beans.BeanInfo;
8-
import java.beans.PropertyDescriptor;
9-
import java.lang.reflect.Constructor;
10-
import java.lang.reflect.Field;
118
import java.lang.reflect.InvocationTargetException;
12-
import java.lang.reflect.Method;
139
import java.util.ArrayList;
1410
import java.util.List;
1511
import java.util.function.BiConsumer;
@@ -35,7 +31,7 @@ public DynamicInstantiationAssemblerInjectionImpl(
3531
JavaType<T> target,
3632
List<ArgumentReader<?>> argumentReaders) {
3733
this.target = target;
38-
final Class<?> targetJavaType = target.getJavaTypeClass();
34+
final var targetJavaType = target.getJavaTypeClass();
3935
final List<BeanInjection> beanInjections = new ArrayList<>( argumentReaders.size() );
4036
BeanInfoHelper.visitBeanInfo(
4137
targetJavaType,
@@ -58,20 +54,20 @@ private DynamicInstantiationAssemblerInjectionImpl(List<BeanInjection> beanInjec
5854
}
5955

6056
private static BeanInjection injection(BeanInfo beanInfo, ArgumentReader<?> argument, Class<?> targetJavaType) {
61-
final Class<?> argType = argument.getAssembledJavaType().getJavaTypeClass();
57+
final var argType = argument.getAssembledJavaType().getJavaTypeClass();
6258
final String alias = argument.getAlias();
6359

6460
// see if we can find a property with the given name...
65-
for ( PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors() ) {
61+
for ( var propertyDescriptor : beanInfo.getPropertyDescriptors() ) {
6662
if ( propertyMatches( alias, argType, propertyDescriptor ) ) {
67-
final Method setter = propertyDescriptor.getWriteMethod();
63+
final var setter = propertyDescriptor.getWriteMethod();
6864
setter.setAccessible(true);
6965
return new BeanInjection( new BeanInjectorSetter<>( setter ), argument );
7066
}
7167
}
7268

7369
// see if we can find a Field with the given name...
74-
final Field field = findField( targetJavaType, alias, argType );
70+
final var field = findField( targetJavaType, alias, argType );
7571
if ( field != null ) {
7672
return new BeanInjection( new BeanInjectorField<>( field ), argument );
7773
}
@@ -92,7 +88,7 @@ public JavaType<T> getAssembledJavaType() {
9288
public T assemble(RowProcessingState rowProcessingState) {
9389
final T result;
9490
try {
95-
final Constructor<T> constructor = target.getJavaTypeClass().getDeclaredConstructor();
91+
final var constructor = target.getJavaTypeClass().getDeclaredConstructor();
9692
constructor.setAccessible( true );
9793
result = constructor.newInstance();
9894
}
@@ -101,7 +97,7 @@ public T assemble(RowProcessingState rowProcessingState) {
10197
throw new InstantiationException( "Error instantiating class '"
10298
+ target.getTypeName() + "' using default constructor: " + e.getMessage(), e );
10399
}
104-
for ( BeanInjection beanInjection : beanInjections ) {
100+
for ( var beanInjection : beanInjections ) {
105101
final Object assembled = beanInjection.getValueAssembler().assemble( rowProcessingState );
106102
beanInjection.getBeanInjector().inject( result, assembled );
107103
}
@@ -110,14 +106,14 @@ public T assemble(RowProcessingState rowProcessingState) {
110106

111107
@Override
112108
public void resolveState(RowProcessingState rowProcessingState) {
113-
for ( BeanInjection beanInjection : beanInjections ) {
109+
for ( var beanInjection : beanInjections ) {
114110
beanInjection.getValueAssembler().resolveState( rowProcessingState );
115111
}
116112
}
117113

118114
@Override
119115
public <X> void forEachResultAssembler(BiConsumer<Initializer<?>, X> consumer, X arg) {
120-
for ( BeanInjection beanInjection : beanInjections ) {
116+
for ( var beanInjection : beanInjections ) {
121117
beanInjection.getValueAssembler().forEachResultAssembler( consumer, arg );
122118
}
123119
}

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiationAssemblerListImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,22 @@ public JavaType<List<?>> getAssembledJavaType() {
4141
public List<?> assemble(
4242
RowProcessingState rowProcessingState) {
4343
final ArrayList<Object> result = new ArrayList<>();
44-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
44+
for ( var argumentReader : argumentReaders ) {
4545
result.add( argumentReader.assemble( rowProcessingState ) );
4646
}
4747
return result;
4848
}
4949

5050
@Override
5151
public void resolveState(RowProcessingState rowProcessingState) {
52-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
52+
for ( var argumentReader : argumentReaders ) {
5353
argumentReader.resolveState( rowProcessingState );
5454
}
5555
}
5656

5757
@Override
5858
public <X> void forEachResultAssembler(BiConsumer<Initializer<?>, X> consumer, X arg) {
59-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
59+
for ( var argumentReader : argumentReaders ) {
6060
argumentReader.forEachResultAssembler( consumer, arg );
6161
}
6262
}

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiationAssemblerMapImpl.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public DynamicInstantiationAssemblerMapImpl(
3333
this.argumentReaders = argumentReaders;
3434

3535
final Set<String> aliases = new HashSet<>();
36-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
36+
for ( var argumentReader : argumentReaders ) {
3737
if ( argumentReader.getAlias() == null ) {
3838
throw new IllegalStateException( "alias for Map dynamic instantiation argument cannot be null" );
3939
}
@@ -60,20 +60,16 @@ public JavaType<Map<?,?>> getAssembledJavaType() {
6060
public Map<?,?> assemble(
6161
RowProcessingState rowProcessingState) {
6262
final HashMap<String,Object> result = new HashMap<>();
63-
64-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
65-
result.put(
66-
argumentReader.getAlias(),
67-
argumentReader.assemble( rowProcessingState )
68-
);
63+
for ( var argumentReader : argumentReaders ) {
64+
result.put( argumentReader.getAlias(),
65+
argumentReader.assemble( rowProcessingState ) );
6966
}
70-
7167
return result;
7268
}
7369

7470
@Override
7571
public void resolveState(RowProcessingState rowProcessingState) {
76-
for ( ArgumentReader<?> argumentReader : argumentReaders ) {
72+
for ( var argumentReader : argumentReaders ) {
7773
argumentReader.resolveState( rowProcessingState );
7874
}
7975
}

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/DynamicInstantiationResultImpl.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*/
55
package org.hibernate.sql.results.graph.instantiation.internal;
66

7-
import java.lang.reflect.Constructor;
87
import java.util.ArrayList;
98
import java.util.BitSet;
109
import java.util.HashSet;
@@ -19,7 +18,6 @@
1918
import org.hibernate.sql.results.graph.InitializerParent;
2019
import org.hibernate.sql.results.graph.instantiation.DynamicInstantiationResult;
2120
import org.hibernate.type.descriptor.java.JavaType;
22-
import org.hibernate.type.spi.TypeConfiguration;
2321

2422
import org.jboss.logging.Logger;
2523

@@ -63,7 +61,7 @@ public String getResultVariable() {
6361
public boolean containsAnyNonScalarResults() {
6462
//noinspection ForLoopReplaceableByForEach
6563
for ( int i = 0; i < argumentResults.size(); i++ ) {
66-
final ArgumentDomainResult<?> argumentResult = argumentResults.get( i );
64+
final var argumentResult = argumentResults.get( i );
6765
if ( argumentResult.containsAnyNonScalarResults() ) {
6866
return true;
6967
}
@@ -74,7 +72,7 @@ public boolean containsAnyNonScalarResults() {
7472

7573
@Override
7674
public void collectValueIndexesToCache(BitSet valueIndexes) {
77-
for ( ArgumentDomainResult<?> argumentResult : argumentResults ) {
75+
for ( var argumentResult : argumentResults ) {
7876
argumentResult.collectValueIndexesToCache( valueIndexes );
7977
}
8078
}
@@ -88,7 +86,7 @@ public DomainResultAssembler<R> createResultAssembler(InitializerParent<?> paren
8886
final List<ArgumentReader<?>> argumentReaders = new ArrayList<>();
8987

9088
if ( argumentResults != null ) {
91-
for ( ArgumentDomainResult<?> argumentResult : argumentResults ) {
89+
for ( var argumentResult : argumentResults ) {
9290
final String argumentAlias = argumentResult.getResultVariable();
9391
if ( argumentAlias == null ) {
9492
areAllArgumentsAliased = false;
@@ -155,19 +153,15 @@ private DomainResultAssembler<R> assembler(
155153
List<String> duplicatedAliases,
156154
List<ArgumentReader<?>> argumentReaders,
157155
AssemblerCreationState creationState) {
158-
final List<Class<?>> argumentTypes =
156+
// find a constructor matching argument types
157+
final var constructor = findMatchingConstructor(
158+
javaType.getJavaTypeClass(),
159159
argumentReaders.stream()
160-
.map(reader -> reader.getAssembledJavaType().getJavaTypeClass())
161-
.collect(toList());
162-
final TypeConfiguration typeConfiguration =
160+
.map( reader -> reader.getAssembledJavaType().getJavaTypeClass() )
161+
.collect( toList() ),
163162
creationState.getSqlAstCreationContext()
164163
.getMappingMetamodel()
165-
.getTypeConfiguration();
166-
// find a constructor matching argument types
167-
final Constructor<R> constructor = findMatchingConstructor(
168-
javaType.getJavaTypeClass(),
169-
argumentTypes,
170-
typeConfiguration
164+
.getTypeConfiguration()
171165
);
172166
if ( constructor != null ) {
173167
constructor.setAccessible( true );

hibernate-core/src/main/java/org/hibernate/sql/results/graph/instantiation/internal/InstantiationHelper.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.beans.PropertyDescriptor;
1414
import java.lang.reflect.Constructor;
1515
import java.lang.reflect.Field;
16-
import java.lang.reflect.Type;
1716
import java.util.List;
1817

1918
import static org.hibernate.query.sqm.tree.expression.Compatibility.areAssignmentCompatible;
@@ -47,7 +46,7 @@ public static boolean isInjectionCompatible(Class<?> targetJavaType, List<String
4746
}
4847

4948
private static boolean checkArgument(Class<?> targetJavaType, BeanInfo beanInfo, String alias, Class<?> argType) {
50-
for ( PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors() ) {
49+
for ( var propertyDescriptor : beanInfo.getPropertyDescriptors() ) {
5150
if ( propertyMatches( alias, argType, propertyDescriptor ) ) {
5251
return true;
5352
}
@@ -63,7 +62,7 @@ public static boolean isConstructorCompatible(Class<?> javaClass, List<Class<?>>
6362
Class<T> type,
6463
List<Class<?>> argumentTypes,
6564
TypeConfiguration typeConfiguration) {
66-
for ( final Constructor<?> constructor : type.getDeclaredConstructors() ) {
65+
for ( var constructor : type.getDeclaredConstructors() ) {
6766
if ( isConstructorCompatible( constructor, argumentTypes, typeConfiguration ) ) {
6867
//noinspection unchecked
6968
return (Constructor<T>) constructor;
@@ -79,7 +78,7 @@ public static boolean isConstructorCompatible(
7978
final var genericParameterTypes = constructor.getGenericParameterTypes();
8079
if ( genericParameterTypes.length == argumentTypes.size() ) {
8180
for (int i = 0; i < argumentTypes.size(); i++ ) {
82-
final Type parameterType = genericParameterTypes[i];
81+
final var parameterType = genericParameterTypes[i];
8382
final var argumentType = argumentTypes.get( i );
8483
final var type =
8584
parameterType instanceof Class<?> classParameter
@@ -107,7 +106,7 @@ public static boolean isConstructorCompatible(
107106

108107
static Field findField(Class<?> declaringClass, String name, Class<?> javaType) {
109108
try {
110-
final Field field = declaringClass.getDeclaredField( name );
109+
final var field = declaringClass.getDeclaredField( name );
111110
// field should never be null
112111
if ( areAssignmentCompatible( field.getType(), javaType ) ) {
113112
field.setAccessible( true );

0 commit comments

Comments
 (0)