aboutsummaryrefslogtreecommitdiff
path: root/juick-spring-www/src/main/java/com/juick/www/helpers/QueryStringResolver.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-spring-www/src/main/java/com/juick/www/helpers/QueryStringResolver.java')
-rw-r--r--juick-spring-www/src/main/java/com/juick/www/helpers/QueryStringResolver.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/juick-spring-www/src/main/java/com/juick/www/helpers/QueryStringResolver.java b/juick-spring-www/src/main/java/com/juick/www/helpers/QueryStringResolver.java
new file mode 100644
index 00000000..812c4497
--- /dev/null
+++ b/juick-spring-www/src/main/java/com/juick/www/helpers/QueryStringResolver.java
@@ -0,0 +1,31 @@
+package com.juick.www.helpers;
+
+import org.springframework.core.MethodParameter;
+import org.springframework.web.bind.support.WebDataBinderFactory;
+import org.springframework.web.context.request.NativeWebRequest;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.method.support.ModelAndViewContainer;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.annotation.Annotation;
+import java.util.Optional;
+
+public class QueryStringResolver implements HandlerMethodArgumentResolver {
+ @Override
+ public boolean supportsParameter(MethodParameter parameter) {
+ Annotation[] parameterAnnotations = parameter.getParameterAnnotations();
+ for (Annotation parameterAnnotation : parameterAnnotations) {
+ if (QueryString.class.isInstance(parameterAnnotation)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
+ HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
+ return Optional.ofNullable(request.getQueryString());
+ }
+} \ No newline at end of file