[jboss-cvs] jboss-seam/src/main/org/jboss/seam/framework ...
Peter Muir
peter at bleepbleep.org.uk
Sun Apr 15 13:41:23 EDT 2007
User: pmuir
Date: 07/04/15 13:41:23
Modified: src/main/org/jboss/seam/framework Query.java
Added: src/main/org/jboss/seam/framework EntityIdentifier.java
HibernateEntityIdentifier.java Identifier.java
Removed: src/main/org/jboss/seam/framework
EntityIdentifierStore.java
Log:
Refactor EntityIdentifier/EntityConverterStore
Revision Changes Path
1.25 +0 -1 jboss-seam/src/main/org/jboss/seam/framework/Query.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Query.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/Query.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- Query.java 3 Apr 2007 17:38:29 -0000 1.24
+++ Query.java 15 Apr 2007 17:41:23 -0000 1.25
@@ -11,7 +11,6 @@
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.core.Expressions.ValueBinding;
import org.jboss.seam.jsf.JsfProvider;
-import org.jboss.seam.jsf.ListDataModel;
import org.jboss.seam.persistence.QueryParser;
/**
1.1 date: 2007/04/15 17:41:23; author: pmuir; state: Exp;jboss-seam/src/main/org/jboss/seam/framework/EntityIdentifier.java
Index: EntityIdentifier.java
===================================================================
/**
*
*/
package org.jboss.seam.framework;
import javax.persistence.EntityManager;
import org.jboss.seam.Entity;
import org.jboss.seam.persistence.PersistenceProvider;
public class EntityIdentifier extends Identifier<EntityManager>
{
public EntityIdentifier(Object entity, EntityManager entityManager)
{
super(Entity.forClass(deproxy(entity.getClass())).getBeanClass(), PersistenceProvider.instance().getId(entity, entityManager));
}
@Override
public Object find(EntityManager entityManager)
{
entityManager.joinTransaction();
return entityManager.find(getClazz(), getId());
}
private static Class deproxy(Class clazz)
{
Class c = clazz;
/* Work our way up the inheritance hierachy, looking of @Entity, if we are unsuccessful,
* return the class we started with (possibly it's mapped in xml).
*
* Workaround for lazy proxies and a lack of a way to do entityManager.getEntityClass(entity)
*/
while (!Object.class.equals(c))
{
if (c.isAnnotationPresent(javax.persistence.Entity.class))
{
return c;
}
else
{
c = c.getSuperclass();
}
}
return clazz;
}
}
1.1 date: 2007/04/15 17:41:23; author: pmuir; state: Exp;jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityIdentifier.java
Index: HibernateEntityIdentifier.java
===================================================================
package org.jboss.seam.framework;
import java.io.Serializable;
import org.hibernate.Session;
public class HibernateEntityIdentifier extends Identifier<Session>
{
public HibernateEntityIdentifier(Object entity, Session session)
{
super(entity.getClass(), session.getIdentifier(entity));
}
@Override
public Object find(Session session)
{
return session.get(getClazz(), (Serializable) getId());
}
}
1.1 date: 2007/04/15 17:41:23; author: pmuir; state: Exp;jboss-seam/src/main/org/jboss/seam/framework/Identifier.java
Index: Identifier.java
===================================================================
package org.jboss.seam.framework;
import java.io.Serializable;
public abstract class Identifier<T> implements Serializable
{
public Identifier(Class clazz, Object id)
{
if (clazz == null || id == null)
{
throw new IllegalArgumentException("Id and clazz must not be null");
}
this.clazz = clazz;
this.id = id;
}
private Class clazz;
private Object id;
public Class getClazz()
{
return clazz;
}
public Object getId()
{
return id;
}
@Override
public boolean equals(Object other)
{
if (other instanceof EntityIdentifier)
{
EntityIdentifier that = (EntityIdentifier) other;
if (id == null || clazz == null)
{
throw new IllegalArgumentException("Class and Id must not be null");
}
else
{
return this.getId().equals(that.getId()) && this.getClazz().equals(that.getClazz());
}
}
return false;
}
public abstract Object find(T persistenceContext);
}
More information about the jboss-cvs-commits
mailing list