Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 55d7ed8

Browse files
committed
Extracted annotations to a utility class
(699)
1 parent 8ff049e commit 55d7ed8

3 files changed

Lines changed: 88 additions & 39 deletions

File tree

springfox-data-rest/src/main/java/springfox/documentation/spring/data/rest/EntityRequestHandler.java

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@
3333
import org.springframework.hateoas.Resource;
3434
import org.springframework.hateoas.Resources;
3535
import org.springframework.http.MediaType;
36-
import org.springframework.web.bind.annotation.PathVariable;
37-
import org.springframework.web.bind.annotation.RequestBody;
3836
import org.springframework.web.bind.annotation.RequestMethod;
3937
import org.springframework.web.method.HandlerMethod;
4038
import org.springframework.web.servlet.mvc.condition.NameValueExpression;
@@ -52,36 +50,15 @@
5250

5351
import static com.google.common.collect.Lists.*;
5452
import static com.google.common.collect.Sets.*;
53+
import static springfox.documentation.spring.data.rest.SynthesizedAnnotations.*;
5554
import static springfox.documentation.spring.web.paths.Paths.*;
5655

5756
class EntityRequestHandler implements springfox.documentation.RequestHandler {
5857

59-
private static final RequestBody SYNTHESIZED_REQUEST_BODY_ANNOTATION = new RequestBody() {
60-
@Override
61-
public Class<? extends Annotation> annotationType() {
62-
return RequestBody.class;
63-
}
64-
65-
@Override
66-
public boolean required() {
67-
return true;
68-
}
69-
};
70-
71-
private static final PathVariable SYNTHESIZED_PATH_VARIABLE_ANNOTATION = new PathVariable() {
72-
@Override
73-
public Class<? extends Annotation> annotationType() {
74-
return PathVariable.class;
75-
}
76-
77-
@Override
78-
public String value() {
79-
return "id";
80-
}
81-
};
8258
private static final List<MediaType> COLLECTION_COMPACT_MEDIA_TYPES = newArrayList(
8359
MediaType.valueOf("application/x-spring-data-compact+json"),
8460
MediaType.valueOf("text/uri-list"));
61+
8562
private final ResourceMetadata resource;
8663
private final ResourceType resourceType;
8764
private final Class<? extends Serializable> idType;
@@ -192,14 +169,14 @@ public ResolvedMethodParameter apply(ResolvedMethodParameter input) {
192169
} else if (isDomainParameter(input)) {
193170
return transformToDomainType(input);
194171
}
195-
return input;
172+
return input.annotate(API_IGNORE_ANNOTATION);
196173
}
197174
};
198175
}
199176

200177
private ResolvedMethodParameter transformToDomainType(ResolvedMethodParameter input) {
201178
return input.replaceResolvedParameterType(resolver.resolve(domainType))
202-
.annotate(SYNTHESIZED_REQUEST_BODY_ANNOTATION);
179+
.annotate(REQUEST_BODY_ANNOTATION);
203180
}
204181

205182
private boolean isDomainParameter(ResolvedMethodParameter input) {
@@ -208,7 +185,7 @@ private boolean isDomainParameter(ResolvedMethodParameter input) {
208185

209186
private ResolvedMethodParameter transformToId(ResolvedMethodParameter idParam) {
210187
return idParam.replaceResolvedParameterType(resolver.resolve(idType))
211-
.annotate(SYNTHESIZED_PATH_VARIABLE_ANNOTATION);
188+
.annotate(PATH_VARIABLE_ANNOTATION);
212189
}
213190

214191
private boolean isIdParameter(ResolvedMethodParameter input) {

springfox-data-rest/src/main/java/springfox/documentation/spring/data/rest/EntitySearchRequestHandler.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.fasterxml.classmate.ResolvedTypeWithMembers;
2424
import com.fasterxml.classmate.TypeResolver;
2525
import com.fasterxml.classmate.members.ResolvedMethod;
26+
import com.google.common.base.Function;
2627
import com.google.common.base.Optional;
2728
import com.google.common.base.Predicate;
2829
import com.google.common.collect.FluentIterable;
@@ -45,15 +46,14 @@
4546
import springfox.documentation.service.ResolvedMethodParameter;
4647
import springfox.documentation.spring.web.readers.operation.HandlerMethodResolver;
4748

48-
import javax.annotation.Nullable;
4949
import java.lang.annotation.Annotation;
5050
import java.util.List;
5151
import 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.*;
5554
import 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

5858
class 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
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*
2+
*
3+
* Copyright 2016 the original author or authors.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*
18+
*/
19+
package springfox.documentation.spring.data.rest;
20+
21+
import org.springframework.web.bind.annotation.PathVariable;
22+
import org.springframework.web.bind.annotation.RequestBody;
23+
import springfox.documentation.annotations.ApiIgnore;
24+
25+
import java.lang.annotation.Annotation;
26+
27+
class SynthesizedAnnotations {
28+
private SynthesizedAnnotations() {
29+
throw new UnsupportedOperationException();
30+
}
31+
32+
static final RequestBody REQUEST_BODY_ANNOTATION = new RequestBody() {
33+
@Override
34+
public Class<? extends Annotation> annotationType() {
35+
return RequestBody.class;
36+
}
37+
38+
@Override
39+
public boolean required() {
40+
return true;
41+
}
42+
};
43+
44+
static final PathVariable PATH_VARIABLE_ANNOTATION = new PathVariable() {
45+
@Override
46+
public Class<? extends Annotation> annotationType() {
47+
return PathVariable.class;
48+
}
49+
50+
@Override
51+
public String value() {
52+
return "id";
53+
}
54+
};
55+
56+
static final ApiIgnore API_IGNORE_ANNOTATION = new ApiIgnore() {
57+
@Override
58+
public Class<? extends Annotation> annotationType() {
59+
return ApiIgnore.class;
60+
}
61+
};
62+
}

0 commit comments

Comments
 (0)