You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2017/03/27 16:35:32 UTC

[1/2] commons-pool git commit: Testing POOL-324

Repository: commons-pool
Updated Branches:
  refs/heads/master b7d06237f -> 4e57e7767


Testing POOL-324

org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws
java.lang.ClassCastException

Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/68b86c2c
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/68b86c2c
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/68b86c2c

Branch: refs/heads/master
Commit: 68b86c2c2c9071e7a07f72645d39b658a210f955
Parents: b7d0623
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Mar 27 09:31:30 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Mar 27 09:31:30 2017 -0700

----------------------------------------------------------------------
 .../pool2/impl/TestGenericObjectPool.java       |  61 ++++++++++
 .../TestSynchronizedPooledObjectFactory.java    | 119 +++++++++++++++++++
 2 files changed, 180 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/68b86c2c/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index 11a335d..f88b421 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -54,6 +54,7 @@ import org.apache.commons.pool2.WaiterFactory;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -2643,4 +2644,64 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
             return semaphore.hasQueuedThreads();
         }
     }
+    
+	@Test
+	public void testGetFactoryType() {
+		GenericObjectPool<String> pool = new GenericObjectPool<String>(
+				new BasePooledObjectFactory<String>() {
+					@Override
+					public String create() {
+						// fake
+						return null;
+					}
+
+					@Override
+					public PooledObject<String> wrap(String obj) {
+						// fake
+						return null;
+					}
+				});
+		Assert.assertNotNull((pool.getFactoryType()));
+	}
+
+	@Test
+	@Ignore
+	public void testGetFactoryType_PoolUtilssynchronizedPooledFactory() {
+		GenericObjectPool<String> pool = new GenericObjectPool<String>(
+				PoolUtils.synchronizedPooledFactory(new BasePooledObjectFactory<String>() {
+					@Override
+					public String create() {
+						// fake
+						return null;
+					}
+
+					@Override
+					public PooledObject<String> wrap(String obj) {
+						// fake
+						return null;
+					}
+				}));
+		Assert.assertNotNull((pool.getFactoryType()));
+	}
+
+	@Test
+	@Ignore
+	public void testGetFactoryType_SynchronizedPooledObjectFactory() {
+		GenericObjectPool<String> pool = new GenericObjectPool<String>(
+				new TestSynchronizedPooledObjectFactory<String>(new BasePooledObjectFactory<String>() {
+					@Override
+					public String create() {
+						// fake
+						return null;
+					}
+
+					@Override
+					public PooledObject<String> wrap(String obj) {
+						// fake
+						return null;
+					}
+				}));
+		Assert.assertNotNull((pool.getFactoryType()));
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/commons-pool/blob/68b86c2c/src/test/java/org/apache/commons/pool2/impl/TestSynchronizedPooledObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestSynchronizedPooledObjectFactory.java b/src/test/java/org/apache/commons/pool2/impl/TestSynchronizedPooledObjectFactory.java
new file mode 100644
index 0000000..13d0b24
--- /dev/null
+++ b/src/test/java/org/apache/commons/pool2/impl/TestSynchronizedPooledObjectFactory.java
@@ -0,0 +1,119 @@
+package org.apache.commons.pool2.impl;
+
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
+
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.PooledObjectFactory;
+
+/**
+ * Copies PoolUtil's private static class SynchronizedPooledObjectFactory.
+ * 
+ * A fully synchronized PooledObjectFactory that wraps a PooledObjectFactory and
+ * synchronizes access to the wrapped factory methods.
+ * <p>
+ * <b>Note:</b> This should not be used on pool implementations that already
+ * provide proper synchronization such as the pools provided in the Commons Pool
+ * library.
+ * </p>
+ */
+final class TestSynchronizedPooledObjectFactory<T> implements PooledObjectFactory<T> {
+	
+	/** Synchronization lock */
+	private final WriteLock writeLock = new ReentrantReadWriteLock().writeLock();
+
+	/** Wrapped factory */
+	private final PooledObjectFactory<T> factory;
+
+	/**
+	 * Create a SynchronizedPoolableObjectFactory wrapping the given factory.
+	 *
+	 * @param factory
+	 *            underlying factory to wrap
+	 * @throws IllegalArgumentException
+	 *             if the factory is null
+	 */
+	TestSynchronizedPooledObjectFactory(final PooledObjectFactory<T> factory) throws IllegalArgumentException {
+		if (factory == null) {
+			throw new IllegalArgumentException("factory must not be null.");
+		}
+		this.factory = factory;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public PooledObject<T> makeObject() throws Exception {
+		writeLock.lock();
+		try {
+			return factory.makeObject();
+		} finally {
+			writeLock.unlock();
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void destroyObject(final PooledObject<T> p) throws Exception {
+		writeLock.lock();
+		try {
+			factory.destroyObject(p);
+		} finally {
+			writeLock.unlock();
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public boolean validateObject(final PooledObject<T> p) {
+		writeLock.lock();
+		try {
+			return factory.validateObject(p);
+		} finally {
+			writeLock.unlock();
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void activateObject(final PooledObject<T> p) throws Exception {
+		writeLock.lock();
+		try {
+			factory.activateObject(p);
+		} finally {
+			writeLock.unlock();
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void passivateObject(final PooledObject<T> p) throws Exception {
+		writeLock.lock();
+		try {
+			factory.passivateObject(p);
+		} finally {
+			writeLock.unlock();
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public String toString() {
+		final StringBuilder sb = new StringBuilder();
+		sb.append("SynchronizedPoolableObjectFactory");
+		sb.append("{factory=").append(factory);
+		sb.append('}');
+		return sb.toString();
+	}
+}


[2/2] commons-pool git commit: Testing POOL-324

Posted by gg...@apache.org.
Testing POOL-324

org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws
java.lang.ClassCastException

Project: http://git-wip-us.apache.org/repos/asf/commons-pool/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-pool/commit/4e57e776
Tree: http://git-wip-us.apache.org/repos/asf/commons-pool/tree/4e57e776
Diff: http://git-wip-us.apache.org/repos/asf/commons-pool/diff/4e57e776

Branch: refs/heads/master
Commit: 4e57e776793f89e45d0cb3051a7617f565e3fdc3
Parents: 68b86c2
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Mar 27 09:35:29 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Mar 27 09:35:29 2017 -0700

----------------------------------------------------------------------
 .../pool2/impl/TestGenericObjectPool.java       | 59 +++++++-------------
 1 file changed, 19 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-pool/blob/4e57e776/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
index f88b421..9bb48cb 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
@@ -2645,22 +2645,25 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
         }
     }
     
+	private BasePooledObjectFactory<String> createBasePooledObjectfactory() {
+		return new BasePooledObjectFactory<String>() {
+			@Override
+			public String create() {
+				// fake
+				return null;
+			}
+
+			@Override
+			public PooledObject<String> wrap(String obj) {
+				// fake
+				return null;
+			}
+		};
+	}
+
 	@Test
 	public void testGetFactoryType() {
-		GenericObjectPool<String> pool = new GenericObjectPool<String>(
-				new BasePooledObjectFactory<String>() {
-					@Override
-					public String create() {
-						// fake
-						return null;
-					}
-
-					@Override
-					public PooledObject<String> wrap(String obj) {
-						// fake
-						return null;
-					}
-				});
+		GenericObjectPool<String> pool = new GenericObjectPool<String>(createBasePooledObjectfactory());
 		Assert.assertNotNull((pool.getFactoryType()));
 	}
 
@@ -2668,19 +2671,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 	@Ignore
 	public void testGetFactoryType_PoolUtilssynchronizedPooledFactory() {
 		GenericObjectPool<String> pool = new GenericObjectPool<String>(
-				PoolUtils.synchronizedPooledFactory(new BasePooledObjectFactory<String>() {
-					@Override
-					public String create() {
-						// fake
-						return null;
-					}
-
-					@Override
-					public PooledObject<String> wrap(String obj) {
-						// fake
-						return null;
-					}
-				}));
+				PoolUtils.synchronizedPooledFactory(createBasePooledObjectfactory()));
 		Assert.assertNotNull((pool.getFactoryType()));
 	}
 
@@ -2688,19 +2679,7 @@ public class TestGenericObjectPool extends TestBaseObjectPool {
 	@Ignore
 	public void testGetFactoryType_SynchronizedPooledObjectFactory() {
 		GenericObjectPool<String> pool = new GenericObjectPool<String>(
-				new TestSynchronizedPooledObjectFactory<String>(new BasePooledObjectFactory<String>() {
-					@Override
-					public String create() {
-						// fake
-						return null;
-					}
-
-					@Override
-					public PooledObject<String> wrap(String obj) {
-						// fake
-						return null;
-					}
-				}));
+				new TestSynchronizedPooledObjectFactory<String>(createBasePooledObjectfactory()));
 		Assert.assertNotNull((pool.getFactoryType()));
 	}