2323import com .fasterxml .classmate .ResolvedTypeWithMembers ;
2424import com .fasterxml .classmate .TypeResolver ;
2525import com .fasterxml .classmate .members .ResolvedMethod ;
26+ import com .google .common .base .Function ;
2627import com .google .common .base .Optional ;
2728import com .google .common .base .Predicate ;
2829import com .google .common .collect .FluentIterable ;
4546import springfox .documentation .service .ResolvedMethodParameter ;
4647import springfox .documentation .spring .web .readers .operation .HandlerMethodResolver ;
4748
48- import javax .annotation .Nullable ;
4949import java .lang .annotation .Annotation ;
5050import java .util .List ;
5151import java .util .Set ;
5252
53- import static com .google .common .collect .Iterables .any ;
54- import static com .google .common .collect .Lists .*;
53+ import static com .google .common .collect .Iterables .*;
5554import static com .google .common .collect .Sets .*;
56- import static springfox .documentation .spring .web .paths .Paths .splitCamelCase ;
55+ import static springfox .documentation .spring .data .rest .SynthesizedAnnotations .*;
56+ import static springfox .documentation .spring .web .paths .Paths .*;
5757
5858class EntitySearchRequestHandler implements RequestHandler {
5959 private final TypeResolver resolver ;
@@ -124,7 +124,7 @@ public Set<? extends MediaType> produces() {
124124 MediaType type = searchResource .getDescription ().getType ();
125125 producesCondition .combine (new ProducesRequestCondition (type .toString ()));
126126 }
127- return producesCondition .getProducibleMediaTypes ();
127+ return producesCondition .getProducibleMediaTypes ();
128128 }
129129
130130 @ Override
@@ -158,8 +158,8 @@ public RequestHandlerKey key() {
158158
159159 @ Override
160160 public List <ResolvedMethodParameter > getParameters () {
161+ HandlerMethodResolver handlerMethodResolver = new HandlerMethodResolver (resolver );
161162 if (resourceType () == ResourceType .ITEM ) {
162- HandlerMethodResolver handlerMethodResolver = new HandlerMethodResolver (resolver );
163163 List <ResolvedMethodParameter > actualQueryParams
164164 = handlerMethodResolver .methodParameters (
165165 new HandlerMethod (searchResource .getMethod ().getDeclaringClass (), searchResource .getMethod ()));
@@ -169,17 +169,27 @@ public List<ResolvedMethodParameter> getParameters() {
169169 .filter (maybeFilterSortParam (searchResource .isSortableResource ()))
170170 .filter (maybeFilterPagingParam (searchResource .isPagingResource ()))
171171 .toList ();
172-
173172 return FluentIterable .from (Iterables .concat (genericParams , actualQueryParams )).toList ();
174173 } else {
175- return newArrayList ();
174+ return FluentIterable .from (handlerMethodResolver .methodParameters (handlerMethod ))
175+ .transform (toIgnorable ())
176+ .toList ();
176177 }
177178 }
178179
180+ private Function <ResolvedMethodParameter , ResolvedMethodParameter > toIgnorable () {
181+ return new Function <ResolvedMethodParameter , ResolvedMethodParameter >() {
182+ @ Override
183+ public ResolvedMethodParameter apply (ResolvedMethodParameter input ) {
184+ return input .annotate (API_IGNORE_ANNOTATION );
185+ }
186+ };
187+ }
188+
179189 private Predicate <ResolvedMethodParameter > maybeFilterSortParam (final boolean sortableResource ) {
180190 return new Predicate <ResolvedMethodParameter >() {
181191 @ Override
182- public boolean apply (@ Nullable ResolvedMethodParameter input ) {
192+ public boolean apply (ResolvedMethodParameter input ) {
183193 boolean isSortParam = Sort .class .equals (input .getParameterType ().getErasedType ());
184194 return (sortableResource && isSortParam ) || !isSortParam ;
185195 }
@@ -189,7 +199,7 @@ public boolean apply(@Nullable ResolvedMethodParameter input) {
189199 private Predicate <ResolvedMethodParameter > maybeFilterPagingParam (final boolean pageableResource ) {
190200 return new Predicate <ResolvedMethodParameter >() {
191201 @ Override
192- public boolean apply (@ Nullable ResolvedMethodParameter input ) {
202+ public boolean apply (ResolvedMethodParameter input ) {
193203 boolean isPageableParam = Pageable .class .equals (input .getParameterType ().getErasedType ());
194204 return (pageableResource && isPageableParam ) || !isPageableParam ;
195205 }
@@ -202,7 +212,7 @@ public ResolvedType getReturnType() {
202212 MemberResolver memberResolver = new MemberResolver (resolver );
203213 ResolvedTypeWithMembers members = memberResolver .resolve (
204214 resolver .resolve (searchResource .getMethod ().getDeclaringClass ()), null , null );
205- for (ResolvedMethod resolvedMethod : members .getMemberMethods ()) {
215+ for (ResolvedMethod resolvedMethod : members .getMemberMethods ()) {
206216 if (resolvedMethod .getRawMember ().equals (searchResource .getMethod ())) {
207217 return resolvedMethod .getReturnType ();
208218 }
0 commit comments