26
26
import org .springframework .core .MethodParameter ;
27
27
import org .springframework .core .log .LogMessage ;
28
28
import org .springframework .data .domain .Pageable ;
29
- import org .springframework .hateoas .Link ;
30
29
import org .springframework .hateoas .server .MethodLinkBuilderFactory ;
31
30
import org .springframework .hateoas .server .core .MethodParameters ;
32
31
import org .springframework .hateoas .server .mvc .WebMvcLinkBuilderFactory ;
35
34
import org .springframework .web .context .request .NativeWebRequest ;
36
35
import org .springframework .web .method .support .HandlerMethodArgumentResolver ;
37
36
import org .springframework .web .method .support .ModelAndViewContainer ;
38
- import org .springframework .web .util .UriComponents ;
39
- import org .springframework .web .util .UriComponentsBuilder ;
40
37
41
38
/**
42
39
* {@link HandlerMethodArgumentResolver} to allow injection of {@link PagedResourcesAssembler} into Spring MVC
@@ -55,20 +52,30 @@ public class PagedResourcesAssemblerArgumentResolver implements HandlerMethodArg
55
52
private static final String PARAMETER_AMBIGUITY = "Discovered multiple parameters of type Pageable but no qualifier annotations to disambiguate!" ;
56
53
57
54
private final HateoasPageableHandlerMethodArgumentResolver resolver ;
58
- private final MethodLinkBuilderFactory <?> linkBuilderFactory ;
59
55
60
56
/**
61
57
* Creates a new {@link PagedResourcesAssemblerArgumentResolver} using the given
62
58
* {@link PageableHandlerMethodArgumentResolver} and {@link MethodLinkBuilderFactory}.
63
59
*
64
60
* @param resolver can be {@literal null}.
65
61
* @param linkBuilderFactory can be {@literal null}, will be defaulted to a {@link WebMvcLinkBuilderFactory}.
62
+ * @deprecated since 2.5, 2.4.4, 2.3.7, to be removed in 3.0
63
+ * @use {@link #PagedResourcesAssemblerArgumentResolver(HateoasPageableHandlerMethodArgumentResolver)} instead.
66
64
*/
65
+ @ Deprecated
67
66
public PagedResourcesAssemblerArgumentResolver (HateoasPageableHandlerMethodArgumentResolver resolver ,
68
67
@ Nullable MethodLinkBuilderFactory <?> linkBuilderFactory ) {
68
+ this (resolver );
69
+ }
69
70
71
+ /**
72
+ * Creates a new {@link PagedResourcesAssemblerArgumentResolver} using the given
73
+ * {@link PageableHandlerMethodArgumentResolver}.
74
+ *
75
+ * @param resolver can be {@literal null}.
76
+ */
77
+ public PagedResourcesAssemblerArgumentResolver (HateoasPageableHandlerMethodArgumentResolver resolver ) {
70
78
this .resolver = resolver ;
71
- this .linkBuilderFactory = linkBuilderFactory == null ? new WebMvcLinkBuilderFactory () : linkBuilderFactory ;
72
79
}
73
80
74
81
/*
@@ -89,36 +96,12 @@ public boolean supportsParameter(MethodParameter parameter) {
89
96
public Object resolveArgument (MethodParameter parameter , @ Nullable ModelAndViewContainer mavContainer ,
90
97
NativeWebRequest webRequest , @ Nullable WebDataBinderFactory binderFactory ) {
91
98
92
- UriComponents fromUriString = resolveBaseUri (parameter );
93
99
MethodParameter pageableParameter = findMatchingPageableParameter (parameter );
94
100
95
101
if (pageableParameter != null ) {
96
- return new MethodParameterAwarePagedResourcesAssembler <>(pageableParameter , resolver , fromUriString );
102
+ return new MethodParameterAwarePagedResourcesAssembler <>(pageableParameter , resolver , null );
97
103
} else {
98
- return new PagedResourcesAssembler <>(resolver , fromUriString );
99
- }
100
- }
101
-
102
- /**
103
- * Eagerly resolve a base URI for the given {@link MethodParameter} to be handed to the assembler.
104
- *
105
- * @param parameter must not be {@literal null}.
106
- * @return the {@link UriComponents} representing the base URI, or {@literal null} if it can't be resolved eagerly.
107
- */
108
- @ Nullable
109
- private UriComponents resolveBaseUri (MethodParameter parameter ) {
110
-
111
- Method method = parameter .getMethod ();
112
-
113
- if (method == null ) {
114
- throw new IllegalArgumentException (String .format ("Could not obtain method from parameter %s!" , parameter ));
115
- }
116
-
117
- try {
118
- Link linkToMethod = linkBuilderFactory .linkTo (parameter .getDeclaringClass (), method ).withSelfRel ();
119
- return UriComponentsBuilder .fromUriString (linkToMethod .getHref ()).build ();
120
- } catch (IllegalArgumentException o_O ) {
121
- return null ;
104
+ return new PagedResourcesAssembler <>(resolver , null );
122
105
}
123
106
}
124
107
0 commit comments