You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by as...@apache.org on 2009/06/11 16:11:42 UTC

svn commit: r783778 - /jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java

Author: asmuts
Date: Thu Jun 11 14:11:42 2009
New Revision: 783778

URL: http://svn.apache.org/viewvc?rev=783778&view=rev
Log:
made a method protected to make it testable

Modified:
    jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java

Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java?rev=783778&r1=783777&r2=783778&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java Thu Jun 11 14:11:42 2009
@@ -35,10 +35,8 @@
 import org.apache.jcs.engine.memory.MemoryCache;
 
 /**
- * A background memory shrinker. Memory problems and concurrent modification
- * exception caused by acting directly on an iterator of the underlying memory
- * cache should have been solved.
- *
+ * A background memory shrinker. Memory problems and concurrent modification exception caused by
+ * acting directly on an iterator of the underlying memory cache should have been solved.
  * @version $Id$
  */
 public class ShrinkerThread
@@ -56,14 +54,13 @@
     /** Maximum number of items to spool per run. Default is -1, or no limit. */
     private int maxSpoolPerRun;
 
-    /** Should we limit the number spooled per run.  If so, the maxSpoolPerRun will be used. */
+    /** Should we limit the number spooled per run. If so, the maxSpoolPerRun will be used. */
     private boolean spoolLimit = false;
 
     /**
      * Constructor for the ShrinkerThread object.
      * <p>
-     * @param cache
-     *            The MemoryCache which the new shrinker should watch.
+     * @param cache The MemoryCache which the new shrinker should watch.
      */
     public ShrinkerThread( MemoryCache cache )
     {
@@ -99,23 +96,19 @@
     }
 
     /**
-     * This method is called when the thread wakes up. Frist the method obtains
-     * an array of keys for the cache region. It iterates through the keys and
-     * tries to get the item from the cache without affecting the last access or
-     * position of the item. The item is checked for expiration, the expiration
-     * check has 3 parts:
+     * This method is called when the thread wakes up. Frist the method obtains an array of keys for
+     * the cache region. It iterates through the keys and tries to get the item from the cache
+     * without affecting the last access or position of the item. The item is checked for
+     * expiration, the expiration check has 3 parts:
      * <ol>
-     * <li>Has the cacheattributes.MaxMemoryIdleTimeSeconds defined for the
-     * region been exceeded? If so, the item should be move to disk.</li>
-     * <li>Has the item exceeded MaxLifeSeconds defined in the element
-     * attributes? If so, remove it.</li>
-     * <li>Has the item exceeded IdleTime defined in the element atributes? If
-     * so, remove it. If there are event listeners registered for the cache
-     * element, they will be called.</li>
+     * <li>Has the cacheattributes.MaxMemoryIdleTimeSeconds defined for the region been exceeded? If
+     * so, the item should be move to disk.</li> <li>Has the item exceeded MaxLifeSeconds defined in
+     * the element attributes? If so, remove it.</li> <li>Has the item exceeded IdleTime defined in
+     * the element atributes? If so, remove it. If there are event listeners registered for the
+     * cache element, they will be called.</li>
      * </ol>
-     *
-     * @todo Change element event handling to use the queue, then move the queue
-     *       to the region and access via the Cache.
+     * @todo Change element event handling to use the queue, then move the queue to the region and
+     *       access via the Cache.
      */
     protected void shrink()
     {
@@ -158,20 +151,8 @@
 
                 long now = System.currentTimeMillis();
 
-                // Useful, but overkill even for DEBUG since it is written for
-                // every element in memory
-                //
-                // if ( log.isDebugEnabled() )
-                // {
-                // log.debug( "IsEternal: " + attributes.getIsEternal() );
-                // log.debug( "MaxLifeSeconds: "
-                // + attributes.getMaxLifeSeconds() );
-                // log.debug( "CreateTime:" + attributes.getCreateTime() );
-                // }
-
                 // If the element is not eternal, check if it should be
                 // removed and remove it if so.
-
                 if ( !cacheElement.getElementAttributes().getIsEternal() )
                 {
                     remove = checkForRemoval( cacheElement, now );
@@ -189,7 +170,6 @@
                 {
                     if ( !spoolLimit || ( spoolCount < this.maxSpoolPerRun ) )
                     {
-
                         final long lastAccessTime = attributes.getLastAccessTime();
 
                         if ( lastAccessTime + maxMemoryIdleTime < now )
@@ -245,21 +225,18 @@
             // stop for now
             return;
         }
-
     }
 
     /**
-     * Check if either lifetime or idletime has expired for the provided event,
-     * and remove it from the cache if so.
-     *
-     * @param cacheElement
-     *            Element to check for expiration
-     * @param now
-     *            Time to consider expirations relative to
+     * Check if either lifetime or idletime has expired for the provided event, and remove it from
+     * the cache if so.
+     * <p>
+     * @param cacheElement Element to check for expiration
+     * @param now Time to consider expirations relative to. This makes it easier to test.
      * @return true if the element should be removed, or false.
      * @throws IOException
      */
-    private boolean checkForRemoval( ICacheElement cacheElement, long now )
+    protected boolean checkForRemoval( ICacheElement cacheElement, long now )
         throws IOException
     {
         IElementAttributes attributes = cacheElement.getElementAttributes();
@@ -300,15 +277,11 @@
     }
 
     /**
-     * Handle any events registered for the given element of the given event
-     * type.
-     *
-     * @param cacheElement
-     *            Element to handle events for
-     * @param eventType
-     *            Type of event to handle
-     * @throws IOException
-     *             If an error occurs
+     * Handle any events registered for the given element of the given event type.
+     * <p>
+     * @param cacheElement Element to handle events for
+     * @param eventType Type of event to handle
+     * @throws IOException If an error occurs
      */
     private void handleElementEvents( ICacheElement cacheElement, int eventType )
         throws IOException



---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org