Package org.jboss.seam.faces

Source Code of org.jboss.seam.faces.DataModels

package org.jboss.seam.faces;

import static org.jboss.seam.ScopeType.STATELESS;
import static org.jboss.seam.annotations.Install.BUILT_IN;

import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.faces.model.DataModel;

import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
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.framework.Query;
import org.jboss.seam.jsf.ArrayDataModel;
import org.jboss.seam.jsf.ListDataModel;
import org.jboss.seam.jsf.MapDataModel;
import org.jboss.seam.jsf.SetDataModel;

/**
* Wraps a collection as a JSF {@link DataModel}. May be overridden
* and extended if you don't like the built in collections
* which are supported: list, map, set, array.
*
* @author pmuir
*/
@Name("org.jboss.seam.faces.dataModels")
@Install(precedence=BUILT_IN, classDependencies="javax.faces.context.FacesContext")
@Scope(STATELESS)
@BypassInterceptors
public class DataModels
{
  
   /**
    * Wrap the value in a DataModel
    *
    * This implementation supports {@link List}, {@link Map}, {@link Set} and
    * arrays
    */
   public DataModel getDataModel(Object value)
   {
      if (value instanceof List)
      {
         return new ListDataModel( (List) value );
      }
      else if (value instanceof Object[])
      {
         return new ArrayDataModel( (Object[]) value );
      }
      else if (value instanceof Map)
      {
         return new MapDataModel( (Map) value );
      }
      else if (value instanceof Set)
      {
         return new SetDataModel( (Set) value );
      }
      else
      {
         throw new IllegalArgumentException("unknown collection type: " + value.getClass());
      }
   }
  
   /**
    * Wrap the the Seam Framework {@link Query} in a JSF DataModel
    */
   public DataModel getDataModel(Query query)
   {
      return getDataModel( query.getResultList() );
   }
  
   public static DataModels instance()
   {
      return (DataModels) Component.getInstance(DataModels.class, ScopeType.STATELESS);
   }
  
}
TOP

Related Classes of org.jboss.seam.faces.DataModels

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.