Skip to content

Commit d3bd1ec

Browse files
mp911deklajdipaja
authored andcommitted
Polishing.
Reduce method visibility. Improve method naming. Avoid using var in production code. See spring-projects#2857 Original pull request spring-projects#2859
1 parent 37bef84 commit d3bd1ec

File tree

4 files changed

+19
-24
lines changed

4 files changed

+19
-24
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/provider/HibernateJpaParametersParameterAccessor.java

+12-15
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,20 @@
1717

1818
import jakarta.persistence.EntityManager;
1919

20-
import java.util.Date;
21-
2220
import org.hibernate.engine.spi.SessionFactoryImplementor;
2321
import org.hibernate.query.TypedParameterValue;
22+
import org.hibernate.type.BasicType;
2423
import org.hibernate.type.BasicTypeRegistry;
2524
import org.springframework.data.jpa.repository.query.JpaParametersParameterAccessor;
2625
import org.springframework.data.repository.query.Parameter;
2726
import org.springframework.data.repository.query.Parameters;
2827
import org.springframework.data.repository.query.ParametersParameterAccessor;
2928
import org.springframework.lang.Nullable;
30-
import org.springframework.util.Assert;
3129

3230
/**
3331
* {@link org.springframework.data.repository.query.ParameterAccessor} based on an {@link Parameters} instance. In
34-
* addition to the {@link JpaParametersParameterAccessor} functions, the bindable value is provided by fetching the
35-
* method type when there is null.
32+
* addition to the {@link JpaParametersParameterAccessor} functions, the bindable parameterValue is provided by fetching
33+
* the method type when there is null.
3634
*
3735
* @author Wonchul Heo
3836
* @author Jens Schauder
@@ -68,13 +66,13 @@ class HibernateJpaParametersParameterAccessor extends JpaParametersParameterAcce
6866
@SuppressWarnings("unchecked")
6967
public Object getValue(Parameter parameter) {
7068

71-
var value = super.getValue(parameter.getIndex());
69+
Object value = super.getValue(parameter.getIndex());
7270

7371
if (value != null) {
7472
return value;
7573
}
7674

77-
var type = typeHelper.getRegisteredType(parameter.getType());
75+
BasicType<?> type = typeHelper.getRegisteredType(parameter.getType());
7876

7977
if (type == null) {
8078
return null;
@@ -84,19 +82,18 @@ public Object getValue(Parameter parameter) {
8482
}
8583

8684
/**
87-
* For Hibernate, check if the incoming value is wrapped inside a {@link TypedParameterValue} before extracting and
88-
* casting the {@link Date}.
85+
* For Hibernate, check if the incoming parameterValue can be wrapped inside a {@link TypedParameterValue} before
86+
* extracting.
8987
*
90-
* @param value a value that is either a {@link Date} or a {@link TypedParameterValue} containing a {@literal Date}.
88+
* @param parameterValue a parameterValue that is either a plain value or a {@link TypedParameterValue} containing a
89+
* {@literal Date}.
9190
* @since 3.0.4
9291
*/
9392
@Override
94-
public Date unwrapDate(Object value) {
93+
protected Object potentiallyUnwrap(Object parameterValue) {
9594

96-
Object extracted = (value instanceof TypedParameterValue<?> typedParameterValue) //
95+
return (parameterValue instanceof TypedParameterValue<?> typedParameterValue) //
9796
? typedParameterValue.getValue() //
98-
: value;
99-
100-
return (Date) extracted;
97+
: parameterValue;
10198
}
10299
}

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaParametersParameterAccessor.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package org.springframework.data.jpa.repository.query;
1717

18-
import java.util.Date;
19-
2018
import org.springframework.data.jpa.repository.query.JpaParameters.JpaParameter;
2119
import org.springframework.data.repository.query.Parameter;
2220
import org.springframework.data.repository.query.Parameters;
@@ -54,13 +52,13 @@ public Object[] getValues() {
5452
}
5553

5654
/**
57-
* For general JPA providers, simply pass through the extracted value, casting it as a {@link Date}.
55+
* Apply potential unwrapping to {@code parameterValue}.
5856
*
59-
* @param extractedValue
60-
* @since 3.1
57+
* @param parameterValue
58+
* @since 3.0.4
6159
*/
62-
public Date unwrapDate(Object extractedValue) {
63-
return (Date) extractedValue;
60+
protected Object potentiallyUnwrap(Object parameterValue) {
61+
return parameterValue;
6462
}
6563

6664
}

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/QueryParameterSetter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void setParameter(BindableQuery query, JpaParametersParameterAccessor acc
8383

8484
Object extractedValue = valueExtractor.apply(accessor);
8585

86-
final Date value = accessor.unwrapDate(extractedValue);
86+
Date value = (Date) accessor.potentiallyUnwrap(extractedValue);
8787

8888
// One would think we can simply use parameter to identify the parameter we want to set.
8989
// But that does not work with list valued parameters. At least Hibernate tries to bind them by name.

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/NamedOrIndexedQueryParameterSetterUnitTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ void before() {
6868
Date testDate = new Date();
6969

7070
when(accessor.getValues()).thenReturn(new Object[] { testDate });
71-
when(accessor.unwrapDate(testDate)).thenReturn(testDate);
71+
when(accessor.potentiallyUnwrap(testDate)).thenReturn(testDate);
7272

7373
this.methodArguments = accessor;
7474
}

0 commit comments

Comments
 (0)