/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.resolver;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
@Component
public class CacheResolverValueServiceImpl
implements CacheResolverValueService
{
public String getCachedResolverValue( ResolverContext context, String sessionDeviceClassKey )
{
HttpServletRequest request = context.getRequest();
return (String) request.getSession().getAttribute( sessionDeviceClassKey );
}
public boolean setCachedResolverValue( ResolverContext context, String deviceClass, String cacheKey )
{
setResolverValueInSession( context.getRequest(), deviceClass, cacheKey );
return true;
}
public boolean clearCachedResolverValue( ResolverContext context, String cacheKey )
{
removeSessionAttribute( context.getRequest(), cacheKey );
return true;
}
private void removeSessionAttribute( HttpServletRequest request, String toBeRemoved )
{
Enumeration attributeNames = request.getSession().getAttributeNames();
while ( attributeNames != null && attributeNames.hasMoreElements() )
{
String attributeName = (String) attributeNames.nextElement();
if ( attributeName.startsWith( toBeRemoved ) )
{
request.getSession().removeAttribute( attributeName );
}
}
}
private void setResolverValueInSession( HttpServletRequest request, String deviceClass, String cacheKey )
{
request.getSession().setAttribute( cacheKey, deviceClass );
}
}