Author: ggregory
Date: Thu Sep 3 20:01:27 2015
New Revision: 1701122
URL: http://svn.apache.org/r1701122
Log:
[POOL-302] Add toString() methods to faciliate debugging and logging.
Added:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseKeyedPooledObjectFactory.java
Thu Sep 3 20:01:27 2015
@@ -32,7 +32,7 @@ package org.apache.commons.pool2;
*
* @since 2.0
*/
-public abstract class BaseKeyedPooledObjectFactory<K,V>
+public abstract class BaseKeyedPooledObjectFactory<K,V> extends BaseObject
implements KeyedPooledObjectFactory<K,V> {
/**
Added:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java?rev=1701122&view=auto
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java
(added)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObject.java
Thu Sep 3 20:01:27 2015
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.pool2;
+
+/**
+ * A base class for common functionality.
+ *
+ * @since 2.4.3
+ */
+public abstract class BaseObject {
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append(getClass().getSimpleName());
+ builder.append(" [");
+ toStringAppendFields(builder);
+ builder.append("]");
+ return builder.toString();
+ }
+
+ protected void toStringAppendFields(StringBuilder builder) {
+ // do nothing by default, needed for b/w compatibility.
+ }
+
+}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObjectPool.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BaseObjectPool.java
Thu Sep 3 20:01:27 2015
@@ -29,7 +29,7 @@ package org.apache.commons.pool2;
*
* @since 2.0
*/
-public abstract class BaseObjectPool<T> implements ObjectPool<T> {
+public abstract class BaseObjectPool<T> extends BaseObject implements
ObjectPool<T> {
@Override
public abstract T borrowObject() throws Exception;
@@ -118,4 +118,9 @@ public abstract class BaseObjectPool<T>
}
private volatile boolean closed = false;
+
+ protected void toStringAppendFields(StringBuilder builder) {
+ builder.append("closed=");
+ builder.append(closed);
+ }
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java
Thu Sep 3 20:01:27 2015
@@ -32,7 +32,7 @@ package org.apache.commons.pool2;
*
* @since 2.0
*/
-public abstract class BasePooledObjectFactory<T> implements
PooledObjectFactory<T> {
+public abstract class BasePooledObjectFactory<T> extends BaseObject implements
PooledObjectFactory<T> {
/**
* Creates an object instance, to be wrapped in a {@link PooledObject}.
* <p>This method <strong>must</strong> support concurrent, multi-threaded
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
Thu Sep 3 20:01:27 2015
@@ -21,6 +21,7 @@ import java.io.StringWriter;
import java.io.Writer;
import java.lang.management.ManagementFactory;
import java.lang.ref.WeakReference;
+import java.util.Arrays;
import java.util.Deque;
import java.util.Iterator;
import java.util.TimerTask;
@@ -34,6 +35,7 @@ import javax.management.MalformedObjectN
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
+import org.apache.commons.pool2.BaseObject;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.SwallowedExceptionListener;
@@ -50,7 +52,7 @@ import org.apache.commons.pool2.Swallowe
*
* @since 2.0
*/
-public abstract class BaseGenericObjectPool<T> {
+public abstract class BaseGenericObjectPool<T> extends BaseObject {
// Constants
/**
@@ -1109,6 +1111,19 @@ public abstract class BaseGenericObjectP
}
return (long) result;
}
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("StatsStore [values=");
+ builder.append(Arrays.toString(values));
+ builder.append(", size=");
+ builder.append(size);
+ builder.append(", index=");
+ builder.append(index);
+ builder.append("]");
+ return builder.toString();
+ }
}
/**
@@ -1200,6 +1215,84 @@ public abstract class BaseGenericObjectP
public T getObject() {
return instance;
}
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("IdentityWrapper [instance=");
+ builder.append(instance);
+ builder.append("]");
+ return builder.toString();
+ }
+ }
+
+ protected void toStringAppendFields(StringBuilder builder) {
+ builder.append("maxTotal=");
+ builder.append(maxTotal);
+ builder.append(", blockWhenExhausted=");
+ builder.append(blockWhenExhausted);
+ builder.append(", maxWaitMillis=");
+ builder.append(maxWaitMillis);
+ builder.append(", lifo=");
+ builder.append(lifo);
+ builder.append(", fairness=");
+ builder.append(fairness);
+ builder.append(", testOnCreate=");
+ builder.append(testOnCreate);
+ builder.append(", testOnBorrow=");
+ builder.append(testOnBorrow);
+ builder.append(", testOnReturn=");
+ builder.append(testOnReturn);
+ builder.append(", testWhileIdle=");
+ builder.append(testWhileIdle);
+ builder.append(", timeBetweenEvictionRunsMillis=");
+ builder.append(timeBetweenEvictionRunsMillis);
+ builder.append(", numTestsPerEvictionRun=");
+ builder.append(numTestsPerEvictionRun);
+ builder.append(", minEvictableIdleTimeMillis=");
+ builder.append(minEvictableIdleTimeMillis);
+ builder.append(", softMinEvictableIdleTimeMillis=");
+ builder.append(softMinEvictableIdleTimeMillis);
+ builder.append(", evictionPolicy=");
+ builder.append(evictionPolicy);
+ builder.append(", closeLock=");
+ builder.append(closeLock);
+ builder.append(", closed=");
+ builder.append(closed);
+ builder.append(", evictionLock=");
+ builder.append(evictionLock);
+ builder.append(", evictor=");
+ builder.append(evictor);
+ builder.append(", evictionIterator=");
+ builder.append(evictionIterator);
+ builder.append(", factoryClassLoader=");
+ builder.append(factoryClassLoader);
+ builder.append(", oname=");
+ builder.append(oname);
+ builder.append(", creationStackTrace=");
+ builder.append(creationStackTrace);
+ builder.append(", borrowedCount=");
+ builder.append(borrowedCount);
+ builder.append(", returnedCount=");
+ builder.append(returnedCount);
+ builder.append(", createdCount=");
+ builder.append(createdCount);
+ builder.append(", destroyedCount=");
+ builder.append(destroyedCount);
+ builder.append(", destroyedByEvictorCount=");
+ builder.append(destroyedByEvictorCount);
+ builder.append(", destroyedByBorrowValidationCount=");
+ builder.append(destroyedByBorrowValidationCount);
+ builder.append(", activeTimes=");
+ builder.append(activeTimes);
+ builder.append(", idleTimes=");
+ builder.append(idleTimes);
+ builder.append(", waitTimes=");
+ builder.append(waitTimes);
+ builder.append(", maxBorrowWaitTimeMillis=");
+ builder.append(maxBorrowWaitTimeMillis);
+ builder.append(", swallowedExceptionListener=");
+ builder.append(swallowedExceptionListener);
}
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
Thu Sep 3 20:01:27 2015
@@ -16,6 +16,8 @@
*/
package org.apache.commons.pool2.impl;
+import org.apache.commons.pool2.BaseObject;
+
/**
* Provides the implementation for the common attributes shared by the
* sub-classes. New instances of this class will be created using the defaults
@@ -27,7 +29,7 @@ package org.apache.commons.pool2.impl;
*
* @since 2.0
*/
-public abstract class BaseObjectPoolConfig implements Cloneable {
+public abstract class BaseObjectPoolConfig extends BaseObject implements
Cloneable {
/**
* The default value for the {@code lifo} configuration attribute.
@@ -637,4 +639,39 @@ public abstract class BaseObjectPoolConf
public void setJmxNamePrefix(String jmxNamePrefix) {
this.jmxNamePrefix = jmxNamePrefix;
}
+
+ protected void toStringAppendFields(StringBuilder builder) {
+ builder.append("lifo=");
+ builder.append(lifo);
+ builder.append(", fairness=");
+ builder.append(fairness);
+ builder.append(", maxWaitMillis=");
+ builder.append(maxWaitMillis);
+ builder.append(", minEvictableIdleTimeMillis=");
+ builder.append(minEvictableIdleTimeMillis);
+ builder.append(", softMinEvictableIdleTimeMillis=");
+ builder.append(softMinEvictableIdleTimeMillis);
+ builder.append(", numTestsPerEvictionRun=");
+ builder.append(numTestsPerEvictionRun);
+ builder.append(", evictionPolicyClassName=");
+ builder.append(evictionPolicyClassName);
+ builder.append(", testOnCreate=");
+ builder.append(testOnCreate);
+ builder.append(", testOnBorrow=");
+ builder.append(testOnBorrow);
+ builder.append(", testOnReturn=");
+ builder.append(testOnReturn);
+ builder.append(", testWhileIdle=");
+ builder.append(testWhileIdle);
+ builder.append(", timeBetweenEvictionRunsMillis=");
+ builder.append(timeBetweenEvictionRunsMillis);
+ builder.append(", blockWhenExhausted=");
+ builder.append(blockWhenExhausted);
+ builder.append(", jmxEnabled=");
+ builder.append(jmxEnabled);
+ builder.append(", jmxNamePrefix=");
+ builder.append(jmxNamePrefix);
+ builder.append(", jmxNameBase=");
+ builder.append(jmxNameBase);
+ }
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
Thu Sep 3 20:01:27 2015
@@ -1492,6 +1492,21 @@ public class GenericKeyedObjectPool<K,T>
return allObjects;
}
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("ObjectDeque [idleObjects=");
+ builder.append(idleObjects);
+ builder.append(", createCount=");
+ builder.append(createCount);
+ builder.append(", allObjects=");
+ builder.append(allObjects);
+ builder.append(", numInterested=");
+ builder.append(numInterested);
+ builder.append("]");
+ return builder.toString();
+ }
+
}
//--- configuration attributes
---------------------------------------------
@@ -1535,4 +1550,31 @@ public class GenericKeyedObjectPool<K,T>
// JMX specific attributes
private static final String ONAME_BASE =
"org.apache.commons.pool2:type=GenericKeyedObjectPool,name=";
+
+ @Override
+ protected void toStringAppendFields(StringBuilder builder) {
+ super.toStringAppendFields(builder);
+ builder.append(", maxIdlePerKey=");
+ builder.append(maxIdlePerKey);
+ builder.append(", minIdlePerKey=");
+ builder.append(minIdlePerKey);
+ builder.append(", maxTotalPerKey=");
+ builder.append(maxTotalPerKey);
+ builder.append(", factory=");
+ builder.append(factory);
+ builder.append(", fairness=");
+ builder.append(fairness);
+ builder.append(", poolMap=");
+ builder.append(poolMap);
+ builder.append(", poolKeyList=");
+ builder.append(poolKeyList);
+ builder.append(", keyLock=");
+ builder.append(keyLock);
+ builder.append(", numTotal=");
+ builder.append(numTotal);
+ builder.append(", evictionKeyIterator=");
+ builder.append(evictionKeyIterator);
+ builder.append(", evictionKey=");
+ builder.append(evictionKey);
+ }
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPoolConfig.java
Thu Sep 3 20:01:27 2015
@@ -181,4 +181,16 @@ public class GenericKeyedObjectPoolConfi
throw new AssertionError(); // Can't happen
}
}
+
+ protected void toStringAppendFields(StringBuilder builder) {
+ super.toStringAppendFields(builder);
+ builder.append(", minIdlePerKey=");
+ builder.append(minIdlePerKey);
+ builder.append(", maxIdlePerKey=");
+ builder.append(maxIdlePerKey);
+ builder.append(", maxTotalPerKey=");
+ builder.append(maxTotalPerKey);
+ builder.append(", maxTotal=");
+ builder.append(maxTotal);
+ }
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
Thu Sep 3 20:01:27 2015
@@ -1142,5 +1142,26 @@ public class GenericObjectPool<T> extend
// Additional configuration properties for abandoned object tracking
private volatile AbandonedConfig abandonedConfig = null;
+
+ @Override
+ protected void toStringAppendFields(StringBuilder builder) {
+ super.toStringAppendFields(builder);
+ builder.append(", factoryType=");
+ builder.append(factoryType);
+ builder.append(", maxIdle=");
+ builder.append(maxIdle);
+ builder.append(", minIdle=");
+ builder.append(minIdle);
+ builder.append(", factory=");
+ builder.append(factory);
+ builder.append(", allObjects=");
+ builder.append(allObjects);
+ builder.append(", createCount=");
+ builder.append(createCount);
+ builder.append(", idleObjects=");
+ builder.append(idleObjects);
+ builder.append(", abandonedConfig=");
+ builder.append(abandonedConfig);
+ }
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/GenericObjectPoolConfig.java
Thu Sep 3 20:01:27 2015
@@ -143,4 +143,15 @@ public class GenericObjectPoolConfig ext
throw new AssertionError(); // Can't happen
}
}
+
+ @Override
+ protected void toStringAppendFields(StringBuilder builder) {
+ super.toStringAppendFields(builder);
+ builder.append(", maxTotal=");
+ builder.append(maxTotal);
+ builder.append(", maxIdle=");
+ builder.append(maxIdle);
+ builder.append(", minIdle=");
+ builder.append(minIdle);
+ }
}
Modified:
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
URL:
http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java?rev=1701122&r1=1701121&r2=1701122&view=diff
==============================================================================
---
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
(original)
+++
commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2/impl/SoftReferenceObjectPool.java
Thu Sep 3 20:01:27 2015
@@ -431,4 +431,23 @@ public class SoftReferenceObjectPool<T>
}
}
}
+
+ @Override
+ protected void toStringAppendFields(StringBuilder builder) {
+ super.toStringAppendFields(builder);
+ builder.append(", factory=");
+ builder.append(factory);
+ builder.append(", refQueue=");
+ builder.append(refQueue);
+ builder.append(", numActive=");
+ builder.append(numActive);
+ builder.append(", destroyCount=");
+ builder.append(destroyCount);
+ builder.append(", createCount=");
+ builder.append(createCount);
+ builder.append(", idleReferences=");
+ builder.append(idleReferences);
+ builder.append(", allReferences=");
+ builder.append(allReferences);
+ }
}