From 01a7e34ba26e9406312ffb52f8a3ef8be7741e86 Mon Sep 17 00:00:00 2001 From: mxd <838425805@qq.com> Date: Fri, 19 Nov 2021 22:17:20 +0800 Subject: [PATCH] fix --- .../org/ssssssss/magicapi/utils/Mapping.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java b/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java index e496fd25..287d2750 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java @@ -4,6 +4,7 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.AbstractHandlerMethodMapping; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; +import org.ssssssss.script.reflection.JavaReflection; import java.lang.reflect.Method; import java.util.Map; @@ -17,7 +18,9 @@ public class Mapping { private final AbstractHandlerMethodMapping methodMapping; - private RequestMappingInfo.BuilderConfiguration config; + private final RequestMappingInfo.BuilderConfiguration config; + + private static final boolean HAS_GET_PATTERN_PARSER = JavaReflection.getMethod(RequestMappingHandlerMapping.class, "getPatternParser") != null; private Mapping(AbstractHandlerMethodMapping methodMapping, RequestMappingInfo.BuilderConfiguration config) { this.methodMapping = methodMapping; @@ -25,19 +28,26 @@ public class Mapping { } public static Mapping create(RequestMappingHandlerMapping mapping) { - RequestMappingInfo.BuilderConfiguration config = new RequestMappingInfo.BuilderConfiguration(); - config.setTrailingSlashMatch(mapping.useTrailingSlashMatch()); - config.setContentNegotiationManager(mapping.getContentNegotiationManager()); - if (mapping.getPatternParser() != null) { - config.setPatternParser(mapping.getPatternParser()); - } else { - config.setPathMatcher(mapping.getPathMatcher()); + if(HAS_GET_PATTERN_PARSER){ + RequestMappingInfo.BuilderConfiguration config = new RequestMappingInfo.BuilderConfiguration(); + config.setTrailingSlashMatch(mapping.useTrailingSlashMatch()); + config.setContentNegotiationManager(mapping.getContentNegotiationManager()); + if (mapping.getPatternParser() != null) { + config.setPatternParser(mapping.getPatternParser()); + } else { + config.setPathMatcher(mapping.getPathMatcher()); + } + return new Mapping(mapping, config); } - return new Mapping(mapping, config); + return new Mapping(mapping, null); } public RequestMappingInfo.Builder paths(String ... paths){ - return RequestMappingInfo.paths(paths).options(this.config); + RequestMappingInfo.Builder builder = RequestMappingInfo.paths(paths); + if(this.config != null){ + return builder.options(this.config); + } + return builder; } public Mapping register(RequestMappingInfo requestMappingInfo, Object handler, Method method) {