diff --git a/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java b/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java index 8b888c6eb..520485f85 100644 --- a/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java +++ b/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java @@ -231,7 +231,7 @@ public abstract class PageableHandlerMethodArgumentResolverSupport { StringBuilder builder = new StringBuilder(prefix); - String value = getQualifier(parameter); + String value = SpringDataAnnotationUtils.getQualifier(parameter); if (StringUtils.hasLength(value)) { builder.append(value); @@ -292,16 +292,5 @@ public abstract class PageableHandlerMethodArgumentResolverSupport { } } - @Nullable - private static String getQualifier(@Nullable MethodParameter parameter) { - if (parameter == null) { - return null; - } - - MergedAnnotations annotations = MergedAnnotations.from(parameter.getParameter()); - MergedAnnotation qualifier = annotations.get(Qualifier.class); - - return qualifier.isPresent() ? qualifier.getString("value") : null; - } } diff --git a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java index 7978d689a..a7f75e77f 100644 --- a/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java +++ b/src/main/java/org/springframework/data/web/SortHandlerMethodArgumentResolverSupport.java @@ -186,7 +186,7 @@ public abstract class SortHandlerMethodArgumentResolverSupport { StringBuilder builder = new StringBuilder(); - String value = getQualifier(parameter); + String value = SpringDataAnnotationUtils.getQualifier(parameter); if (StringUtils.hasLength(value)) { builder.append(value); @@ -295,19 +295,6 @@ public abstract class SortHandlerMethodArgumentResolverSupport { return StringUtils.hasText(source.replace(".", "")); } - @Nullable - private static String getQualifier(@Nullable MethodParameter parameter) { - - if (parameter == null) { - return null; - } - - MergedAnnotations annotations = MergedAnnotations.from(parameter.getParameter()); - MergedAnnotation qualifier = annotations.get(Qualifier.class); - - return qualifier.isPresent() ? qualifier.getString("value") : null; - } - /** * Helper to easily build request parameter expressions for {@link Sort} instances. * diff --git a/src/main/java/org/springframework/data/web/SpringDataAnnotationUtils.java b/src/main/java/org/springframework/data/web/SpringDataAnnotationUtils.java index da14df72d..67eeb4dc5 100644 --- a/src/main/java/org/springframework/data/web/SpringDataAnnotationUtils.java +++ b/src/main/java/org/springframework/data/web/SpringDataAnnotationUtils.java @@ -23,15 +23,18 @@ import java.util.Set; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.MethodParameter; import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.core.annotation.MergedAnnotation; +import org.springframework.core.annotation.MergedAnnotations; import org.springframework.data.domain.Pageable; import org.springframework.lang.Nullable; import org.springframework.util.ObjectUtils; /** - * Helper class to ease sharing code between legacy {@link PageableArgumentResolver} and - * {@link PageableHandlerMethodArgumentResolver}. + * Helper class to ease sharing code between legacy {@link PageableHandlerMethodArgumentResolverSupport} and + * {@link SortHandlerMethodArgumentResolverSupport}. * * @author Oliver Gierke + * @author Mark Paluch */ abstract class SpringDataAnnotationUtils { @@ -105,6 +108,26 @@ abstract class SpringDataAnnotationUtils { return (T) result; } + /** + * Determine a qualifier value for a {@link MethodParameter}. + * + * @param parameter must not be {@literal null}. + * @return the qualifier value if {@code @Qualifier} is present. + * @since 2.5 + */ + @Nullable + public static String getQualifier(@Nullable MethodParameter parameter) { + + if (parameter == null) { + return null; + } + + MergedAnnotations annotations = MergedAnnotations.from(parameter.getParameter()); + MergedAnnotation qualifier = annotations.get(Qualifier.class); + + return qualifier.isPresent() ? qualifier.getString("value") : null; + } + /** * Asserts that every {@link Pageable} parameter of the given parameters carries an {@link Qualifier} annotation to * distinguish them from each other. @@ -154,4 +177,5 @@ abstract class SpringDataAnnotationUtils { return null; } + }