package org.jboss.seam.trinidad; import static org.jboss.seam.ScopeType.STATELESS; import static org.jboss.seam.annotations.Install.FRAMEWORK; import javax.faces.model.DataModel; import org.jboss.seam.annotations.Install; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.intercept.BypassInterceptors; import org.jboss.seam.faces.DataModels; import org.jboss.seam.framework.EntityQuery; import org.jboss.seam.framework.HibernateEntityQuery; import org.jboss.seam.framework.Query; /** * Provide enhanced features when Trinidad is used as a JSF component set * @author pmuir * */ @Name("org.jboss.seam.faces.dataModels") @Install(precedence=FRAMEWORK, classDependencies="org.apache.myfaces.trinidad.component.UIXComponent") @Scope(STATELESS) @BypassInterceptors public class TrinidadDataModels extends DataModels { @Override public DataModel getDataModel(Query query) { // If an EntityQuery is in use we can return a CollectionModel // backed by the database if (query instanceof EntityQuery) { return new EntityCollectionModel((EntityQuery) query); } else if (query instanceof HibernateEntityQuery) { return new HibernateEntityCollectionModel((HibernateEntityQuery) query); } else { return super.getDataModel(query); } } }