package com.processpuzzle.application.configuration.control; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext; import com.processpuzzle.application.configuration.domain.PropertyContext; import com.processpuzzle.application.configuration.domain.PropertyKeys; import com.processpuzzle.user_session.domain.UserRequestManager; public class SkinSelectorFilter implements Filter { public static final String SKIN_ATTRIBUTE_NAME = "skinDescriptor"; private SkinDescriptor skinDescriptor; private ProcessPuzzleContext applicationContext; @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain filterChain ) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpSession httpSession = (HttpSession) httpRequest.getSession(); httpSession.setAttribute( SKIN_ATTRIBUTE_NAME, skinDescriptor ); filterChain.doFilter( request, response ); } @Override public void init( FilterConfig filterConfiguration ) throws ServletException { applicationContext = UserRequestManager.getInstance().getApplicationContext(); skinDescriptor = determineDefaultSkin(); } private SkinDescriptor determineDefaultSkin() { PropertyContext propertyContext = applicationContext.getPropertyContext(); String defaultSkinName = propertyContext.getProperty( PropertyKeys.PRESENTATION_DEFALT_SKIN_NAME.getDefaultKey() ); String skinPath = propertyContext.getProperty( PropertyKeys.PRESENTATION_DEFALT_SKIN_PATH.getDefaultKey() ); SkinDescriptor skinDescriptor = new SkinDescriptor( defaultSkinName, skinPath ); return skinDescriptor; } }