[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