Skip to content

Commit

Permalink
Adopt RelationalParameters and RelationalParameter to reflect the…
Browse files Browse the repository at this point in the history
… actual parameter type when using generics.

Closes #1691
  • Loading branch information
mp911de committed Dec 8, 2023
1 parent eb63036 commit cc43be8
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata;
import org.springframework.data.repository.core.NamedQueries;
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.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
Expand Down Expand Up @@ -71,8 +73,8 @@ public JdbcQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFac
}

@Override
protected RelationalParameters createParameters(Method method) {
return new RelationalParameters(method);
protected Parameters<?, ?> createParameters(ParametersSource parametersSource) {
return new RelationalParameters(parametersSource);
}

@Override
Expand Down Expand Up @@ -246,7 +248,7 @@ public boolean hasLockMode() {

/**
* Looks up the {@link Lock} annotation from the query method.
*
*
* @return the {@link Optional} wrapped {@link Lock} annotation.
*/
Optional<Lock> lookupLockAnnotation() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,11 @@
import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata;
import org.springframework.data.repository.core.RepositoryMetadata;
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.util.ReactiveWrapperConverters;
import org.springframework.data.util.ReactiveWrappers;
import org.springframework.data.util.Lazy;
import org.springframework.data.util.ReactiveWrappers;
import org.springframework.data.util.ReflectionUtils;
import org.springframework.data.util.TypeInformation;
import org.springframework.lang.Nullable;
Expand Down Expand Up @@ -122,12 +123,9 @@ public R2dbcQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFa
this.lock = Optional.ofNullable(AnnotatedElementUtils.findMergedAnnotation(method, Lock.class));
}

/* (non-Javadoc)
* @see org.springframework.data.repository.query.QueryMethod#createParameters(java.lang.reflect.Method)
*/
@Override
protected RelationalParameters createParameters(Method method) {
return new RelationalParameters(method);
protected RelationalParameters createParameters(ParametersSource parametersSource) {
return new RelationalParameters(parametersSource);
}

/* (non-Javadoc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package org.springframework.data.relational.repository.query;

import java.lang.reflect.Method;
import java.util.List;

import org.springframework.core.MethodParameter;
import org.springframework.core.ResolvableType;
import org.springframework.data.relational.repository.query.RelationalParameters.RelationalParameter;
import org.springframework.data.repository.query.Parameter;
import org.springframework.data.repository.query.Parameters;
import org.springframework.data.repository.query.ParametersSource;
import org.springframework.data.util.TypeInformation;

/**
Expand All @@ -33,23 +33,19 @@
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) {
super(method);
public RelationalParameters(ParametersSource parametersSource) {
super(parametersSource,
methodParameter -> new RelationalParameter(methodParameter, parametersSource.getDomainTypeInformation()));
}

private RelationalParameters(List<RelationalParameter> parameters) {
super(parameters);
}

@Override
protected RelationalParameter createParameter(MethodParameter parameter) {
return new RelationalParameter(parameter);
}

@Override
protected RelationalParameters createFrom(List<RelationalParameter> parameters) {
return new RelationalParameters(parameters);
Expand All @@ -70,8 +66,8 @@ public static class RelationalParameter extends Parameter {
*
* @param parameter must not be {@literal null}.
*/
RelationalParameter(MethodParameter parameter) {
super(parameter);
RelationalParameter(MethodParameter parameter, TypeInformation<?> domainType) {
super(parameter, domainType);
this.parameter = parameter;
}

Expand Down

0 comments on commit cc43be8

Please sign in to comment.