diff --git a/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java b/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java index 6395423de..8b888c6eb 100644 --- a/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java +++ b/src/main/java/org/springframework/data/web/PageableHandlerMethodArgumentResolverSupport.java @@ -22,6 +22,8 @@ import java.util.Optional; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.MethodParameter; +import org.springframework.core.annotation.MergedAnnotation; +import org.springframework.core.annotation.MergedAnnotations; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -39,6 +41,7 @@ import org.springframework.util.StringUtils; * @see PageableHandlerMethodArgumentResolver * @see ReactivePageableHandlerMethodArgumentResolver * @author Mark Paluch + * @author Vedran Pavic */ public abstract class PageableHandlerMethodArgumentResolverSupport { @@ -228,10 +231,10 @@ public abstract class PageableHandlerMethodArgumentResolverSupport { StringBuilder builder = new StringBuilder(prefix); - Qualifier qualifier = parameter == null ? null : parameter.getParameterAnnotation(Qualifier.class); + String value = getQualifier(parameter); - if (qualifier != null && StringUtils.hasLength(qualifier.value())) { - builder.append(qualifier.value()); + if (StringUtils.hasLength(value)) { + builder.append(value); builder.append(qualifierDelimiter); } @@ -288,4 +291,17 @@ public abstract class PageableHandlerMethodArgumentResolverSupport { return Optional.of(0); } } + + @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; + } }