2525import org .springframework .beans .factory .annotation .Qualifier ;
2626import org .springframework .core .MethodParameter ;
2727import org .springframework .data .domain .Pageable ;
28- import org .springframework .hateoas .Link ;
2928import org .springframework .hateoas .server .MethodLinkBuilderFactory ;
3029import org .springframework .hateoas .server .core .MethodParameters ;
3130import org .springframework .hateoas .server .mvc .WebMvcLinkBuilderFactory ;
3433import org .springframework .web .context .request .NativeWebRequest ;
3534import org .springframework .web .method .support .HandlerMethodArgumentResolver ;
3635import org .springframework .web .method .support .ModelAndViewContainer ;
37- import org .springframework .web .util .UriComponents ;
38- import org .springframework .web .util .UriComponentsBuilder ;
3936
4037/**
4138 * {@link HandlerMethodArgumentResolver} to allow injection of {@link PagedResourcesAssembler} into Spring MVC
@@ -54,20 +51,30 @@ public class PagedResourcesAssemblerArgumentResolver implements HandlerMethodArg
5451 private static final String PARAMETER_AMBIGUITY = "Discovered multiple parameters of type Pageable but no qualifier annotations to disambiguate!" ;
5552
5653 private final HateoasPageableHandlerMethodArgumentResolver resolver ;
57- private final MethodLinkBuilderFactory <?> linkBuilderFactory ;
5854
5955 /**
6056 * Creates a new {@link PagedResourcesAssemblerArgumentResolver} using the given
6157 * {@link PageableHandlerMethodArgumentResolver} and {@link MethodLinkBuilderFactory}.
6258 *
6359 * @param resolver can be {@literal null}.
6460 * @param linkBuilderFactory can be {@literal null}, will be defaulted to a {@link WebMvcLinkBuilderFactory}.
61+ * @deprecated since 2.5, 2.4.4, 2.3.7, to be removed in 3.0
62+ * @use {@link #PagedResourcesAssemblerArgumentResolver(HateoasPageableHandlerMethodArgumentResolver)} instead.
6563 */
64+ @ Deprecated
6665 public PagedResourcesAssemblerArgumentResolver (HateoasPageableHandlerMethodArgumentResolver resolver ,
6766 @ Nullable MethodLinkBuilderFactory <?> linkBuilderFactory ) {
67+ this (resolver );
68+ }
6869
70+ /**
71+ * Creates a new {@link PagedResourcesAssemblerArgumentResolver} using the given
72+ * {@link PageableHandlerMethodArgumentResolver}.
73+ *
74+ * @param resolver can be {@literal null}.
75+ */
76+ public PagedResourcesAssemblerArgumentResolver (HateoasPageableHandlerMethodArgumentResolver resolver ) {
6977 this .resolver = resolver ;
70- this .linkBuilderFactory = linkBuilderFactory == null ? new WebMvcLinkBuilderFactory () : linkBuilderFactory ;
7178 }
7279
7380 /*
@@ -88,36 +95,12 @@ public boolean supportsParameter(MethodParameter parameter) {
8895 public Object resolveArgument (MethodParameter parameter , @ Nullable ModelAndViewContainer mavContainer ,
8996 NativeWebRequest webRequest , @ Nullable WebDataBinderFactory binderFactory ) {
9097
91- UriComponents fromUriString = resolveBaseUri (parameter );
9298 MethodParameter pageableParameter = findMatchingPageableParameter (parameter );
9399
94100 if (pageableParameter != null ) {
95- return new MethodParameterAwarePagedResourcesAssembler <>(pageableParameter , resolver , fromUriString );
101+ return new MethodParameterAwarePagedResourcesAssembler <>(pageableParameter , resolver , null );
96102 } else {
97- return new PagedResourcesAssembler <>(resolver , fromUriString );
98- }
99- }
100-
101- /**
102- * Eagerly resolve a base URI for the given {@link MethodParameter} to be handed to the assembler.
103- *
104- * @param parameter must not be {@literal null}.
105- * @return the {@link UriComponents} representing the base URI, or {@literal null} if it can't be resolved eagerly.
106- */
107- @ Nullable
108- private UriComponents resolveBaseUri (MethodParameter parameter ) {
109-
110- Method method = parameter .getMethod ();
111-
112- if (method == null ) {
113- throw new IllegalArgumentException (String .format ("Could not obtain method from parameter %s!" , parameter ));
114- }
115-
116- try {
117- Link linkToMethod = linkBuilderFactory .linkTo (parameter .getDeclaringClass (), method ).withSelfRel ();
118- return UriComponentsBuilder .fromUriString (linkToMethod .getHref ()).build ();
119- } catch (IllegalArgumentException o_O ) {
120- return null ;
103+ return new PagedResourcesAssembler <>(resolver , null );
121104 }
122105 }
123106
0 commit comments