All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sc.utils.web.annotation.handler.RequestAttrHandlerMethodArgumentResolver Maven / Gradle / Ivy

The newest version!
package com.sc.utils.web.annotation.handler;

import com.sc.utils.web.annotation.RequestAttrParam;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;


public class RequestAttrHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
    private static Logger logger = LoggerFactory.getLogger(RequestAttrHandlerMethodArgumentResolver.class);


    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.hasParameterAnnotation(RequestAttrParam.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        RequestAttrParam requestJsonParam = parameter.getParameterAnnotation(RequestAttrParam.class);

        final HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class);

        String aliasName = getAlias(requestJsonParam, parameter);
        return servletRequest.getAttribute(aliasName);

    }


    
    private String getAlias(RequestAttrParam requestJsonParam, MethodParameter parameter) {
        String alias = requestJsonParam.value();
        if (StringUtils.isBlank(alias)) {
            alias = parameter.getParameterName();
        }
        return alias;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy