Author: painter Date: Thu Dec 13 21:29:02 2018 New Revision: 1848900 URL: http://svn.apache.org/viewvc?rev=1848900&view=rev Log: Code cleanup, fixed last findbug performance error, updated changes.xml
Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/DefaultPoolService.java turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolBuffer.java turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolException.java turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolService.java turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recyclable.java turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recycler.java turbine/fulcrum/trunk/pool/xdocs/changes.xml Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/DefaultPoolService.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/DefaultPoolService.java?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/DefaultPoolService.java (original) +++ turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/DefaultPoolService.java Thu Dec 13 21:29:02 2018 @@ -56,10 +56,12 @@ public class DefaultPoolService extends * The property specifying the pool capacity. */ public static final String POOL_CAPACITY = "capacity"; + /** * The default capacity of pools. */ private int poolCapacity = DEFAULT_POOL_CAPACITY; + /** * The pool repository, one pool for each class. */ @@ -326,8 +328,9 @@ public class DefaultPoolService extends } // ---------------- Avalon Lifecycle Methods --------------------- - /** + /* (non-Javadoc) * Avalon component lifecycle method + * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration) */ public void configure(Configuration conf) { final Configuration capacities = conf.getChild(POOL_CAPACITY, false); @@ -349,7 +352,7 @@ public class DefaultPoolService extends if (capacityMap == null) { capacityMap = new HashMap<String, Integer>(); } - capacityMap.put(key, new Integer(capacity)); + capacityMap.put(key, capacity); } } } Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolBuffer.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolBuffer.java?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolBuffer.java (original) +++ turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolBuffer.java Thu Dec 13 21:29:02 2018 @@ -21,173 +21,149 @@ package org.apache.fulcrum.pool; import java.lang.reflect.Method; import java.util.ArrayList; -import java.util.Iterator; import org.apache.fulcrum.factory.FactoryService; - /** * An inner class for class specific pools. */ -public class PoolBuffer -{ - /** - * A buffer for class instances. - */ - private BoundedBuffer pool; - /** - * A flag to determine if a more efficient recycler is implemented. - */ - private boolean arrayCtorRecyclable; - /** - * A cache for recycling methods. - */ - private ArrayList<Recycler> recyclers; - /** - * Contructs a new pool buffer with a specific capacity. - * - * @param capacity a capacity. - */ - public PoolBuffer(int capacity) - { - pool = new BoundedBuffer(capacity); - } - /** - * Tells pool that it contains objects which can be - * initialized using an Object array. - * - * @param isArrayCtor a <code>boolean</code> value - */ - public void setArrayCtorRecyclable(boolean isArrayCtor) - { - arrayCtorRecyclable = isArrayCtor; - } - /** - * Polls for an instance from the pool. - * - * - * @param params object paramaters - * @param signature signature of the class - * @param factoryService service to add - * @throws PoolException if service failed to be found - * @return an instance or null. - */ - public Object poll(Object[] params, String[] signature, FactoryService factoryService) throws PoolException - { - Object instance = pool.poll(); - if (instance != null) - { - if (arrayCtorRecyclable) - { - ((ArrayCtorRecyclable) instance).recycle(params); - } - else if (instance instanceof Recyclable) - { - try - { - if ((signature != null) && (signature.length > 0)) - { - /* Get the recycle method from the cache. */ - Method recycle = getRecycle(signature); - if (recycle == null) - { - synchronized (this) - { - /* Make a synchronized recheck. */ - recycle = getRecycle(signature); - if (recycle == null) - { - Class<? extends Object> clazz = instance.getClass(); - recycle = - clazz.getMethod( - "recycle", - factoryService.getSignature(clazz, params, signature)); - - @SuppressWarnings("unchecked") - ArrayList<Recycler> cache = - recyclers != null ? (ArrayList<Recycler>) recyclers.clone() : new ArrayList<Recycler>(); - cache.add(new Recycler(recycle, signature)); - recyclers = cache; - } - } - } - recycle.invoke(instance, params); - } - else - { - ((Recyclable) instance).recycle(); - } - } - catch (Exception x) - { - throw new PoolException("Recycling failed for " + instance.getClass().getName(), x); - } - } - } - return instance; - } - - /** - * Offers an instance to the pool. - * - * @param instance an instance. - * @return false if failed to dispose - */ - public boolean offer(Object instance) - { - if (instance instanceof Recyclable) - { - try - { - ((Recyclable) instance).dispose(); - } - catch (Exception x) - { - return false; - } - } - return pool.offer(instance); - } - /** - * Returns the capacity of the pool. - * - * @return the capacity. - */ - public int capacity() - { - return pool.capacity(); - } - /** - * Returns the size of the pool. - * - * @return the size. - */ - public int size() - { - return pool.size(); - } - /** - * Returns a cached recycle method - * corresponding to the given signature. - * - * @param signature the signature. - * @return the recycle method or null. - */ - private Method getRecycle(String[] signature) - { - ArrayList<Recycler> cache = recyclers; - if (cache != null) - { - Method recycle; - for (Iterator<Recycler> i = cache.iterator(); i.hasNext();) - { - recycle = ((Recycler) i.next()).match(signature); - if (recycle != null) - { - return recycle; - } - } - } - return null; - } +public class PoolBuffer { + + /** + * A buffer for class instances. + */ + private BoundedBuffer pool; + + /** + * A flag to determine if a more efficient recycler is implemented. + */ + private boolean arrayCtorRecyclable; + + /** + * A cache for recycling methods. + */ + private ArrayList<Recycler> recyclers; + + /** + * Contructs a new pool buffer with a specific capacity. + * + * @param capacity a capacity. + */ + public PoolBuffer(int capacity) { + pool = new BoundedBuffer(capacity); + } + + /** + * Tells pool that it contains objects which can be initialized using an Object + * array. + * + * @param isArrayCtor a <code>boolean</code> value + */ + public void setArrayCtorRecyclable(boolean isArrayCtor) { + arrayCtorRecyclable = isArrayCtor; + } + + /** + * Polls for an instance from the pool. + * + * + * @param params object paramaters + * @param signature signature of the class + * @param factoryService service to add + * @throws PoolException if service failed to be found + * @return an instance or null. + */ + public Object poll(Object[] params, String[] signature, FactoryService factoryService) throws PoolException { + Object instance = pool.poll(); + if (instance != null) { + if (arrayCtorRecyclable) { + ((ArrayCtorRecyclable) instance).recycle(params); + } else if (instance instanceof Recyclable) { + try { + if (signature != null && signature.length > 0) { + /* Get the recycle method from the cache. */ + Method recycle = getRecycle(signature); + if (recycle == null) { + synchronized (this) { + /* Make a synchronized recheck. */ + recycle = getRecycle(signature); + if (recycle == null) { + Class<? extends Object> clazz = instance.getClass(); + recycle = clazz.getMethod("recycle", + factoryService.getSignature(clazz, params, signature)); + + @SuppressWarnings("unchecked") + ArrayList<Recycler> cache = recyclers != null + ? (ArrayList<Recycler>) recyclers.clone() + : new ArrayList<Recycler>(); + cache.add(new Recycler(recycle, signature)); + recyclers = cache; + } + } + } + recycle.invoke(instance, params); + } else { + ((Recyclable) instance).recycle(); + } + } catch (Exception x) { + throw new PoolException("Recycling failed for " + instance.getClass().getName(), x); + } + } + } + return instance; + } + + /** + * Offers an instance to the pool. + * + * @param instance an instance. + * @return false if failed to dispose + */ + public boolean offer(Object instance) { + if (instance instanceof Recyclable) { + try { + ((Recyclable) instance).dispose(); + } catch (Exception x) { + return false; + } + } + return pool.offer(instance); + } + + /** + * Returns the capacity of the pool. + * + * @return the capacity. + */ + public int capacity() { + return pool.capacity(); + } + + /** + * Returns the size of the pool. + * + * @return the size. + */ + public int size() { + return pool.size(); + } + + /** + * Returns a cached recycle method corresponding to the given signature. + * + * @param signature the signature. + * @return the recycle method or null. + */ + private Method getRecycle(String[] signature) { + ArrayList<Recycler> cache = recyclers; + if (cache != null) { + Method recycle; + for (Recycler recycler : cache) { + recycle = recycler.match(signature); + if (recycle != null) + return recycle; + } + } + return null; + } } Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolException.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolException.java?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolException.java (original) +++ turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolException.java Thu Dec 13 21:29:02 2018 @@ -25,23 +25,22 @@ package org.apache.fulcrum.pool; * @author <a href="mailto:ep...@upstate.com">Eric Pugh</a> * @version $Id$ */ -public class PoolException extends Exception -{ - /** - * Serial number - */ - private static final long serialVersionUID = 8192045560423973532L; +public class PoolException extends Exception { + + /** + * Serial number + */ + private static final long serialVersionUID = 8192045560423973532L; - public PoolException(String msg) - { - super(msg); - } - public PoolException(Exception ex) - { - super(ex); - } - public PoolException(String msg, Exception ex) - { - super(msg, ex); - } + public PoolException(String msg) { + super(msg); + } + + public PoolException(Exception ex) { + super(ex); + } + + public PoolException(String msg, Exception ex) { + super(msg, ex); + } } Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolService.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolService.java?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolService.java (original) +++ turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/PoolService.java Thu Dec 13 21:29:02 2018 @@ -1,6 +1,5 @@ package org.apache.fulcrum.pool; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -20,108 +19,98 @@ package org.apache.fulcrum.pool; * under the License. */ - - /** - * The Pool Service extends the Factory Service by adding support - * for pooling instantiated objects. When a new instance is - * requested, the service first checks its pool if one is available. - * If the the pool is empty, a new object will be instantiated - * from the specified class. If only class name is given, the request - * to create an instance will be forwarded to the Factory Service. + * The Pool Service extends the Factory Service by adding support for pooling + * instantiated objects. When a new instance is requested, the service first + * checks its pool if one is available. If the the pool is empty, a new object + * will be instantiated from the specified class. If only class name is given, + * the request to create an instance will be forwarded to the Factory Service. * - * <p>For objects implementing the Recyclable interface, a recycle - * method will be called, when they are taken from the pool, and - * a dispose method, when they are returned to the pool. + * <p> + * For objects implementing the Recyclable interface, a recycle method will be + * called, when they are taken from the pool, and a dispose method, when they + * are returned to the pool. * * @author <a href="mailto:ilkka.pr...@simsoft.fi">Ilkka Priha</a> * @author <a href="mailto:mcconn...@apache.org">Stephen McConnell</a> * @version $Id$ */ -public interface PoolService -{ - /** Avalon role - used to id the component within the manager */ - String ROLE = PoolService.class.getName(); - - - /** - * The default pool capacity. - */ - public static final int DEFAULT_POOL_CAPACITY = 128; - - /** - * Gets an instance of a specified class either from the pool - * or by instantiating from the class if the pool is empty. - * - * @param clazz the class. - * @return the instance. - * @throws PoolException if recycling fails. - */ - public Object getInstance(Class clazz) - throws PoolException; - - /** - * Gets an instance of a specified class either from the pool - * or by instantiating from the class if the pool is empty. - * - * @param clazz the class. - * @param params an array containing the parameters of the constructor. - * @param signature an array containing the signature of the constructor. - * @return the instance. - * @throws PoolException if recycling fails. - */ - public Object getInstance(Class clazz, - Object params[], - String signature[]) - throws PoolException; - - /** - * Puts a used object back to the pool. Objects implementing - * the Recyclable interface can provide a recycle method to - * be called when they are reused and a dispose method to be - * called when they are returned to the pool. - * - * @param instance the object instance to recycle. - * @return true if the instance was accepted. - */ - public boolean putInstance(Object instance); - - /** - * Gets the capacity of the pool for a named class. - * - * @param className the name of the class. - * @return total capacity - */ - public int getCapacity(String className); - - /** - * Sets the capacity of the pool for a named class. - * Note that the pool will be cleared after the change. - * - * @param className the name of the class. - * @param capacity the new capacity. - */ - public void setCapacity(String className, - int capacity); - - /** - * Gets the current size of the pool for a named class. - * - * @param className the name of the class - * @return the size of the pool for the class - */ - public int getSize(String className); - - /** - * Clears instances of a named class from the pool. - * - * @param className the name of the class. - */ - public void clearPool(String className); - - /** - * Clears all instances from the pool. - */ - void clearPool(); +public interface PoolService { + /** Avalon role - used to id the component within the manager */ + String ROLE = PoolService.class.getName(); + + /** + * The default pool capacity. + */ + public static final int DEFAULT_POOL_CAPACITY = 128; + + /** + * Gets an instance of a specified class either from the pool or by + * instantiating from the class if the pool is empty. + * + * @param clazz the class. + * @return the instance. + * @throws PoolException if recycling fails. + */ + public Object getInstance(Class clazz) throws PoolException; + + /** + * Gets an instance of a specified class either from the pool or by + * instantiating from the class if the pool is empty. + * + * @param clazz the class. + * @param params an array containing the parameters of the constructor. + * @param signature an array containing the signature of the constructor. + * @return the instance. + * @throws PoolException if recycling fails. + */ + public Object getInstance(Class clazz, Object params[], String signature[]) throws PoolException; + + /** + * Puts a used object back to the pool. Objects implementing the Recyclable + * interface can provide a recycle method to be called when they are reused and + * a dispose method to be called when they are returned to the pool. + * + * @param instance the object instance to recycle. + * @return true if the instance was accepted. + */ + public boolean putInstance(Object instance); + + /** + * Gets the capacity of the pool for a named class. + * + * @param className the name of the class. + * @return total capacity + */ + public int getCapacity(String className); + + /** + * Sets the capacity of the pool for a named class. Note that the pool will be + * cleared after the change. + * + * @param className the name of the class. + * @param capacity the new capacity. + */ + public void setCapacity(String className, int capacity); + + /** + * Gets the current size of the pool for a named class. + * + * @param className the name of the class + * @return the size of the pool for the class + */ + public int getSize(String className); + + /** + * Clears instances of a named class from the pool. + * + * @param className the name of the class. + */ + public void clearPool(String className); + + /** + * Clears all instances from the pool. + */ + void clearPool(); } Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recyclable.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recyclable.java?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recyclable.java (original) +++ turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recyclable.java Thu Dec 13 21:29:02 2018 @@ -1,6 +1,5 @@ package org.apache.fulcrum.pool; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -20,38 +19,35 @@ package org.apache.fulcrum.pool; * under the License. */ - /** - * An interface for objects that can be pooled and - * recycled several times by different clients. + * An interface for objects that can be pooled and recycled several times by + * different clients. * * @author <a href="mailto:ilkka.pr...@simsoft.fi">Ilkka Priha</a> * @version $Id$ */ -public interface Recyclable -{ - /** - * Recycles the object for a new client. Recycle methods with - * parameters must be added to implementing object and they will be - * automatically called by pool implementations when the object is - * taken from the pool for a new client. The parameters must - * correspond to the parameters of the constructors of the object. - * For new objects, constructors can call their corresponding recycle - * methods whenever applicable. - * The recycle methods must call their super. - */ - public void recycle(); - - /** - * Disposes the object after use. The method is called - * when the object is returned to its pool. - * The dispose method must call its super. - */ - public void dispose(); - - /** - * Checks whether the recyclable has been disposed. - * @return true, if the recyclable is disposed. - */ - public boolean isDisposed(); +public interface Recyclable { + + /** + * Recycles the object for a new client. Recycle methods with parameters must be + * added to implementing object and they will be automatically called by pool + * implementations when the object is taken from the pool for a new client. The + * parameters must correspond to the parameters of the constructors of the + * object. For new objects, constructors can call their corresponding recycle + * methods whenever applicable. The recycle methods must call their super. + */ + public void recycle(); + + /** + * Disposes the object after use. The method is called when the object is + * returned to its pool. The dispose method must call its super. + */ + public void dispose(); + + /** + * Checks whether the recyclable has been disposed. + * + * @return true, if the recyclable is disposed. + */ + public boolean isDisposed(); } Modified: turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recycler.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recycler.java?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recycler.java (original) +++ turbine/fulcrum/trunk/pool/src/java/org/apache/fulcrum/pool/Recycler.java Thu Dec 13 21:29:02 2018 @@ -20,6 +20,7 @@ package org.apache.fulcrum.pool; */ import java.lang.reflect.Method; +import java.util.Arrays; /** * An inner class for cached recycle methods. @@ -30,10 +31,12 @@ public class Recycler * The method. */ private final Method recycle; + /** * The signature. */ private final String[] signature; + /** * Constructs a new recycler. * @@ -43,8 +46,9 @@ public class Recycler public Recycler(Method rec, String[] sign) { recycle = rec; - signature = (sign != null) && (sign.length > 0) ? sign : null; + signature = sign != null && sign.length > 0 ? sign : null; } + /** * Matches the given signature against * that of the recycle method of this recycler. @@ -54,31 +58,17 @@ public class Recycler */ public Method match(String[] sign) { - if ((sign != null) && (sign.length > 0)) - { - if ((signature != null) && (sign.length == signature.length)) - { - for (int i = 0; i < signature.length; i++) - { - if (!signature[i].equals(sign[i])) - { - return null; - } - } - return recycle; - } - else - { - return null; - } - } - else if (signature == null) - { - return recycle; - } - else - { - return null; - } + if ( signature == null ) + { + return recycle; + } else { + + // test if there is a match + if ( !Arrays.equals(sign, signature) ) { + return null; + } else { + return recycle; + } + } } } Modified: turbine/fulcrum/trunk/pool/xdocs/changes.xml URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/pool/xdocs/changes.xml?rev=1848900&r1=1848899&r2=1848900&view=diff ============================================================================== --- turbine/fulcrum/trunk/pool/xdocs/changes.xml (original) +++ turbine/fulcrum/trunk/pool/xdocs/changes.xml Thu Dec 13 21:29:02 2018 @@ -24,6 +24,11 @@ </properties> <body> + <release version="1.0.5" date="in SVN"> + <action dev="painter" type="update"> + Derive from Turbine parent POM 5 + </action> + </release> <release version="1.0.4" date="2009-06-21"> <action dev="tv" type="add"> Added a Maven-2 build