From 2faeeeb67241b8712e28c1f67174b3c3bd871ac0 Mon Sep 17 00:00:00 2001 From: win777 Date: Fri, 27 Nov 2015 02:02:37 +0000 Subject: [PATCH] =?UTF-8?q?Map=20=EC=B2=98=EB=A6=AC=EB=A1=9C=20=EC=9D=B8?= =?UTF-8?q?=ED=95=B4=20Resolver=20=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NexacroRequestMappingHandlerAdapter.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/com/nexacro/spring/resolve/NexacroRequestMappingHandlerAdapter.java diff --git a/src/main/java/com/nexacro/spring/resolve/NexacroRequestMappingHandlerAdapter.java b/src/main/java/com/nexacro/spring/resolve/NexacroRequestMappingHandlerAdapter.java new file mode 100644 index 0000000..8e810fa --- /dev/null +++ b/src/main/java/com/nexacro/spring/resolve/NexacroRequestMappingHandlerAdapter.java @@ -0,0 +1,41 @@ +package com.nexacro.spring.resolve; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; + +public class NexacroRequestMappingHandlerAdapter extends RequestMappingHandlerAdapter { + @Override + public void afterPropertiesSet() { + super.afterPropertiesSet(); + + List argumentResolvers = getArgumentResolvers(); + + if (argumentResolvers != null) { + List tempArgumentResolvers = new ArrayList(argumentResolvers); + + int nexacroMethodArgumentResolverIndex = getNexacroMethodArgumentResolverIndex(tempArgumentResolvers); + HandlerMethodArgumentResolver nexacroMethodArgumentResolver = tempArgumentResolvers.remove(nexacroMethodArgumentResolverIndex); + if (nexacroMethodArgumentResolver != null) { + tempArgumentResolvers.add(0, nexacroMethodArgumentResolver); + setArgumentResolvers(tempArgumentResolvers); + } + } + } + + /** + * getNexacroResolverIndex + * @param argumentResolverList + * @return + */ + private int getNexacroMethodArgumentResolverIndex(List argumentResolverList) { + for (int i = 0, size = argumentResolverList.size(); i < size; i++) { + if (argumentResolverList.get(i) instanceof NexacroMethodArgumentResolver) { + return i; + } + } + return -1; + } +}