001 package railo.runtime.orm.hibernate.tuplizer.proxy; 002 003 import java.io.Serializable; 004 import java.lang.reflect.Method; 005 import java.util.Set; 006 007 import org.hibernate.HibernateException; 008 import org.hibernate.engine.SessionImplementor; 009 import org.hibernate.mapping.PersistentClass; 010 import org.hibernate.proxy.HibernateProxy; 011 import org.hibernate.proxy.ProxyFactory; 012 import org.hibernate.type.AbstractComponentType; 013 014 import railo.runtime.CFCProxy; 015 016 /** 017 * @author Gavin King 018 */ 019 public class CFCProxyFactory implements ProxyFactory { 020 private String entityName; 021 private String nodeName; 022 023 public void postInstantiate( 024 final String entityName, 025 final Class persistentClass, 026 final Set interfaces, 027 final Method getIdentifierMethod, 028 final Method setIdentifierMethod, 029 AbstractComponentType componentIdType) throws HibernateException { 030 int index=entityName.indexOf('.'); 031 this.nodeName = entityName; 032 this.entityName = entityName.substring(index+1); 033 } 034 035 public void postInstantiate(PersistentClass pc) { 036 this.nodeName =pc.getNodeName(); 037 this.entityName =pc.getEntityName(); 038 } 039 040 public HibernateProxy getProxy(final Serializable id, final SessionImplementor session) { 041 try { 042 return new CFCProxy(new CFCLazyInitializer(entityName, id, session)); 043 } 044 catch(Throwable t){ 045 return new CFCProxy(new CFCLazyInitializer(nodeName, id, session)); 046 } 047 } 048 }