Package railo.runtime.orm.hibernate.tuplizer

Source Code of railo.runtime.orm.hibernate.tuplizer.CFCInstantiator

package railo.runtime.orm.hibernate.tuplizer;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.hibernate.mapping.PersistentClass;
import org.hibernate.tuple.Instantiator;

import railo.runtime.Component;
import railo.runtime.PageContext;
import railo.runtime.exp.PageException;
import railo.runtime.orm.hibernate.CommonUtil;
import railo.runtime.orm.hibernate.HibernateCaster;
import railo.runtime.orm.hibernate.HibernateORMEngine;
import railo.runtime.orm.hibernate.HibernateORMSession;
import railo.runtime.orm.hibernate.HibernatePageException;
import railo.runtime.orm.hibernate.HibernateUtil;

public class CFCInstantiator implements Instantiator {
 
  private String entityName;
  private Set<String> isInstanceEntityNames = new HashSet<String>();
 
  public CFCInstantiator() {
    this.entityName = null;
  }

  /**
   * Constructor of the class
   * @param mappingInfo
   */
  public CFCInstantiator(PersistentClass mappingInfo) {
    this.entityName = mappingInfo.getEntityName();
    isInstanceEntityNames.add( entityName );
    if ( mappingInfo.hasSubclasses() ) {
      Iterator<PersistentClass> itr = mappingInfo.getSubclassClosureIterator();
      while ( itr.hasNext() ) {
        final PersistentClass subclassInfo = itr.next();
        isInstanceEntityNames.add( subclassInfo.getEntityName() );
      }
    }
  }

  @Override
  public final Object instantiate(Serializable id) {
    return instantiate();
  }

  @Override
  public final Object instantiate() {
    try {
      PageContext pc = CommonUtil.pc();
      HibernateORMSession session=HibernateUtil.getORMSession(pc,true);
      HibernateORMEngine engine=(HibernateORMEngine) session.getEngine();
      Component c = engine.create(pc, session, entityName, true);
      CommonUtil.setEntity(c,true);
      return c;//new CFCProxy(c);
    }
    catch (PageException pe) {
      throw new HibernatePageException(pe);
    }
  }

  @Override
  public final boolean isInstance(Object object) {
    Component cfc = CommonUtil.toComponent(object,null);
    if(cfc==null) return false;
    return isInstanceEntityNames.contains( HibernateCaster.getEntityName(cfc));
  }
}
TOP

Related Classes of railo.runtime.orm.hibernate.tuplizer.CFCInstantiator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.