25
25
import org .springframework .beans .factory .annotation .Qualifier ;
26
26
import org .springframework .core .MethodParameter ;
27
27
import org .springframework .data .domain .Pageable ;
28
- import org .springframework .hateoas .Link ;
29
28
import org .springframework .hateoas .server .MethodLinkBuilderFactory ;
30
29
import org .springframework .hateoas .server .core .MethodParameters ;
31
30
import org .springframework .hateoas .server .mvc .WebMvcLinkBuilderFactory ;
34
33
import org .springframework .web .context .request .NativeWebRequest ;
35
34
import org .springframework .web .method .support .HandlerMethodArgumentResolver ;
36
35
import org .springframework .web .method .support .ModelAndViewContainer ;
37
- import org .springframework .web .util .UriComponents ;
38
- import org .springframework .web .util .UriComponentsBuilder ;
39
36
40
37
/**
41
38
* {@link HandlerMethodArgumentResolver} to allow injection of {@link PagedResourcesAssembler} into Spring MVC
@@ -54,20 +51,30 @@ public class PagedResourcesAssemblerArgumentResolver implements HandlerMethodArg
54
51
private static final String PARAMETER_AMBIGUITY = "Discovered multiple parameters of type Pageable but no qualifier annotations to disambiguate!" ;
55
52
56
53
private final HateoasPageableHandlerMethodArgumentResolver resolver ;
57
- private final MethodLinkBuilderFactory <?> linkBuilderFactory ;
58
54
59
55
/**
60
56
* Creates a new {@link PagedResourcesAssemblerArgumentResolver} using the given
61
57
* {@link PageableHandlerMethodArgumentResolver} and {@link MethodLinkBuilderFactory}.
62
58
*
63
59
* @param resolver can be {@literal null}.
64
60
* @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.
65
63
*/
64
+ @ Deprecated
66
65
public PagedResourcesAssemblerArgumentResolver (HateoasPageableHandlerMethodArgumentResolver resolver ,
67
66
@ Nullable MethodLinkBuilderFactory <?> linkBuilderFactory ) {
67
+ this (resolver );
68
+ }
68
69
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 ) {
69
77
this .resolver = resolver ;
70
- this .linkBuilderFactory = linkBuilderFactory == null ? new WebMvcLinkBuilderFactory () : linkBuilderFactory ;
71
78
}
72
79
73
80
/*
@@ -88,36 +95,12 @@ public boolean supportsParameter(MethodParameter parameter) {
88
95
public Object resolveArgument (MethodParameter parameter , @ Nullable ModelAndViewContainer mavContainer ,
89
96
NativeWebRequest webRequest , @ Nullable WebDataBinderFactory binderFactory ) {
90
97
91
- UriComponents fromUriString = resolveBaseUri (parameter );
92
98
MethodParameter pageableParameter = findMatchingPageableParameter (parameter );
93
99
94
100
if (pageableParameter != null ) {
95
- return new MethodParameterAwarePagedResourcesAssembler <>(pageableParameter , resolver , fromUriString );
101
+ return new MethodParameterAwarePagedResourcesAssembler <>(pageableParameter , resolver , null );
96
102
} 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 );
121
104
}
122
105
}
123
106
0 commit comments