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

Gavin King gavin.king at jboss.com
Sat Jan 27 13:42:57 EST 2007


  User: gavin   
  Date: 07/01/27 13:42:57

  Added:       src/main/org/jboss/seam/framework 
                        PersistenceController.java
  Log:
  major improvements to the hierarchy
  
  Revision  Changes    Path
  1.1      date: 2007/01/27 18:42:57;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/framework/PersistenceController.java
  
  Index: PersistenceController.java
  ===================================================================
  package org.jboss.seam.framework;
  
  import java.lang.reflect.ParameterizedType;
  import java.lang.reflect.Type;
  
  /**
   * Base class for controller objects which require a persistence
   * context object.
   * 
   * @author Gavin King
   *
   * @param <T> the persistence context class (eg. Session or EntityManager)
   */
  public abstract class PersistenceController<T> extends Controller
  {
     private transient T persistenceContext;
     private String persistenceContextName;
     
     public T getPersistenceContext()
     {
        if (persistenceContext==null)
        {
           persistenceContext = (T) getComponentInstance( getPersistenceContextName() );
        }
        return persistenceContext;
     }
  
     public void setPersistenceContext(T persistenceContext)
     {
        this.persistenceContext = persistenceContext;
     }
  
     protected String getPersistenceContextName()
     {
        if (persistenceContextName==null)
        {
           Type type = getClass().getGenericSuperclass();
           if (type instanceof ParameterizedType)
           {
              ParameterizedType paramType = (ParameterizedType) type;
              String className = ( (Class<T>) paramType.getActualTypeArguments()[0] ).getName();
              int loc = className.lastIndexOf('.');
              persistenceContextName = className.substring(loc+1,loc+2).toLowerCase() + className.substring(loc+2);
           }
           else
           {
              throw new IllegalArgumentException("Could not guess persistence context class by reflection");
           }
        }
        return persistenceContextName;
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list