package railo.runtime.orm.hibernate.tuplizer.proxy; import java.io.Serializable; import java.lang.reflect.Method; import java.util.Set; import org.hibernate.HibernateException; import org.hibernate.engine.SessionImplementor; import org.hibernate.mapping.PersistentClass; import org.hibernate.proxy.HibernateProxy; import org.hibernate.proxy.ProxyFactory; import org.hibernate.type.AbstractComponentType; public class CFCHibernateProxyFactory implements ProxyFactory { private String entityName; private String nodeName; public void postInstantiate( final String entityName, final Class persistentClass, final Set interfaces, final Method getIdentifierMethod, final Method setIdentifierMethod, AbstractComponentType componentIdType) throws HibernateException { int index=entityName.indexOf('.'); this.nodeName = entityName; this.entityName = entityName.substring(index+1); } public void postInstantiate(PersistentClass pc) { this.nodeName =pc.getNodeName(); this.entityName =pc.getEntityName(); } public HibernateProxy getProxy(final Serializable id, final SessionImplementor session) { try { return new CFCHibernateProxy(new CFCLazyInitializer(entityName, id, session)); } catch(Throwable t){ return new CFCHibernateProxy(new CFCLazyInitializer(nodeName, id, session)); } } }