Skip to content

Commit c51936c

Browse files
schauderklajdipaja
authored andcommitted
Polishing.
Renamed to unwrapDate to align with the changes from spring-projects#2861. Minor JavaDoc adjustments See spring-projects#2857 Original pull request spring-projects#2859
1 parent ad03993 commit c51936c

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

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

+11-6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.data.repository.query.Parameters;
2828
import org.springframework.data.repository.query.ParametersParameterAccessor;
2929
import org.springframework.lang.Nullable;
30+
import org.springframework.util.Assert;
3031

3132
/**
3233
* {@link org.springframework.data.repository.query.ParameterAccessor} based on an {@link Parameters} instance. In
@@ -86,14 +87,18 @@ public Object getValue(Parameter parameter) {
8687
* For Hibernate, check if the incoming value is wrapped inside a {@link TypedParameterValue} before extracting and
8788
* casting the {@link Date}.
8889
*
89-
* @param extractedValue
90-
* @since 3.1
90+
* @param value a value that is either a {@link Date} or a {@link TypedParameterValue} containing a {@literal Date}.
91+
* @since 3.0.4
9192
*/
9293
@Override
93-
public Date extractDate(Object extractedValue) {
94+
public Date unwrapDate(Object value) {
9495

95-
return (extractedValue instanceof TypedParameterValue<?> typedParameterValue)
96-
? (Date) typedParameterValue.getValue()
97-
: (Date) extractedValue;
96+
Object extracted = (value instanceof TypedParameterValue<?> typedParameterValue) //
97+
? typedParameterValue.getValue() //
98+
: value;
99+
100+
Assert.isInstanceOf(Date.class, extracted, "Value must be either of type Date or a Date wrapped in a TypedParameterValue");
101+
102+
return (Date) extracted;
98103
}
99104
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public Object[] getValues() {
5959
* @param extractedValue
6060
* @since 3.1
6161
*/
62-
public Date extractDate(Object extractedValue) {
62+
public Date unwrapDate(Object extractedValue) {
6363
return (Date) extractedValue;
6464
}
6565

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.extractDate(extractedValue);
86+
final Date value = accessor.unwrapDate(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.extractDate(testDate)).thenReturn(testDate);
71+
when(accessor.unwrapDate(testDate)).thenReturn(testDate);
7272

7373
this.methodArguments = accessor;
7474
}

0 commit comments

Comments
 (0)