Open Source Repository

Home /hibernate/hibernate-3.2.6.ga | Repository Home



org/hibernate/cache/entry/StructuredCacheEntry.java
//$Id: StructuredCacheEntry.java 7764 2005-08-05 16:16:46Z oneovthafew $
package org.hibernate.cache.entry;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.persister.entity.EntityPersister;

/**
 @author Gavin King
 */
public class StructuredCacheEntry implements CacheEntryStructure {

  private EntityPersister persister;

  public StructuredCacheEntry(EntityPersister persister) {
    this.persister = persister;
  }
  
  public Object destructure(Object item, SessionFactoryImplementor factory) {
    Map map = (Mapitem;
    boolean lazyPropertiesUnfetched = ( (Booleanmap.get("_lazyPropertiesUnfetched") ).booleanValue();
    String subclass = (Stringmap.get("_subclass");
    Object version = map.get("_version");
    EntityPersister subclassPersister = factory.getEntityPersister(subclass);
    String[] names = subclassPersister.getPropertyNames();
    Serializable[] state = new Serializable[names.length];
    for int i=0; i<names.length; i++ ) {
      state[i(Serializablemap.getnames[i] );
    }
    return new CacheEntry(state, subclass, lazyPropertiesUnfetched, version);
  }

  public Object structure(Object item) {
    CacheEntry entry = (CacheEntryitem;
    String[] names = persister.getPropertyNames();
    Map map = new HashMap(names.length+2);
    map.put"_subclass", entry.getSubclass() );
    map.put"_version", entry.getVersion() );
    map.put"_lazyPropertiesUnfetched", entry.areLazyPropertiesUnfetched() ? Boolean.TRUE : Boolean.FALSE );
    for int i=0; i<names.length; i++ ) {
      map.putnames[i], entry.getDisassembledState()[i] );
    }
    return map;
  }
}