AbstractEntityBeanCollection

2201 단어 jbossseam

          EntityBeans

package org.jboss.seam.contexts;

abstract class AbstractEntityBeanCollection implements Wrapper
{
   private transient boolean initialized; //     
   
   protected AbstractEntityBeanCollection()
   {
      initialized = true;
   }
   
   public final void activate()
   {    //if all passivatedentities not null && any verions check
      if ( isPassivatedEntitiesInitialized() && isAnyVersioned() )
      {
         activateAll();
         initialized = true;
      }
      else
      {
         initialized = false;
      }
   }

   public final Object getInstance()
   {     //     &&        
	     // false or true     true
      if ( !initialized && isPassivatedEntitiesInitialized() )
      {
         activateAll();
      }
      initialized = true;
      return getEntityCollection(); //             ,   SET LIST MAP
   }
   
   public final boolean passivate()
   {
      if ( PassivatedEntity.isTransactionRolledBackOrMarkedRollback() )//         
      {
         clearPassivatedEntities(); //set passivated entities null
      }
      else
      {
         passivateAll();
      }
      return true;
   }
   /**
    *           check
    */
   private boolean isAnyVersioned()
   {
      for ( PassivatedEntity passivatedEntity: getPassivatedEntities() )
      {
         if ( passivatedEntity!=null && passivatedEntity.isVersioned() ) return true;
      }
      return false;
   }
   
   protected abstract void activateAll();
   protected abstract void passivateAll();
   protected abstract Iterable<PassivatedEntity> getPassivatedEntities();
   protected abstract void clearPassivatedEntities();
   protected abstract boolean isPassivatedEntitiesInitialized();
   protected abstract Object getEntityCollection();

}



좋은 웹페이지 즐겨찾기