[jboss-cvs] jboss-seam/src/main/org/jboss/seam/util ...

Gavin King gavin.king at jboss.com
Tue Jun 19 15:15:10 EDT 2007


  User: gavin   
  Date: 07/06/19 15:15:10

  Added:       src/main/org/jboss/seam/util  JSF.java
  Log:
  repackaged built-in components
  sorry for breakage, but it had to happen eventually :-(
  
  Revision  Changes    Path
  1.1      date: 2007/06/19 19:15:10;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/util/JSF.java
  
  Index: JSF.java
  ===================================================================
  package org.jboss.seam.util;
  
  import java.lang.reflect.Method;
  
  public class JSF
  {
     public static final Class PHASE_ID;
     public static final Class FACES_EVENT;
     public static final Class DATA_MODEL;
     public static final Class VALIDATOR_EXCEPTION;
     public static final Class CONVERTER_EXCEPTION;
     public static final Method GET_WRAPPED_DATA;
     public static final Method SET_WRAPPED_DATA;
     public static final Method GET_ROW_COUNT;
     
     public static final Object RESTORE_VIEW;
     public static final Object UPDATE_MODEL_VALUES;
     public static final Object INVOKE_APPLICATION;
     public static final Object RENDER_RESPONSE;
     
     public static class Dummy {}
     
     static
     {
        PHASE_ID = classForName("javax.faces.event.PhaseId");
        FACES_EVENT = classForName("javax.faces.event.FacesEvent");
        DATA_MODEL = classForName("javax.faces.model.DataModel");
        VALIDATOR_EXCEPTION = classForName("javax.faces.validator.ValidatorException");
        CONVERTER_EXCEPTION = classForName("javax.faces.convert.ConverterException");
        GET_WRAPPED_DATA = methodForName(DATA_MODEL, "getWrappedData");
        SET_WRAPPED_DATA = methodForName(DATA_MODEL, "setWrappedData", Object.class);
        GET_ROW_COUNT = methodForName(DATA_MODEL, "getRowCount");
        
        RESTORE_VIEW = constantValueForName(PHASE_ID, "RESTORE_VIEW");
        UPDATE_MODEL_VALUES = constantValueForName(PHASE_ID, "UPDATE_MODEL_VALUES");
        INVOKE_APPLICATION = constantValueForName(PHASE_ID, "INVOKE_APPLICATION");
        RENDER_RESPONSE = constantValueForName(PHASE_ID, "RENDER_RESPONSE");
     }
  
     private static Class classForName(String name)
     {
        try
        {
           return Reflections.classForName(name);
        }
        catch (ClassNotFoundException cnfe)
        {
           return Dummy.class;
        }
     }
     
     private static Method methodForName(Class clazz, String name, Class... paramTypes)
     {
        if (clazz.equals(Dummy.class)) return null;
        try
        {
           return clazz.getDeclaredMethod(name, paramTypes);
        }
        catch (Exception e)
        {
           throw new RuntimeException(e);
        }
     }
     
     private static Object constantValueForName(Class clazz, String name)
     {
        if (clazz.equals(Dummy.class)) return null;
        try
        {
           return clazz.getField(name).get(null);
        }
        catch (Exception e)
        {
           throw new RuntimeException(e);
        }
     }
     
     public static int getRowCount(Object dataModel)
     {
        return (Integer) Reflections.invokeAndWrap(GET_ROW_COUNT, dataModel);
     }
     
     public static Object getWrappedData(Object dataModel)
     {
        return Reflections.invokeAndWrap(GET_WRAPPED_DATA, dataModel);
     }
     
     public static Object setWrappedData(Object dataModel, Object data)
     {
        return Reflections.invokeAndWrap(SET_WRAPPED_DATA, dataModel, data);
     }
     
  }
  
  
  



More information about the jboss-cvs-commits mailing list