[jboss-cvs] jboss-seam/src/main/org/jboss/seam/framework ...
Gavin King
gavin.king at jboss.com
Wed Sep 27 19:14:42 EDT 2006
User: gavin
Date: 06/09/27 19:14:42
Modified: src/main/org/jboss/seam/framework EntityActions.java
ManagedEntity.java
Log:
propagate page parameters across navigation rule redirects
improvements to framework
Revision Changes Path
1.2 +11 -2 jboss-seam/src/main/org/jboss/seam/framework/EntityActions.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: EntityActions.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/EntityActions.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- EntityActions.java 27 Sep 2006 03:53:49 -0000 1.1
+++ EntityActions.java 27 Sep 2006 23:14:42 -0000 1.2
@@ -10,17 +10,26 @@
private Object entity;
@Transactional
- public void persist()
+ public String update()
+ {
+ entityManager.joinTransaction();
+ return "updated";
+ }
+
+ @Transactional
+ public String persist()
{
entityManager.joinTransaction();
entityManager.persist(entity);
+ return "persisted";
}
@Transactional
- public void remove()
+ public String remove()
{
entityManager.joinTransaction();
entityManager.remove(entity);
+ return "removed";
}
public boolean isManaged()
1.2 +34 -11 jboss-seam/src/main/org/jboss/seam/framework/ManagedEntity.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ManagedEntity.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/ManagedEntity.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- ManagedEntity.java 27 Sep 2006 03:53:49 -0000 1.1
+++ ManagedEntity.java 27 Sep 2006 23:14:42 -0000 1.2
@@ -6,6 +6,7 @@
import javax.faces.convert.Converter;
import javax.persistence.EntityManager;
+import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.util.Reflections;
@@ -24,9 +25,10 @@
{
private EntityManager entityManager;
private Object id;
- private String entityClass;
+ private String entityClassName;
+ private Class<?> entityClass;
private String idClass;
- private Object newInstance;
+ private Object instance;
private String idConverterId;
private Converter idConverter;
@@ -52,36 +54,57 @@
public String getEntityClass()
{
- return entityClass;
+ return entityClassName;
}
public void setEntityClass(String entityClass)
{
- this.entityClass = entityClass;
+ this.entityClassName = entityClass;
+ }
+
+ @Create
+ public void initEntityClass() throws Exception
+ {
+ entityClass = Reflections.classForName(entityClassName);
}
@Unwrap
public Object getInstance() throws Exception
{
- Class<?> clazz = Reflections.classForName(entityClass);
if ( id==null || "".equals(id) )
{
- if (newInstance==null)
+ if (instance==null)
{
- newInstance = clazz.newInstance();
+ createInstance();
}
- return newInstance;
}
else
{
+ if (instance==null)
+ {
+ //we cache the instance so that it does not "disappear"
+ //after remove() is called on the instance
+ //is this really a Good Idea??
entityManager.joinTransaction();
- return entityManager.find( clazz, getConvertedId() );
+ loadInstance( getConvertedId() );
+ }
+ }
+ return instance;
}
+
+ protected void createInstance() throws Exception
+ {
+ instance = entityClass.newInstance();
+ }
+
+ protected void loadInstance(Object id)
+ {
+ instance = entityManager.find(entityClass, id);
}
//////////// TODO: copy/paste from ManagedHibernateEntity ///////////////////
- private Object getConvertedId() throws Exception
+ protected Object getConvertedId() throws Exception
{
FacesContext facesContext = FacesContext.getCurrentInstance();
if (idConverter==null)
More information about the jboss-cvs-commits
mailing list