1 17 package org.apache.excalibur.mpool; 18 19 import java.lang.reflect.Method ; 20 21 30 public final class PoolUtil 31 { 32 private final static Object [] EMPTY = new Object []{}; 33 private final static Class [] EMPTY_ARGS = new Class []{}; 34 35 private PoolUtil() 36 { 37 } 38 39 46 public static Object recycle( final Object obj ) 47 { 48 if( obj instanceof Resettable ) 49 { 50 ( (Resettable)obj ).reset(); 51 } 52 else 53 { 54 try 55 { 56 Class klass = obj.getClass(); 57 Class recyclable = klass.getClassLoader().loadClass( "org.apache.avalon.excalibur.pool.Recyclable" ); 58 59 if( recyclable.isAssignableFrom( klass ) ) 60 { 61 recycleLegacy( obj ); 62 } 63 } 64 catch( Exception e ) 65 { 66 } 68 } 69 70 return obj; 71 } 72 73 private static void recycleLegacy( final Object obj ) throws Exception  74 { 75 Class klass = obj.getClass(); 76 Method recycle = klass.getMethod( "recycle", EMPTY_ARGS ); 77 recycle.invoke( obj, EMPTY ); 78 } 79 } 80 | Popular Tags |