// Path: jcart-admin/src/main/java/com/sivalabs/jcart/admin/security/AuthenticatedUser.java
// public class AuthenticatedUser extends org.springframework.security.core.userdetails.User
// {
// 
// 	private static final long serialVersionUID = 1L;
// 	private User user;
// 	
// 	public AuthenticatedUser(User user)
// 	{
// 		super(user.getEmail(), user.getPassword(), getAuthorities(user));
// 		this.user = user;
// 	}
// 	
// 	public User getUser()
// 	{
// 		return user;
// 	}
// 	
// 	private static Collection<? extends GrantedAuthority> getAuthorities(User user)
// 	{
// 		Set<String> roleAndPermissions = new HashSet<>();
// 		List<Role> roles = user.getRoles();
// 		
// 		for (Role role : roles)
// 		{
// 			roleAndPermissions.add(role.getName());
// 			List<Permission> permissions = role.getPermissions();
// 			for (Permission permission : permissions)
// 			{
// 				roleAndPermissions.add("ROLE_"+permission.getName());
// 			}
// 		}
// 		String[] roleNames = new String[roleAndPermissions.size()];
// 		Collection<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(roleAndPermissions.toArray(roleNames));
// 		return authorities;
// 	}
// }
// 
// Path: jcart-core/src/main/java/com/sivalabs/jcart/common/services/JCLogger.java
// public class JCLogger
// {
// 	private Logger logger;
// 	
// 	public JCLogger(Class<?> clazz)
// 	{
// 		this.logger = LoggerFactory.getLogger(clazz);
// 	}
// 	
// 	public static final JCLogger getLogger(Class<?> clazz)
// 	{
// 		return new JCLogger(clazz);
// 	}
// 	
// 	public void info(String msg)
// 	{
// 		this.logger.info(msg);
// 	}
// 	public void info(String format, Object...args)
// 	{
// 		this.logger.info(format, args);
// 	}
// 	
// 	public void debug(String msg)
// 	{
// 		this.logger.debug(msg);
// 	}
// 	
// 	public void debug(String format, Object...args)
// 	{
// 		this.logger.info(format, args);
// 	}
// 	
// 	public void warn(String msg)
// 	{
// 		this.logger.info(msg);
// 	}
// 	
// 	public void warn(String format, Object...args)
// 	{
// 		this.logger.info(format, args);
// 	}
// 	
// 	public void error(String msg)
// 	{
// 		this.logger.error(msg);
// 	}
// 	
// 	public void error(String format, Object...args)
// 	{
// 		this.logger.error(format, args);
// 	}
// 	
// 	public void error(Throwable t)
// 	{
// 		this.logger.error(t.getMessage(), t);
// 	}
// 	
// 	public void error(String msg, Throwable t)
// 	{
// 		this.logger.error(msg, t);
// 	}
// }


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.ModelAttribute;
import com.sivalabs.jcart.admin.security.AuthenticatedUser;
import com.sivalabs.jcart.common.services.JCLogger;
/**
 * 
 */
package com.sivalabs.jcart.admin.web.controllers;



/**
 * @author Siva
 *
 */
public abstract class JCartAdminBaseController
{
	protected final JCLogger logger = JCLogger.getLogger(getClass());
	
	@Autowired protected MessageSource messageSource;
	
	protected abstract String getHeaderTitle();
	
	public String getMessage(String code)
	{
		return messageSource.getMessage(code, null, null);
	}
	
	public String getMessage(String code, String defaultMsg)
	{
		return messageSource.getMessage(code, null, defaultMsg, null);
	}
	
	@ModelAttribute("authenticatedUser")
// Path: jcart-admin/src/main/java/com/sivalabs/jcart/admin/security/AuthenticatedUser.java
// public class AuthenticatedUser extends org.springframework.security.core.userdetails.User
// {
// 
// 	private static final long serialVersionUID = 1L;
// 	private User user;
// 	
// 	public AuthenticatedUser(User user)
// 	{
// 		super(user.getEmail(), user.getPassword(), getAuthorities(user));
// 		this.user = user;
// 	}
// 	
// 	public User getUser()
// 	{
// 		return user;
// 	}
// 	
// 	private static Collection<? extends GrantedAuthority> getAuthorities(User user)
// 	{
// 		Set<String> roleAndPermissions = new HashSet<>();
// 		List<Role> roles = user.getRoles();
// 		
// 		for (Role role : roles)
// 		{
// 			roleAndPermissions.add(role.getName());
// 			List<Permission> permissions = role.getPermissions();
// 			for (Permission permission : permissions)
// 			{
// 				roleAndPermissions.add("ROLE_"+permission.getName());
// 			}
// 		}
// 		String[] roleNames = new String[roleAndPermissions.size()];
// 		Collection<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(roleAndPermissions.toArray(roleNames));
// 		return authorities;
// 	}
// }
// 
// Path: jcart-core/src/main/java/com/sivalabs/jcart/common/services/JCLogger.java
// public class JCLogger
// {
// 	private Logger logger;
// 	
// 	public JCLogger(Class<?> clazz)
// 	{
// 		this.logger = LoggerFactory.getLogger(clazz);
// 	}
// 	
// 	public static final JCLogger getLogger(Class<?> clazz)
// 	{
// 		return new JCLogger(clazz);
// 	}
// 	
// 	public void info(String msg)
// 	{
// 		this.logger.info(msg);
// 	}
// 	public void info(String format, Object...args)
// 	{
// 		this.logger.info(format, args);
// 	}
// 	
// 	public void debug(String msg)
// 	{
// 		this.logger.debug(msg);
// 	}
// 	
// 	public void debug(String format, Object...args)
// 	{
// 		this.logger.info(format, args);
// 	}
// 	
// 	public void warn(String msg)
// 	{
// 		this.logger.info(msg);
// 	}
// 	
// 	public void warn(String format, Object...args)
// 	{
// 		this.logger.info(format, args);
// 	}
// 	
// 	public void error(String msg)
// 	{
// 		this.logger.error(msg);
// 	}
// 	
// 	public void error(String format, Object...args)
// 	{
// 		this.logger.error(format, args);
// 	}
// 	
// 	public void error(Throwable t)
// 	{
// 		this.logger.error(t.getMessage(), t);
// 	}
// 	
// 	public void error(String msg, Throwable t)
// 	{
// 		this.logger.error(msg, t);
// 	}
// }


// Path: jcart-admin/src/main/java/com/sivalabs/jcart/admin/web/controllers/JCartAdminBaseController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.ModelAttribute;
import com.sivalabs.jcart.admin.security.AuthenticatedUser;
import com.sivalabs.jcart.common.services.JCLogger;

/**
 * 
 */
package com.sivalabs.jcart.admin.web.controllers;



/**
 * @author Siva
 *
 */
public abstract class JCartAdminBaseController
{
	protected final JCLogger logger = JCLogger.getLogger(getClass());
	
	@Autowired protected MessageSource messageSource;
	
	protected abstract String getHeaderTitle();
	
	public String getMessage(String code)
	{
		return messageSource.getMessage(code, null, null);
	}
	
	public String getMessage(String code, String defaultMsg)
	{
		return messageSource.getMessage(code, null, defaultMsg, null);
	}
	
	@ModelAttribute("authenticatedUser")
    public AuthenticatedUser authenticatedUser(@AuthenticationPrincipal AuthenticatedUser authenticatedUser)