[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/converter/entityConverter ...
Peter Muir
peter at bleepbleep.org.uk
Tue Nov 6 07:00:01 EST 2007
User: pmuir
Date: 07/11/06 07:00:01
Added: ui/src/main/java/org/jboss/seam/ui/converter/entityConverter
EntityLoader.java AbstractEntityLoader.java
EntityIdentifierStore.java
HibernateEntityLoader.java
Log:
JBSEAM-1242
Revision Changes Path
1.1 date: 2007/11/06 12:00:01; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/converter/entityConverter/EntityLoader.java
Index: EntityLoader.java
===================================================================
package org.jboss.seam.ui.converter.entityConverter;
import static org.jboss.seam.ScopeType.STATELESS;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import javax.persistence.EntityManager;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.framework.EntityIdentifier;
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=BUILT_IN)
@Scope(STATELESS)
public class EntityLoader extends AbstractEntityLoader<EntityManager>
{
@Override
public EntityManager getPersistenceContext()
{
if (!super.getPersistenceContext().isOpen())
{
super.setPersistenceContext(null);
}
return super.getPersistenceContext();
}
@Override
protected Identifier createIdentifier(Object entity)
{
return new EntityIdentifier(entity, getPersistenceContext());
}
@Override
protected String getPersistenceContextName()
{
return "entityManager";
}
public static EntityLoader instance()
{
return (EntityLoader) Component.getInstance(EntityLoader.class, STATELESS);
}
}
1.1 date: 2007/11/06 12:00:01; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/converter/entityConverter/AbstractEntityLoader.java
Index: AbstractEntityLoader.java
===================================================================
package org.jboss.seam.ui.converter.entityConverter;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.framework.Identifier;
import org.jboss.seam.framework.PersistenceController;
/**
* Helper class to load entities for the entity converter
* @author Pete Muir
*
*/
public abstract class AbstractEntityLoader<T> extends PersistenceController<T>
{
/**
* Load and return the entity stored
* @param key
* @return The entity or null if no entity is available at that key
*/
@Transactional
public Object get(Integer key)
{
Identifier identifier = EntityIdentifierStore.instance().get(key);
if (identifier != null)
{
return identifier.find(getPersistenceContext());
}
else
{
return null;
}
}
/**
* Store an entity id/clazz
* @param entity The entity to store
* @return The key under which the clazz/id are stored
*/
@Transactional
public Integer put(Object entity)
{
return EntityIdentifierStore.instance().put(createIdentifier(entity));
}
protected abstract Identifier createIdentifier(Object entity);
}
1.1 date: 2007/11/06 12:00:01; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/converter/entityConverter/EntityIdentifierStore.java
Index: EntityIdentifierStore.java
===================================================================
package org.jboss.seam.ui.converter.entityConverter;
import static org.jboss.seam.ScopeType.PAGE;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.util.ArrayList;
import java.util.List;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.AbstractMutable;
import org.jboss.seam.framework.Identifier;
/**
* Page scoped store for entity identifiers used by the EntityConverter.
*
* By default a list is used and the key returned is the list index. The key
* used can be customised by overriding this component and implementing the
* get and put methods
*
* @author Pete Muir
*
*/
@Name("org.jboss.seam.ui.entityIdentifierStore")
@Install(precedence=BUILT_IN)
@Scope(PAGE)
public class EntityIdentifierStore extends AbstractMutable
{
private List<Identifier> store;
@Create
public void create()
{
store = new ArrayList<Identifier>();
}
public Identifier get(Integer key)
{
try
{
return store.get(key);
}
catch (IndexOutOfBoundsException e)
{
return null;
}
}
public Integer put(Identifier identifier)
{
if (!store.contains(identifier))
{
store.add(identifier);
setDirty();
}
return store.indexOf(identifier);
}
public static EntityIdentifierStore instance()
{
if (!Contexts.isPageContextActive())
{
throw new IllegalArgumentException("Page scope not active");
}
return (EntityIdentifierStore) Component.getInstance(EntityIdentifierStore.class, PAGE);
}
}
1.1 date: 2007/11/06 12:00:01; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/converter/entityConverter/HibernateEntityLoader.java
Index: HibernateEntityLoader.java
===================================================================
package org.jboss.seam.ui.converter.entityConverter;
import static org.jboss.seam.ScopeType.STATELESS;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import org.hibernate.Session;
import org.jboss.seam.Component;
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.hibernateEntityLoader")
@Install(precedence=BUILT_IN)
@Scope(STATELESS)
public class HibernateEntityLoader extends AbstractEntityLoader<Session>
{
@Override
public Session getPersistenceContext()
{
if (!super.getPersistenceContext().isOpen())
{
super.setPersistenceContext(null);
}
return super.getPersistenceContext();
}
@Override
protected Identifier createIdentifier(Object entity)
{
return new HibernateEntityIdentifier(entity, getPersistenceContext());
}
@Override
protected String getPersistenceContextName()
{
return "session";
}
public static HibernateEntityLoader instance()
{
return (HibernateEntityLoader) Component.getInstance(HibernateEntityLoader.class, STATELESS);
}
}
More information about the jboss-cvs-commits
mailing list