You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by jt...@apache.org on 2002/02/13 20:14:00 UTC

cvs commit: jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/group GroupCache.java

jtaylor     02/02/13 11:14:00

  Modified:    .        build.xml default.properties deps.list
               src/java/org/apache/stratum/jcs/engine Attributes.java
                        CompositeCacheAttributes.java
               src/java/org/apache/stratum/jcs/engine/control Cache.java
               src/java/org/apache/stratum/jcs/engine/group GroupCache.java
  Log:
  Converted Cache and GroupCache to use commons-logging wrapper to log4j. Also,
  completed removal of 'debug' variable and p() method for those classes.
  
  Many of the debug calls that were using that pattern ( and remain as calls to
  log.isDebugEnabled / log.debug ) are just simple tracing calls. Specifically
  method entries ( with params ) and exits. I believe the correct next step is
  to remove those entirely and use aspectj to introduce tracing instead. This
  will clean up the code signifigantly, and will have at least the performance
  of using a static variable ( possibly better since instead of depending on the
  compiler to optomize out those blocks, the code is never introduced ).
  
  I also cleaned up the toString methods of a few classes so they print on one
  line, better for logging. I removed one place where the entire cached data
  object is written to the log, and instead have it log the type of the object.
  I was caching some very large strings and other data objects, and having the
  entire toString output in the logs made them much less clear. This is
  especially a problem since some of my data objects have long and meaningfull
  toString methods for use in velocity templates.
  
  There is still a lot of style cleaning to be done in these classes, but I
  wanted to get something in to give Aaron an example of how to use
  commons-logging rather than log4j directly.
  
  Revision  Changes    Path
  1.17      +1 -0      jakarta-turbine-stratum/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/build.xml,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- build.xml	12 Feb 2002 21:09:57 -0000	1.16
  +++ build.xml	13 Feb 2002 19:13:59 -0000	1.17
  @@ -16,6 +16,7 @@
       <pathelement location="${commons-beanutils.jar}"/>
       <pathelement location="${commons-collections.jar}"/>
       <pathelement location="${commons-util.jar}"/>
  +    <pathelement location="${commons-logging.jar}"/>
       <pathelement location="${jgl.jar}"/>
       <pathelement location="${jetty.jar}"/>
       <pathelement location="${log4j.jar}"/>
  
  
  
  1.14      +1 -0      jakarta-turbine-stratum/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/default.properties,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- default.properties	13 Feb 2002 04:45:10 -0000	1.13
  +++ default.properties	13 Feb 2002 19:13:59 -0000	1.14
  @@ -33,6 +33,7 @@
   commons-beanutils.jar = ${lib.repo}/commons-beanutils.jar
   commons-collections.jar = ${lib.repo}/commons-collections.jar
   commons-util.jar = ${lib.repo}/commons-util-0.1-dev.jar
  +commons-logging.jar = ${lib.repo}/commons-logging.jar
   dom4j.jar = ${lib.repo}/dom4j-1.1.jar
   junit.jar = ${lib.repo}/junit-3.7.jar
   
  
  
  
  1.7       +1 -0      jakarta-turbine-stratum/deps.list
  
  Index: deps.list
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/deps.list,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- deps.list	13 Feb 2002 19:07:51 -0000	1.6
  +++ deps.list	13 Feb 2002 19:13:59 -0000	1.7
  @@ -3,6 +3,7 @@
   commons-collections.jar
   commons-logging.jar
   commons-util-0.1-dev.jar
  +commons-logging.jar
   concurrent.jar
   dom4j-1.1.jar
   junit-3.7.jar
  
  
  
  1.5       +11 -7     jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/Attributes.java
  
  Index: Attributes.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/Attributes.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Attributes.java	19 Jan 2002 06:27:13 -0000	1.4
  +++ Attributes.java	13 Feb 2002 19:13:59 -0000	1.5
  @@ -431,18 +431,22 @@
       public String toString()
       {
           StringBuffer dump = new StringBuffer();
  -        dump.append( "\n IS_LATERAL = " + IS_LATERAL + "\n" );
  +        
  +        dump.append( "[ IS_LATERAL = " ).append( IS_LATERAL  )
  +            .append( ", IS_SPOOL = " ).append( IS_SPOOL )
  +            .append( ", IS_REMOTE = " ).append( IS_REMOTE )
  +            .append( ", IS_ETERNAL = " ).append( IS_ETERNAL )
  +            .append( ", ttl = " ).append( String.valueOf( ttl ) )
  +            .append( ", createTime = " ).append( String.valueOf( createTime ) )
  +            .append( " ]" );
  +        
  +        return dump.toString();
  +        
           //dump.append( " IS_NOFLUSH = " + IS_NOFLUSH + "\n");
           //dump.append( " IS_REPLY = " + IS_REPLY + "\n");
           //dump.append( " IS_SYNCHRONIZE = " + IS_SYNCHRONIZE + "\n");
  -        dump.append( " IS_SPOOL = " + IS_SPOOL + "\n" );
           //dump.append( " IS_GROUP_TTL_DESTROY = " + IS_GROUP_TTL_DESTROY + "\n");
           //dump.append( " IS_ORIGINAL = " + IS_ORIGINAL + "\n");
  -        dump.append( " IS_REMOTE = " + IS_REMOTE + "\n" );
  -        dump.append( " IS_ETERNAL = " + IS_ETERNAL + "\n" );
  -        dump.append( " ttl = " + String.valueOf( ttl ) + "\n" );
  -        dump.append( " createTime = " + String.valueOf( createTime ) + "\n" );
  -        return dump.toString();
       }
   
   
  
  
  
  1.4       +10 -7     jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/CompositeCacheAttributes.java
  
  Index: CompositeCacheAttributes.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/CompositeCacheAttributes.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CompositeCacheAttributes.java	15 Jan 2002 21:33:33 -0000	1.3
  +++ CompositeCacheAttributes.java	13 Feb 2002 19:13:59 -0000	1.4
  @@ -208,13 +208,16 @@
        */
       public String toString()
       {
  -        StringBuffer info = new StringBuffer();
  -        info.append( "\n" );
  -        info.append( "useLateral = " + useLateral + "\n" );
  -        info.append( "useRemote = " + useRemote + "\n" );
  -        info.append( "useDisk = " + useDisk + "\n" );
  -        info.append( "maxObjs = " + maxObjs + "\n" );
  -        return info.toString();
  +        StringBuffer dump = new StringBuffer();
  +        
  +        dump.append( "[ " )
  +            .append( "useLateral = " ).append( useLateral )
  +            .append( ", useRemote = " ).append( useRemote )
  +            .append( ", useDisk = " ).append( useDisk )
  +            .append( ", maxObjs = " ).append( maxObjs )
  +            .append( " ]" );
  +            
  +        return dump.toString();
       }
   
   }
  
  
  
  1.12      +56 -91    jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/control/Cache.java
  
  Index: Cache.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/control/Cache.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Cache.java	13 Feb 2002 04:45:05 -0000	1.11
  +++ Cache.java	13 Feb 2002 19:13:59 -0000	1.12
  @@ -77,8 +77,8 @@
   import org.apache.stratum.jcs.engine.memory.behavior.IMemoryCache;
   import org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache;
   
  -import org.apache.log4j.Category;
  -import org.apache.log4j.Priority;
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogSource;
   
   //////////////////////////////////////////////////////
   /**
  @@ -88,17 +88,11 @@
    *@author     asmuts
    *@created    January 15, 2002
    */
  -public class Cache implements ICacheHub, ICache, ICompositeCache, Serializable
  +public class Cache 
  +    implements ICacheHub, ICache, ICompositeCache, Serializable
   {
  -
  -    /**
  -     *  Development debugging parameters. Calls should be removed by the
  -     *  compiler. TODO: limit and replace with a less intrusive logging at a
  -     *  later stage.
  -     */
  -    private final static boolean debugcmd = false;//true;
  -    private final static boolean debugR = false;//true;
  -
  +    private static final Log log = LogSource.getInstance( Cache.class );
  +    
       /**
        *  Description of the Field
        */
  @@ -125,11 +119,6 @@
   
       private String source_id = "org.apache.stratum.jcs.engine.control.Cache";
   
  -    /**
  -     *  log4j
  -     */
  -    protected final Category log;
  -
       // statistics
       private static int numInstances;
       private int ramHit;
  @@ -180,26 +169,19 @@
           this.attr = attr;
           this.cacheAttr = cattr;
   
  -        log = Category.getInstance( Cache.class );
  -
  -        if ( debugcmd )
  -        {
  -            log.setPriority( Priority.DEBUG );
  -        }
  -
           createMemoryCache( cattr );
   
           if ( log.isDebugEnabled() )
           {
  -            log.debug( "******************* Constructing cache " + cacheName );
  -        }
  -        if ( debugcmd )
  +            log.debug( "Constructed cache with name " + cacheName + 
  +                       " and cache attributes: " + cattr );
  +        } 
  +        else if ( log.isInfoEnabled() )
           {
  -            p( "contructed cache " + cacheName + " cattr = " + cattr );
  +            log.info( "Constructed cache with name: " + cacheName );
           }
       }
   
  -
       //////////////////////////////////////////////////////////////////////////////
       /**
        *  Description of the Method
  @@ -252,20 +234,25 @@
           //if ( this.get( key ) != null ) {
           //  throw new ObjectExistsException( "Object exists for key " + key );
           //}
  +        
           if ( key == null || val == null )
           {
  -            NullPointerException ex = new NullPointerException( "key=" + key + " and val=" + val
  -                 + " must not be null." );
  -            log.error( ex );
  -            throw ex;
  +            NullPointerException npe = 
  +                new NullPointerException( "key=" + key + " and val=" + val + 
  +                                          " must not be null." );
  +            
  +            log.error( "Key or value was null. Exception will be thrown", npe );
  +            
  +            throw npe;
           }
  +        
           try
           {
               updateCaches( key, val, attr );
           }
           catch ( IOException ioe )
           {
  -            log.error( ioe );
  +            log.error( "Failed updating caches", ioe );
           }
           return;
       }
  @@ -283,9 +270,11 @@
       protected synchronized void updateCaches( Serializable key, Serializable val, Attributes attr )
           throws IOException
       {
  -        if ( debugcmd )
  +        // FIXME: Replace with tracing aspects
  +        
  +        if ( log.isDebugEnabled() )
           {
  -            p( "updateCaches(key,val,attr) > ICache.INCLUDE_REMOTE_CACHE= " + ICache.INCLUDE_REMOTE_CACHE + " key = " + key );
  +            log.debug( "updateCaches(key,val,attr) > ICache.INCLUDE_REMOTE_CACHE= " + ICache.INCLUDE_REMOTE_CACHE + " key = " + key );
           }
   
           updateCaches( key, val, attr, ICache.INCLUDE_REMOTE_CACHE );
  @@ -306,10 +295,11 @@
       protected synchronized void updateCaches( Serializable key, Serializable val, Attributes attr, boolean updateRemoteCache )
           throws IOException
       {
  -
  -        if ( debugcmd )
  +        // FIXME: Replace with tracing aspects
  +        
  +        if ( log.isDebugEnabled() )
           {
  -            p( "updateCaches(key,val,attr,updateRemoteCache) > updateRemoteCache= " + updateRemoteCache + " key = " + key );
  +            log.debug( "updateCaches(key,val,attr,updateRemoteCache) > updateRemoteCache= " + updateRemoteCache + " key = " + key );
           }
   
           CacheElement ce = new CacheElement( cacheName, key, val );
  @@ -328,9 +318,11 @@
       public synchronized void update( ICacheElement ce )
           throws IOException
       {
  -        if ( debugcmd )
  +        // FIXME: Replace with tracing aspects
  +        
  +        if ( log.isDebugEnabled() )
           {
  -            p( "update(ce) > ICache.INCLUDE_REMOTE_CACHE= " + ICache.INCLUDE_REMOTE_CACHE + " key = " + ce.getKey() );
  +            log.debug( "update(ce) > ICache.INCLUDE_REMOTE_CACHE= " + ICache.INCLUDE_REMOTE_CACHE + " key = " + ce.getKey() );
           }
           update( ce, ICache.INCLUDE_REMOTE_CACHE );
       }
  @@ -367,24 +359,20 @@
               throw new IllegalArgumentException(
                   "key must not end with " + NAME_COMPONENT_DELIMITER + " for a put operation" );
           }
  +        
  +        // FIXME: Replace with tracing aspects
   
           if ( log.isDebugEnabled() )
  -        {
  -            StringBuffer params = new StringBuffer();
  -            params.append( "Cache.updateExclude(ce,updateRemoteCache) > updateRemoteCache = " + updateRemoteCache + " key=" + ce.getKey() + ", val=" + ce.getVal() + ", " + ce.getAttributes().toString() );
  -            log.debug( params.toString() );
  -        }
  -        if ( debugcmd )
  -        {
  -            p( "updateExclude(ce,updadateRemoteCache) > update updateRemoteCache = " + updateRemoteCache + " key = " + ce.getKey() + ", updateRemoteCache = " + updateRemoteCache );
  +        {                        
  +            log.debug( "Cache.updateExclude(ce,updateRemoteCache) > updateRemoteCache = " + updateRemoteCache + " key=" + ce.getKey() + ", value type=" + ce.getVal().getClass().getName() + ", " + ce.getAttributes().toString() );
   
               if ( updateRemoteCache == ICache.INCLUDE_REMOTE_CACHE )
               {
  -                p( "updateRemoteCache is TRUE " + updateRemoteCache );
  +                log.debug( "updateRemoteCache is TRUE " + updateRemoteCache );
               }
               else
               {
  -                p( "updateRemoteCache is FALSE " + updateRemoteCache );
  +                log.debug( "updateRemoteCache is FALSE " + updateRemoteCache );
               }
           }
   
  @@ -404,10 +392,10 @@
           for ( int i = 0; i < auxCaches.length; i++ )
           {
               ICache aux = auxCaches[i];
  -
  -            if ( debugcmd )
  +            
  +            if ( log.isDebugEnabled() )
               {
  -                p( "aux.getCacheType() = " + aux.getCacheType() );
  +                log.debug( "aux.getCacheType() = " + aux.getCacheType() );
               }
   
               // SEND TO REMOTE STORE
  @@ -443,10 +431,10 @@
               {
                   // lateral can't do the checking since it is dependent on the cache region
                   // restrictions
  -                if ( debugcmd )
  +                if ( log.isDebugEnabled() )
                   {
  -                    p( "lateralcache in aux list" );
  -                    p( "cattr " + cacheAttr.getUseLateral() );
  +                    log.debug( "lateralcache in aux list: cattr " + 
  +                               cacheAttr.getUseLateral() );
                   }
                   if ( cacheAttr.getUseLateral() && ce.getAttributes().IS_LATERAL && updateRemoteCache )
                   {
  @@ -569,10 +557,9 @@
        */
       public Serializable get( Serializable key, boolean container, boolean invocation )
       {
  -
  -        if ( debugcmd )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "in cache get(key,container)" );
  +            log.debug( "in cache get(key,container)" );
           }
   
           ICacheElement ce = null;
  @@ -603,9 +590,9 @@
   
                           if ( ( invocation == this.LOCAL_INVOKATION ) || aux.getCacheType() == aux.DISK_CACHE )
                           {
  -                            if ( debugcmd )
  +                            if ( log.isDebugEnabled() )
                               {
  -                                p( "get(key,container,invocation) > in local block, aux.getCacheType() = " + aux.getCacheType() );
  +                                log.debug( "get(key,container,invocation) > in local block, aux.getCacheType() = " + aux.getCacheType() );
                               }
   
                               try
  @@ -618,9 +605,9 @@
                               }
                           }
   
  -                        if ( debugcmd )
  +                        if ( log.isDebugEnabled() )
                           {
  -                            p( "ce = " + ce );
  +                            log.debug( "ce = " + ce );
                           }
   
                           if ( ce != null )
  @@ -629,12 +616,6 @@
                               // Item found in one of the auxiliary caches.
                               auxHit[i]++;
   
  -                            if ( debugcmd )
  -                            {
  -                                p( cacheName + " -- AUX[" + i + "]-HIT for " + key );
  -                                p( "ce.getKey() = " + ce.getKey() );
  -                                p( "ce.getVal() = " + ce.getVal() );
  -                            }
                               if ( log.isDebugEnabled() )
                               {
                                   log.debug( cacheName + " -- AUX[" + i + "]-HIT for " + key );
  @@ -698,15 +679,11 @@
               // Don't we also want to remove it from the cache ?
               if ( !ce.getAttributes().IS_ETERNAL && ( ( System.currentTimeMillis() - ce.getAttributes().createTime ) > ( ce.getAttributes().ttl * 1000 ) ) )
               {
  -                // Item expired.
  -                //if ( log.logLevel >= log.INFO )
  -                //{
  -                log.info( ce.getKey() + " expired" );
  -                //}
  -                if ( debugcmd )
  +                if ( log.isInfoEnabled() )
                   {
  -                    p( ce.getKey() + " expired" );
  -                }
  +                    log.info( ce.getKey() + " expired" );
  +                }               
  +
                   this.remove( key );
                   //throw new ObjectNotFoundException( key + " expired from cache" );
                   return null;
  @@ -954,7 +931,7 @@
                   }
               }
           }
  -        p( "Disposed of cache " + cacheName );
  +
           log.warn( "Called close for " + cacheName );
   
       }
  @@ -1177,17 +1154,5 @@
   //  public void dumpCacheEntries() {
   //    memCache.dumpCacheEntries();
   //  }
  -
  -    ///////////////////////////////////////////////
  -    /**
  -     *  Description of the Method
  -     *
  -     *@param  s  Description of the Parameter
  -     */
  -    public void p( String s )
  -    {
  -        //System.out.println( "Cache: " + s );
  -        log.debug( "Cache: " + s );
  -    }
   
   }
  
  
  
  1.9       +95 -133   jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/group/GroupCache.java
  
  Index: GroupCache.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-stratum/src/java/org/apache/stratum/jcs/engine/group/GroupCache.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- GroupCache.java	13 Feb 2002 04:45:05 -0000	1.8
  +++ GroupCache.java	13 Feb 2002 19:13:59 -0000	1.9
  @@ -79,6 +79,9 @@
   
   import org.apache.stratum.jcs.utils.reuse.ReadWriteLockManager;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogSource;
  +
   /**
    *  Group cache is basically a composite cache with the additional capability of
    *  providing automatic and safe attribute name list update for each
  @@ -95,14 +98,8 @@
    */
   public class GroupCache extends Cache implements ICompositeCache
   {
  -    //////////////// debug MUST BE SET TO false in production! ///////////////////
  -    /**
  -     * Development debugging parameters.  Calls should be removed by the compiler.
  -     * TODO: limit and replace with a less intrusive logging at a later stage.
  -     */
  -    private final static boolean debug =  false;//true;
  -    private final static boolean debuggan = false;//true;
  -
  +    private static final Log log = LogSource.getInstance( GroupCache.class );
  +    
       /**
        * Manages locking for group item manipulation.
        */
  @@ -150,9 +147,10 @@
       public GroupCache( String cacheName, ICache[] auxCaches, ICompositeCacheAttributes cattr, Attributes attr )
       {
           super( cacheName, auxCaches, cattr, attr );
  -        if ( debug )
  +                
  +        if ( log.isDebugEnabled() )
           {
  -            p( "constructed groupcache " + cacheName + " from super" );
  +            log.debug( "constructed groupcache " + cacheName + " from super" );
           }
           //ICompositeCache systemGroupIdCache = (ICompositeCache)systemCaches.get( "groupIdCache" );
       }
  @@ -171,9 +169,9 @@
       public GroupCache( String cacheName, ICache[] auxCaches, ICompositeCacheAttributes cattr, Attributes attr, ICompositeCache systemGroupIdCache )
       {
           super( cacheName, auxCaches, cattr, attr );
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "constructed (2) groupcache " + cacheName + " from super" );
  +            log.debug( "constructed (2) groupcache " + cacheName + " from super" );
           }
           this.systemGroupIdCache = systemGroupIdCache;
       }
  @@ -227,14 +225,14 @@
           {
               return getGI( ( GroupId ) key, container );
           }
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( this.getCacheName() + " getting " + key + " from super " );
  +            log.debug( this.getCacheName() + " getting " + key + " from super " );
               if ( invocation == ICache.LOCAL_INVOKATION )
               {
  -              p( "invokation is LOCAL" );
  +              log.debug( "invokation is LOCAL" );
               } else {
  -              p( "invokation is NOT Local" );
  +              log.debug( "invokation is NOT Local" );
               }
           }
   
  @@ -266,13 +264,13 @@
        */
       public Serializable getGAN( GroupAttrName key, boolean container, boolean invocation )
       {
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
               if ( invocation == ICache.LOCAL_INVOKATION )
               {
  -              p( "invokation is LOCAL" );
  +              log.debug( "invokation is LOCAL" );
               } else {
  -              p( "invokation is NOT Local" );
  +              log.debug( "invokation is NOT Local" );
               }
           }
   
  @@ -316,14 +314,14 @@
        */
       public Serializable getGI( GroupId gid, boolean container, boolean invocation )
       {
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "getGi(gid,container,invocation)" );
  +            log.debug( "getGi(gid,container,invocation)" );
               if ( invocation == ICache.LOCAL_INVOKATION )
               {
  -              p( "invocation is LOCAL" );
  +              log.debug( "invocation is LOCAL" );
               } else {
  -              p( "invocation is NOT Local" );
  +              log.debug( "invocation is NOT Local" );
               }
           }
           Object obj = null;
  @@ -332,9 +330,9 @@
           {
               //obj = super.get(gid.key, container);
               obj = systemGroupIdCache.get( gid.key, container, invocation );
  -            if ( debug )
  +            if ( log.isDebugEnabled() )
               {
  -                p( "getGi(gid,container,invocation) > got obj in getGi " + obj );
  +                log.debug( "getGi(gid,container,invocation) > got obj in getGi " + obj );
               }
           }
           catch ( IOException ioeg )
  @@ -360,21 +358,16 @@
           {
               locker.readLock( id );
           }
  -        catch ( InterruptedException ex )
  +        catch ( InterruptedException e )
           {
  -            // should never happen.
  -            ex.printStackTrace();
  -            //////////////// debug MUST BE SET TO false in production! ///////////////////
  -            if ( debug )
  -            {
  -                try
  -                {
  -                    System.in.read();
  -                }
  -                catch ( IOException ignore )
  -                {}
  -            }
  -            throw new IllegalStateException( ex.getMessage() );
  +            // This previously would wait for console input before 
  +            // continuing if the debug flag was set. I consider this
  +            // a BAD IDEA since it could introduce signifigant 
  +            // confusion. ( There are other ways to accomplish this,
  +            // introduction or using a debugger (breakpoints) come to
  +            // mind. [james@jamestaylor.org]
  +            
  +            log.error( "Was interrupted while acquiring read lock", e );
           }
       }
   
  @@ -391,21 +384,11 @@
           {
               locker.writeLock( id );
           }
  -        catch ( InterruptedException ex )
  +        catch ( InterruptedException e )
           {
  -            // should never happen.
  -            ex.printStackTrace();
  -            //////////////// debug MUST BE SET TO false in production! ///////////////////
  -            if ( debug )
  -            {
  -                try
  -                {
  -                    System.in.read();
  -                }
  -                catch ( IOException ignore )
  -                {}
  -            }
  -            throw new IllegalStateException( ex.getMessage() );
  +            // See note in readLock()
  +            
  +            log.error( "Was interrupted while acquiring read lock", e );
           }
       }
   
  @@ -425,9 +408,9 @@
           {
               try
               {
  -                if ( debug )
  +                if ( log.isDebugEnabled() )
                   {
  -                    p( "putting via putGAN((GroupAttrName)key, val, attr) method" );
  +                    log.debug( "putting via putGAN((GroupAttrName)key, val, attr) method" );
                   }
                   putGAN( ( GroupAttrName ) key, val, attr );
               }
  @@ -435,9 +418,9 @@
               {}
               return;
           }
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "put(key,val,attr) > updating " + key + " via super method, attr.IS_REMOTE = " + attr.IS_REMOTE );
  +            log.debug( "put(key,val,attr) > updating " + key + " via super method, attr.IS_REMOTE = " + attr.IS_REMOTE );
           }
   
           // NOT GROUP RELATED
  @@ -471,9 +454,9 @@
           {
               try
               {
  -                if ( debug )
  +                if ( log.isDebugEnabled() )
                   {
  -                    p( "putting via putGAN((GroupAttrName)key, val) method" );
  +                    log.debug( "putting via putGAN((GroupAttrName)key, val) method" );
                   }
                   putGAN( ( GroupAttrName ) key, val );
               }
  @@ -481,9 +464,10 @@
               {}
               return;
           }
  -        if ( debug )
  +        
  +        if ( log.isDebugEnabled() )
           {
  -            p( "put(key,value) -- updating " + key + " via super method" );
  +            log.debug( "put(key,value) -- updating " + key + " via super method" );
           }
   
           //super.put(key, val);
  @@ -518,9 +502,9 @@
           {
               try
               {
  -                if ( debug )
  +                if ( log.isDebugEnabled() )
                   {
  -                    p( "update(ce) > putting via putGAN((GroupAttrName)key, val) method" );
  +                    log.debug( "update(ce) > putting via putGAN((GroupAttrName)key, val) method" );
                   }
                   putGAN( ( GroupAttrName )ce.getKey(), ce.getVal() );
               }
  @@ -528,9 +512,9 @@
               {}
               return;
           }
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "update(ce) > updating " + ce.getKey() + " via super method" );
  +            log.debug( "update(ce) > updating " + ce.getKey() + " via super method" );
           }
   
           try
  @@ -564,14 +548,14 @@
           {
               try
               {
  -                if ( debug )
  +                if ( log.isDebugEnabled() )
                   {
  -                    p( "update(ce,invocation) >putting via ga method" );
  +                    log.debug( "update(ce,invocation) >putting via ga method" );
                       if ( invocation == ICache.LOCAL_INVOKATION )
                       {
  -                      p( "invocation is LOCAL" );
  +                      log.debug( "invocation is LOCAL" );
                       } else {
  -                      p( "invocation is NOT Local" );
  +                      log.debug( "invocation is NOT Local" );
                       }
                   }
                   Attributes attrE = ( Attributes ) this.attr.copy();
  @@ -581,9 +565,9 @@
               {}
               return;
           }
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "update(ce,invocation) > updating " + key + " via super method" );
  +            log.debug( "update(ce,invocation) > updating " + key + " via super method" );
           }
   
           // TODO: what about id? not possible here?
  @@ -624,9 +608,9 @@
       public void putGAN( GroupAttrName key, Serializable val )
           throws IOException
       {
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "in putGAN(GroupAttrName key, Serializable val) method" );
  +            log.debug( "in putGAN(GroupAttrName key, Serializable val) method" );
           }
           if ( key == null || val == null )
           {
  @@ -656,10 +640,8 @@
       private void putGAN( GroupAttrName key, Serializable val, Attributes attrE )
           throws IOException
       {
  -        if ( debug )
  -        {
  -            p( "in putGAN( gan,val,attr) " );
  -        }
  +        log.debug( "in putGAN( gan,val,attr) " );
  +
           putGAN( key, val, attrE, ICache.LOCAL_INVOKATION );
       }
   
  @@ -678,15 +660,15 @@
           throws IOException
       {
   
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
               //p( "in putGAN( gan,val,attr,boolean updateRemote) " );
  -            p( "in putGAN( gan,val,attr,boolean invocation) " );
  +            log.debug( "in putGAN( gan,val,attr,boolean invocation) " );
               if ( invocation == ICache.LOCAL_INVOKATION )
               {
  -              p( "invocation is LOCAL" );
  +              log.debug( "invocation is LOCAL" );
               } else {
  -              p( "invocation is NOT Local" );
  +              log.debug( "invocation is NOT Local" );
               }
           }
   
  @@ -699,10 +681,12 @@
               //updateCaches(key, val, attrE, INCLUDE_REMOTE_CACHE);
               CacheElement ce = new CacheElement( this.getCacheName(), key, val );
               ce.setAttributes( attrE );
  -            if ( debuggan )
  +            
  +            if ( log.isDebugEnabled() )
               {
  -                p( "putGAN( gan,val,attr,boolean invocation) > updating group attribute via super" );
  +                log.debug( "putGAN( gan,val,attr,boolean invocation) > updating group attribute via super" );
               }
  +            
               // SEND THE ELEMENT IF THE INVOCATION WAS LOCAL
               // decide what to do with this item
               boolean updateRemote = false;
  @@ -725,9 +709,9 @@
               }
               attrNameSet.add( key.attrName );
   
  -            if ( debuggan )
  +            if ( log.isDebugEnabled() )
               {
  -                p( "putGAN( gan,val,attr,boolean invocation) > attrNameSet.size()  = " + attrNameSet.size() );
  +                log.debug( "putGAN( gan,val,attr,boolean invocation) > attrNameSet.size()  = " + attrNameSet.size() );
               }
   
               CacheElement ceID = new CacheElement( this.getCacheName(), groupId.key, attrNameSet );
  @@ -814,10 +798,8 @@
        */
       public boolean remove( Serializable key )
       {
  -        if ( debug )
  -        {
  -            p( "in basic remove" );
  -        }
  +        log.debug( "in basic remove" );
  +        
           // if expired super will call remove and we can't have a lock
           // need a third method
           return remove( key, ICache.LOCAL_INVOKATION );
  @@ -839,14 +821,14 @@
           // THIS IS A GROUP ELEMENT
           if ( key instanceof GroupAttrName )
           {
  -            if ( debug )
  +            if ( log.isDebugEnabled() )
               {
  -                p( "calling removeGAN" );
  +                log.debug( "calling removeGAN" );
                   if ( invocation == ICache.LOCAL_INVOKATION )
                   {
  -                  p( "invokation is LOCAL" );
  +                  log.debug( "invokation is LOCAL" );
                   } else {
  -                  p( "invokation is NOT Local" );
  +                  log.debug( "invokation is NOT Local" );
                   }
               }
               return removeGAN( ( GroupAttrName ) key, invocation );
  @@ -855,28 +837,28 @@
           // THIS IS A GROUP ID
           if ( key instanceof GroupId )
           {
  -            if ( debug )
  +            if ( log.isDebugEnabled() )
               {
  -                p( "call removeGI" );
  +                log.debug( "call removeGI" );
                   if ( invocation == ICache.LOCAL_INVOKATION )
                   {
  -                  p( "invokation is LOCAL" );
  +                  log.debug( "invokation is LOCAL" );
                   } else {
  -                  p( "invokation is NOT Local" );
  +                  log.debug( "invokation is NOT Local" );
                   }
               }
               return removeGI( ( GroupId ) key, invocation );
           }
   
           // NOT GROUP RELATED
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "call super.remove, " + invocation + " for " + key );
  +            log.debug( "call super.remove, " + invocation + " for " + key );
               if ( invocation == ICache.LOCAL_INVOKATION )
               {
  -              p( "invokation is LOCAL" );
  +              log.debug( "invokation is LOCAL" );
               } else {
  -              p( "invokation is NOT Local" );
  +              log.debug( "invokation is NOT Local" );
               }
           }
           return super.remove( key, invocation );
  @@ -903,14 +885,14 @@
       {
   
           boolean ret;
  -        if ( debug )
  +        if ( log.isDebugEnabled() )
           {
  -            p( "in removeGAN" );
  +            log.debug( "in removeGAN" );
               if ( invocation == ICache.LOCAL_INVOKATION )
               {
  -              p( "invocation is LOCAL" );
  +              log.debug( "invocation is LOCAL" );
               } else {
  -              p( "invocation is NOT Local" );
  +              log.debug( "invocation is NOT Local" );
               }
   
           }
  @@ -995,9 +977,9 @@
   
                           CacheElement ceID = new CacheElement( this.getCacheName(), groupId.key, attrNameSet );
                           ceID.setAttributes( ce.attr );
  -                        if ( debug )
  +                        if ( log.isDebugEnabled() )
                           {
  -                            p( "updateGroupAttrNameSet((groupAttrname)key,invocation,remove) > calling systemGroupIdCache.update( ceID, EXCLUDE_REMOTE_CACHE )" );
  +                            log.debug( "updateGroupAttrNameSet((groupAttrname)key,invocation,remove) > calling systemGroupIdCache.update( ceID, EXCLUDE_REMOTE_CACHE )" );
                           }
                           // ALWAYS EXCLUDE THE REMOTE CACHE
                           // TODO: should this be configurable? no
  @@ -1016,9 +998,9 @@
                       //removeGI(groupId, invokation, true );
                       try
                       {
  -                        if ( debug )
  +                        if ( log.isDebugEnabled() )
                           {
  -                            p( "calling systemGroupIdCache.remove( groupId.key, EXCLUDE_REMOTE_CACHE )" );
  +                            log.debug( "calling systemGroupIdCache.remove( groupId.key, EXCLUDE_REMOTE_CACHE )" );
                           }
                           // unlike insertion, removal should go remote if locally invoked
                           boolean updateRemote = false;
  @@ -1048,10 +1030,8 @@
        */
       public void removeGI( GroupId groupId )
       {
  -        if ( debug )
  -        {
  -            p( "removeGI" );
  -        }
  +        log.debug( "removeGI" );
  +        
           removeGI( groupId, ICache.LOCAL_INVOKATION );
       }
   
  @@ -1089,10 +1069,8 @@
           // problem with removing expired while getting!
           skipLock = false;
   
  -        if ( debug )
  -        {
  -            p( "in removeGI" );
  -        }
  +        log.debug( "in removeGI" );
  +
           if ( !skipLock )
           {
               writeLock( groupId.key );
  @@ -1145,21 +1123,5 @@
           }
           return ce.getAttributes();
       }
  -
  -
  -    ////////////////////////////////////////
  -    /**
  -     *  Easy method for printing to system out for
  -     *  development debugging.  All of these should be
  -     *  removed by the compiler since they are in
  -     *  if blocks controlled by a static final variable.
  -     *
  -     *@param  s  Description of the Parameter
  -     */
  -    public void p( String s )
  -    {
  -        System.out.println( "GroupCache: " + s );
  -    }
  -
   }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>