/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.contexts;
import java.util.ArrayList;
import java.util.Map;
import org.jboss.seam.ScopeType;
import org.jboss.seam.Seam;
/**
* Session context - state associated with a user session.
* Session state may be passivated or replicated.
*
* @author Gavin King
*/
public class SessionContext extends BasicContext
{
public SessionContext(Map<String, Object> map)
{
super(ScopeType.SESSION, map);
}
@Override
public String[] getNames()
{
ArrayList<String> results = new ArrayList<String>();
String prefix = ScopeType.CONVERSATION.getPrefix();
for ( String name: super.getNames() )
{
if ( !name.contains(prefix) )
{
results.add(name);
}
}
return results.toArray(new String[]{});
}
@Override
public void flush()
{
for ( String name: getNames() )
{
Object attribute = get(name);
boolean dirty = attribute!=null &&
( Contexts.isAttributeDirty(attribute) || Seam.isEntityClass( attribute.getClass() ) );
if ( dirty )
{
set(name, attribute);
}
}
}
@Override
public String toString()
{
return "SessionContext";
}
}