User: simone  
  Date: 00/10/16 16:25:23

  Added:       src/main/org/jboss/ejb/plugins NoPassivationCachePolicy.java
  Log:
  Cache that keeps all beans in memory
  
  Revision  Changes    Path
  1.1                  
jboss/src/main/org/jboss/ejb/plugins/NoPassivationCachePolicy.java
  
  Index: NoPassivationCachePolicy.java
  ===================================================================
  /*
   * jBoss, the OpenSource EJB server
   *
   * Distributable under GPL license.
   * See terms of license at gnu.org.
   */
  package org.jboss.ejb.plugins;
  
  import java.util.HashMap;
  import org.jboss.ejb.EnterpriseContext;
  import org.jboss.ejb.plugins.EnterpriseContextCachePolicy;
  
  /**
   * Implementation of a no passivation cache policy.
   *
   * @see EnterpriseInstanceCache
   * @author Simone Bordet ([EMAIL PROTECTED])
   * @version $Revision: 1.1 $
   */
  public class NoPassivationCachePolicy 
        implements EnterpriseContextCachePolicy
  {
        // Constants -----------------------------------------------------
  
        // Attributes ----------------------------------------------------
        private HashMap m_map;
  
  
        // Static --------------------------------------------------------
  
        // Constructors --------------------------------------------------
        /**
         * Creates a no passivation cache policy object given the instance 
         * cache that use this policy object, that btw is not used. 
         */
        public NoPassivationCachePolicy(EnterpriseInstanceCache eic) {}
  
        // Public --------------------------------------------------------
  
        // Z implementation ----------------------------------------------
        public void init() throws Exception 
        {
                m_map = new HashMap();
        }
           
        public void start() throws Exception {}
        
        public void stop() {}
        
        public void destroy() {}
  
        public Object get(Object key) 
        {
                if (key == null) 
                {
                        throw new IllegalArgumentException("Requesting an object using 
a null key");
                }
                EnterpriseContext ctx = null;
                synchronized (m_map) 
                {
                        ctx = (EnterpriseContext)m_map.get(key);
                }
                return ctx;
        }
        public Object peek(Object key) 
        {
                return get(key);
        }
        public void insert(Object key, Object ctx) 
        {
                if (ctx == null) {throw new IllegalArgumentException("Cannot insert a 
null object in the cache");}
                if (key == null) {throw new IllegalArgumentException("Cannot insert an 
object in the cache with null key");}
                
                synchronized (m_map) 
                {
                        Object obj = m_map.get(key);
                        if (obj == null) 
                        {
                                m_map.put(key, ctx);
                        }
                        else {throw new IllegalStateException("Attempt to put in the 
cache an object that is already there");}
                }
        }
        public void remove(Object key) 
        {
                if (key == null) {throw new IllegalArgumentException("Removing an 
object using a null key");}
                
                synchronized (m_map) 
                {
                        Object value = m_map.get(key);
                        if (value != null) 
                        {
                                m_map.remove(key);
                        }
                        else {throw new IllegalArgumentException("Cannot remove an 
object that isn't in the cache");}
                }
        }
        public void flush() {}
  
        // Y overrides ---------------------------------------------------
  
        // Package protected ---------------------------------------------
  
        // Protected -----------------------------------------------------
  
        // Private -------------------------------------------------------
  
        // Inner classes -------------------------------------------------
  }
  
  
  

Reply via email to