bloritsch    2002/09/25 08:47:58

  Modified:    event/src/java/org/apache/excalibur/mpool FixedSizePool.java
                        VariableSizePool.java BlockingFixedSizePool.java
  Added:       event/src/java/org/apache/excalibur/mpool PoolUtil.java
  Log:
  Add support for resetting objects (with the Recycle method)
  
  Revision  Changes    Path
  1.6       +5 -2      
jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/FixedSizePool.java
  
  Index: FixedSizePool.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/FixedSizePool.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FixedSizePool.java        13 Aug 2002 08:15:20 -0000      1.5
  +++ FixedSizePool.java        25 Sep 2002 15:47:57 -0000      1.6
  @@ -54,6 +54,9 @@
   import org.apache.avalon.excalibur.collections.FixedSizeBuffer;
   import org.apache.avalon.framework.activity.Disposable;
   
  +import java.lang.reflect.Method;
  +import java.lang.reflect.Modifier;
  +
   /**
    * This is an <code>Pool</code> that caches Poolable objects for reuse.
    * Please note that this pool offers no resource limiting whatsoever.
  @@ -115,7 +118,7 @@
           {
               synchronized( m_buffer )
               {
  -                m_buffer.add( object );
  +                m_buffer.add( PoolUtil.reset( object ) );
                   m_buffer.notifyAll();
               }
           }
  
  
  
  1.3       +2 -2      
jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/VariableSizePool.java
  
  Index: VariableSizePool.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/VariableSizePool.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- VariableSizePool.java     13 Aug 2002 08:15:20 -0000      1.2
  +++ VariableSizePool.java     25 Sep 2002 15:47:57 -0000      1.3
  @@ -145,7 +145,7 @@
           {
               synchronized( m_buffer )
               {
  -                m_buffer.add( pooledObject );
  +                m_buffer.add( PoolUtil.reset( pooledObject ) );
               }
           }
       }
  
  
  
  1.4       +2 -3      
jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/BlockingFixedSizePool.java
  
  Index: BlockingFixedSizePool.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/BlockingFixedSizePool.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BlockingFixedSizePool.java        14 Aug 2002 17:04:11 -0000      1.3
  +++ BlockingFixedSizePool.java        25 Sep 2002 15:47:57 -0000      1.4
  @@ -49,7 +49,6 @@
   */
   package org.apache.excalibur.mpool;
   
  -import org.apache.avalon.excalibur.concurrent.Mutex;
   import org.apache.avalon.excalibur.collections.Buffer;
   import org.apache.avalon.excalibur.collections.BufferUnderflowException;
   import org.apache.avalon.excalibur.collections.FixedSizeBuffer;
  @@ -196,7 +195,7 @@
               {
                   if ( m_buffer.size() < m_maxSize )
                   {
  -                    m_buffer.add( object );
  +                    m_buffer.add( PoolUtil.reset( object ) );
                       m_semaphore.notify();
                   }
                   else
  
  
  
  1.1                  
jakarta-avalon-excalibur/event/src/java/org/apache/excalibur/mpool/PoolUtil.java
  
  Index: PoolUtil.java
  ===================================================================
  /*
   * Created by IntelliJ IDEA.
   * User: bloritsch
   * Date: Sep 25, 2002
   * Time: 11:47:49 AM
   * To change template for new class use 
   * Code Style | Class Templates options (Tools | IDE Options).
   */
  package org.apache.excalibur.mpool;
  
  import java.lang.reflect.Method;
  import java.lang.reflect.Modifier;
  
  public final class PoolUtil
  {
      private final static Object[] EMPTY = new Object[] {};
      private final static Class[] EMPTY_ARGS = new Class[] {};
  
      private PoolUtil() {}
  
      public static Object reset( final Object obj )
      {
          try
          {
              Class klass = obj.getClass();
              Method recycle = klass.getMethod( "recycle", EMPTY_ARGS );
  
              if ( Modifier.isPublic( recycle.getModifiers() ) &&
                      recycle.getReturnType().equals( void.class ) )
              {
                  recycle.invoke( obj, EMPTY );
              }
          }
          catch (Exception e)
          {
              // Not a recyclable object--don't worry about it
          }
  
          return obj;
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to