Skip to content

Commit 07127a8

Browse files
committed
Refactored the selector predicate
(10)
1 parent 004d435 commit 07127a8

File tree

3 files changed

+27
-18
lines changed

3 files changed

+27
-18
lines changed

springfox-grails/src/main/java/springfox/documentation/grails/GrailsActionAttributes.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import org.springframework.beans.factory.annotation.Autowired;
77
import org.springframework.stereotype.Component;
88
import org.springframework.web.bind.annotation.RequestMethod;
9-
import org.springframework.web.servlet.mvc.condition.RequestCondition;
109

1110
import java.util.Arrays;
1211
import java.util.Collection;
@@ -18,12 +17,12 @@
1817
import java.util.Optional;
1918
import java.util.Set;
2019
import java.util.function.Predicate;
21-
import java.util.stream.Collectors;
2220
import java.util.stream.Stream;
2321

2422
import static com.google.common.collect.Lists.*;
2523
import static springfox.documentation.builders.BuilderDefaults.*;
2624
import static springfox.documentation.grails.Actions.*;
25+
import static springfox.documentation.grails.UrlMappings.*;
2726

2827
@Component
2928
class GrailsActionAttributes {
@@ -63,7 +62,10 @@ public Collection<RequestMethod> httpMethods(GrailsActionContext context) {
6362
Set<RequestMethod> requestMethods = methodOverrides(context);
6463
if (requestMethods.isEmpty()) {
6564
Stream<UrlMapping> sorted = Arrays.stream(urlMappings.getUrlMappings())
66-
.filter(UrlMappings.selector(context, null))
65+
.filter(selector(
66+
context.getController().getLogicalPropertyName(),
67+
context.getAction(),
68+
null))
6769
.sorted(Comparator.comparing(this::score));
6870
return sorted.findFirst()
6971
.map(m -> httpMethods(defaultIfAbsent(m.getHttpMethod(), "*")))

springfox-grails/src/main/java/springfox/documentation/grails/GrailsActionContext.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,17 @@ public GrailsActionContext(
4545
this.resolver = resolver;
4646
this.isRestfulController = isRestfulController(controller, action);
4747
this.requestMethods = urlProvider.httpMethods(this);
48-
String method = requestMethods
48+
String httpMethod = requestMethods
4949
.stream()
5050
.findFirst()
5151
.map(Enum::toString)
5252
.orElse(null);
5353
this.missingMapping = requestMethods.isEmpty();
54-
this.urlMapping = urlProvider.urlMapping(selector(this, method));
54+
this.urlMapping = urlProvider.urlMapping(
55+
selector(
56+
controller.getLogicalPropertyName(),
57+
action,
58+
httpMethod));
5559
this.mediaTypes = mediaTypeOverrides(this);
5660
maybeAddDefaultMediaType(mediaTypes);
5761
}

springfox-grails/src/main/java/springfox/documentation/grails/UrlMappings.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@ private UrlMappings() {
2626
throw new UnsupportedOperationException();
2727
}
2828

29-
public static Predicate<UrlMapping> selector(GrailsActionContext context, String methodName) {
30-
return u -> httpMethodMatches(methodName, u)
31-
&& controllerMatches(context, u)
32-
&& actionMatches(context, u);
29+
public static Predicate<UrlMapping> selector(
30+
String logicalControllerName,
31+
String action,
32+
String httpMethod) {
33+
return u -> httpMethodMatches(httpMethod, u)
34+
&& controllerMatches(u, logicalControllerName)
35+
&& actionMatches(action, u);
3336
}
3437

3538
public static Map<String, String> pathParameters(UrlMapping mapping) {
@@ -81,28 +84,28 @@ private static ResolvedType resolvedPropertyType(
8184
return resolver.resolve(String.class);
8285
}
8386

84-
private static boolean httpMethodMatches(String methodName, UrlMapping urlMapping) {
85-
return anyMethod(methodName) || Objects.equals(urlMapping.getHttpMethod(), methodName);
87+
private static boolean httpMethodMatches(String httpMethod, UrlMapping urlMapping) {
88+
return anyMethod(httpMethod) || Objects.equals(urlMapping.getHttpMethod(), httpMethod);
8689
}
8790

8891
private static boolean anyMethod(String methodName) {
8992
return Strings.isNullOrEmpty(methodName);
9093
}
9194

92-
private static boolean actionMatches(GrailsActionContext context, UrlMapping urlMapping) {
95+
private static boolean actionMatches(String context, UrlMapping urlMapping) {
9396
return isWildcardAction(urlMapping) || explicitAction(context, urlMapping);
9497
}
9598

96-
private static boolean explicitAction(GrailsActionContext context, UrlMapping urlMapping) {
97-
return Objects.equals(urlMapping.getActionName(), context.getAction());
99+
private static boolean explicitAction(String action, UrlMapping urlMapping) {
100+
return Objects.equals(urlMapping.getActionName(), action);
98101
}
99102

100-
private static boolean controllerMatches(GrailsActionContext context, UrlMapping urlMapping) {
101-
return isWildcardController(urlMapping) || explicitController(urlMapping, context);
103+
private static boolean controllerMatches(UrlMapping urlMapping, String logicalControllerName) {
104+
return isWildcardController(urlMapping) || explicitController(urlMapping, logicalControllerName);
102105
}
103106

104-
private static boolean explicitController(UrlMapping urlMapping, GrailsActionContext context) {
105-
return Objects.equals(urlMapping.getControllerName(), context.getController().getLogicalPropertyName());
107+
private static boolean explicitController(UrlMapping urlMapping, String logicalControllerName) {
108+
return Objects.equals(urlMapping.getControllerName(), logicalControllerName);
106109
}
107110

108111
private static boolean isWildcardController(UrlMapping urlMapping) {

0 commit comments

Comments
 (0)