Browse Source

Adopt `RelationalParameters` and `RelationalParameter` to reflect the actual parameter type when using generics.

Closes #1691
pull/1713/head
Mark Paluch 2 years ago
parent
commit
cc43be8d02
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 8
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java
  2. 10
      spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethod.java
  3. 20
      spring-data-relational/src/main/java/org/springframework/data/relational/repository/query/RelationalParameters.java

8
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java

@ -32,6 +32,8 @@ import org.springframework.data.relational.repository.query.RelationalParameters
import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata; import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata;
import org.springframework.data.repository.core.NamedQueries; import org.springframework.data.repository.core.NamedQueries;
import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.query.Parameters;
import org.springframework.data.repository.query.ParametersSource;
import org.springframework.data.repository.query.QueryMethod; import org.springframework.data.repository.query.QueryMethod;
import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.RowMapper;
@ -71,8 +73,8 @@ public class JdbcQueryMethod extends QueryMethod {
} }
@Override @Override
protected RelationalParameters createParameters(Method method) { protected Parameters<?, ?> createParameters(ParametersSource parametersSource) {
return new RelationalParameters(method); return new RelationalParameters(parametersSource);
} }
@Override @Override
@ -246,7 +248,7 @@ public class JdbcQueryMethod extends QueryMethod {
/** /**
* Looks up the {@link Lock} annotation from the query method. * Looks up the {@link Lock} annotation from the query method.
* *
* @return the {@link Optional} wrapped {@link Lock} annotation. * @return the {@link Optional} wrapped {@link Lock} annotation.
*/ */
Optional<Lock> lookupLockAnnotation() { Optional<Lock> lookupLockAnnotation() {

10
spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethod.java

@ -38,10 +38,11 @@ import org.springframework.data.relational.repository.query.RelationalParameters
import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata; import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata;
import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.query.Parameter; import org.springframework.data.repository.query.Parameter;
import org.springframework.data.repository.query.ParametersSource;
import org.springframework.data.repository.query.QueryMethod; import org.springframework.data.repository.query.QueryMethod;
import org.springframework.data.repository.util.ReactiveWrapperConverters; import org.springframework.data.repository.util.ReactiveWrapperConverters;
import org.springframework.data.util.ReactiveWrappers;
import org.springframework.data.util.Lazy; import org.springframework.data.util.Lazy;
import org.springframework.data.util.ReactiveWrappers;
import org.springframework.data.util.ReflectionUtils; import org.springframework.data.util.ReflectionUtils;
import org.springframework.data.util.TypeInformation; import org.springframework.data.util.TypeInformation;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
@ -122,12 +123,9 @@ public class R2dbcQueryMethod extends QueryMethod {
this.lock = Optional.ofNullable(AnnotatedElementUtils.findMergedAnnotation(method, Lock.class)); this.lock = Optional.ofNullable(AnnotatedElementUtils.findMergedAnnotation(method, Lock.class));
} }
/* (non-Javadoc)
* @see org.springframework.data.repository.query.QueryMethod#createParameters(java.lang.reflect.Method)
*/
@Override @Override
protected RelationalParameters createParameters(Method method) { protected RelationalParameters createParameters(ParametersSource parametersSource) {
return new RelationalParameters(method); return new RelationalParameters(parametersSource);
} }
/* (non-Javadoc) /* (non-Javadoc)

20
spring-data-relational/src/main/java/org/springframework/data/relational/repository/query/RelationalParameters.java

@ -15,7 +15,6 @@
*/ */
package org.springframework.data.relational.repository.query; package org.springframework.data.relational.repository.query;
import java.lang.reflect.Method;
import java.util.List; import java.util.List;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;
@ -23,6 +22,7 @@ import org.springframework.core.ResolvableType;
import org.springframework.data.relational.repository.query.RelationalParameters.RelationalParameter; import org.springframework.data.relational.repository.query.RelationalParameters.RelationalParameter;
import org.springframework.data.repository.query.Parameter; import org.springframework.data.repository.query.Parameter;
import org.springframework.data.repository.query.Parameters; import org.springframework.data.repository.query.Parameters;
import org.springframework.data.repository.query.ParametersSource;
import org.springframework.data.util.TypeInformation; import org.springframework.data.util.TypeInformation;
/** /**
@ -33,23 +33,19 @@ import org.springframework.data.util.TypeInformation;
public class RelationalParameters extends Parameters<RelationalParameters, RelationalParameter> { public class RelationalParameters extends Parameters<RelationalParameters, RelationalParameter> {
/** /**
* Creates a new {@link RelationalParameters} instance from the given {@link Method}. * Creates a new {@link RelationalParameters} instance from the given {@link ParametersSource}.
* *
* @param method must not be {@literal null}. * @param parametersSource must not be {@literal null}.
*/ */
public RelationalParameters(Method method) { public RelationalParameters(ParametersSource parametersSource) {
super(method); super(parametersSource,
methodParameter -> new RelationalParameter(methodParameter, parametersSource.getDomainTypeInformation()));
} }
private RelationalParameters(List<RelationalParameter> parameters) { private RelationalParameters(List<RelationalParameter> parameters) {
super(parameters); super(parameters);
} }
@Override
protected RelationalParameter createParameter(MethodParameter parameter) {
return new RelationalParameter(parameter);
}
@Override @Override
protected RelationalParameters createFrom(List<RelationalParameter> parameters) { protected RelationalParameters createFrom(List<RelationalParameter> parameters) {
return new RelationalParameters(parameters); return new RelationalParameters(parameters);
@ -70,8 +66,8 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat
* *
* @param parameter must not be {@literal null}. * @param parameter must not be {@literal null}.
*/ */
RelationalParameter(MethodParameter parameter) { RelationalParameter(MethodParameter parameter, TypeInformation<?> domainType) {
super(parameter); super(parameter, domainType);
this.parameter = parameter; this.parameter = parameter;
} }

Loading…
Cancel
Save