package org.jboss.seam.ui;
import static org.jboss.seam.ScopeType.STATELESS;
import static org.jboss.seam.annotations.Install.FRAMEWORK;
import org.hibernate.Session;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.framework.HibernateEntityIdentifier;
import org.jboss.seam.framework.Identifier;
/**
* Stores entity identifiers under a key, which can be used on a page
*
* @author Pete Muir
*/
@Name("org.jboss.seam.ui.entityLoader")
@Install(precedence=FRAMEWORK, classDependencies="org.hibernate.Session", value=false)
@Scope(STATELESS)
public class HibernateEntityLoader extends AbstractEntityLoader<Session>
{
@Override
protected Identifier createIdentifier(Object entity)
{
return new HibernateEntityIdentifier(entity, getPersistenceContext());
}
@Override
protected String getPersistenceContextName()
{
return "hibernateSession";
}
@Override
public void validate()
{
if (getPersistenceContext() == null)
{
throw new IllegalStateException("Unable to access a Seam Managed Hibernate Session. You must either have a Seam Managed Hibernate Session called hibernateSession or configure one in components.xml");
}
}
public Session getSession()
{
return getPersistenceContext();
}
public void setSession(Session session)
{
setPersistenceContext(session);
}
}