/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.portal.services;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Component;
import com.enonic.esl.containers.ExtendedMap;
import com.enonic.vertical.engine.VerticalEngineException;
import com.enonic.cms.core.portal.VerticalSession;
import com.enonic.cms.core.service.UserServicesService;
import com.enonic.cms.core.structure.SiteKey;
@Component
public final class SessionServicesProcessor
extends ServicesProcessorBase
{
public SessionServicesProcessor()
{
super( "session" );
}
protected void handlerCustom( HttpServletRequest request, HttpServletResponse response, HttpSession session, ExtendedMap formItems,
UserServicesService userServices, SiteKey siteKey, String operation )
throws VerticalUserServicesException, VerticalEngineException, IOException, ClassNotFoundException, IllegalAccessException,
InstantiationException
{
VerticalSession vsession = (VerticalSession) session.getAttribute( VerticalSession.VERTICAL_SESSION_OBJECT );
if ( vsession == null )
{
vsession = new VerticalSession();
session.setAttribute( VerticalSession.VERTICAL_SESSION_OBJECT, vsession );
}
if ( "setattributes".equals( operation ) )
{
for ( Object key : formItems.keySet() )
{
String value = formItems.getString( key );
if ( !"redirect".equals( key ) && !"_redirect".equals( key ) && !"op".equals( key ) && !"_op".equals( key ) &&
!"handler".equals( key ) && !"_handler".equals( key ) )
{
vsession.setAttribute( key.toString(), value );
}
}
}
else if ( "removeattributes".equals( operation ) )
{
Object obj = formItems.get( "name" );
if ( obj.getClass() == String.class )
{
vsession.removeAttribute( (String) obj );
}
else
{
String[] attributes = (String[]) obj;
for ( String attribute : attributes )
{
vsession.removeAttribute( attribute );
}
}
}
else
{
super.handlerCustom( request, response, session, formItems, userServices, siteKey, operation );
}
redirectToPage( request, response, formItems );
}
}