com.mtech.easyexchange.resolver.CurrentUserResolver.java Source code

Java tutorial

Introduction

Here is the source code for com.mtech.easyexchange.resolver.CurrentUserResolver.java

Source

/*
 * This file is part of EasyExchange.
 *
 * (c) 2014 - Machiel Molenaar <machiel@machiel.me>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

package com.mtech.easyexchange.resolver;

import com.mtech.easyexchange.annotation.ActiveUser;
import com.mtech.easyexchange.dao.IUserDao;
import com.mtech.easyexchange.manager.user.IUserManager;
import com.mtech.easyexchange.model.User;
import com.mtech.easyexchange.user.WebUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.support.WebArgumentResolver;
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;

public class CurrentUserResolver implements HandlerMethodArgumentResolver {

    @Autowired
    protected IUserManager userManager;

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterAnnotation(ActiveUser.class) != null
                && parameter.getParameterType().equals(User.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
            NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {

        if (this.supportsParameter(parameter)) {

            WebUser userDetails = (WebUser) ((Authentication) webRequest.getUserPrincipal()).getPrincipal();
            return userManager.getUser(userDetails.getId());

        } else {
            return WebArgumentResolver.UNRESOLVED;
        }

    }
}