package org.jboss.seam.ui; import static org.jboss.seam.ScopeType.STATELESS; import org.jboss.seam.Component; 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(String 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 String put(Object entity) { return EntityIdentifierStore.instance().put(createIdentifier(entity), entity); } protected abstract Identifier createIdentifier(Object entity); public abstract void validate(); public static AbstractEntityLoader instance() { return (AbstractEntityLoader) Component.getInstance("org.jboss.seam.ui.entityLoader", STATELESS); } }