Author: rgodfrey
Date: Wed May 20 16:38:59 2015
New Revision: 1680635
URL: http://svn.apache.org/r1680635
Log:
QPID-6534 : Change toString on pooled connections to allow identification of
different instances of same underlying connection
Modified:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/PooledConnectionFactory.java
qpid/java/trunk/client/src/test/java/org/apache/qpid/client/handler/PooledConnectionFactoryTest.java
Modified:
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/PooledConnectionFactory.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/main/java/org/apache/qpid/client/PooledConnectionFactory.java?rev=1680635&r1=1680634&r2=1680635&view=diff
==============================================================================
---
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/PooledConnectionFactory.java
(original)
+++
qpid/java/trunk/client/src/main/java/org/apache/qpid/client/PooledConnectionFactory.java
Wed May 20 16:38:59 2015
@@ -64,6 +64,8 @@ public class PooledConnectionFactory imp
{
private static final Logger LOGGER =
LoggerFactory.getLogger(PooledConnectionFactory.class);
+ private static final AtomicInteger POOL_ID = new AtomicInteger();
+
private static final ScheduledExecutorService SCHEDULER =
Executors.newSingleThreadScheduledExecutor(
new ThreadFactory()
@@ -94,9 +96,12 @@ public class PooledConnectionFactory imp
private final AtomicInteger _maxPoolSize = new AtomicInteger(10);
private final AtomicLong _connectionTimeout = new AtomicLong(30000l);
-
private final AtomicReference<ConnectionURL> _connectionDetails = new
AtomicReference<>();
+ transient private final AtomicInteger _connectionInstanceId = new
AtomicInteger();
+
+ transient private final int _poolId = POOL_ID.incrementAndGet();
+
transient private final byte[] _factoryId = new byte[16];
transient private final Map<ConnectionDetailsIdentifier,
List<ConnectionHolder>> _pool = Collections.synchronizedMap(new
HashMap<ConnectionDetailsIdentifier, List<ConnectionHolder>>());
transient private final Runnable _connectionReaper = new Runnable()
@@ -423,12 +428,14 @@ public class PooledConnectionFactory imp
private volatile boolean _exceptionThrown;
private final List<Session> _openSessions = new ArrayList<>();
private volatile ExceptionListener _exceptionListener;
+ private final int _instanceId;
public ConnectionInvocationHandler(final CommonConnection underlying,
ConnectionDetailsIdentifier identityHash) throws JMSException
{
_underlyingConnection = underlying;
_underlyingConnection.setExceptionListener(this);
_identityHash = identityHash;
+ _instanceId = _connectionInstanceId.incrementAndGet();
}
@Override
@@ -485,6 +492,21 @@ public class PooledConnectionFactory imp
return null;
}
+ else if(method.getName().equals("toString") &&
method.getParameterTypes().length == 0)
+ {
+ try
+ {
+ Object returnVal =
underlyingMethod.invoke(_underlyingConnection, args);
+ return "[Pool:"+_poolId+"][conn:"+_instanceId+"]: " +
String.valueOf(returnVal);
+
+ }
+ catch (InvocationTargetException e)
+ {
+ _exceptionThrown = true;
+ Throwable thrown = e.getCause();
+ throw thrown == null ? e : thrown;
+ }
+ }
else
{
try
Modified:
qpid/java/trunk/client/src/test/java/org/apache/qpid/client/handler/PooledConnectionFactoryTest.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/client/src/test/java/org/apache/qpid/client/handler/PooledConnectionFactoryTest.java?rev=1680635&r1=1680634&r2=1680635&view=diff
==============================================================================
---
qpid/java/trunk/client/src/test/java/org/apache/qpid/client/handler/PooledConnectionFactoryTest.java
(original)
+++
qpid/java/trunk/client/src/test/java/org/apache/qpid/client/handler/PooledConnectionFactoryTest.java
Wed May 20 16:38:59 2015
@@ -103,16 +103,15 @@ public class PooledConnectionFactoryTest
assertNotNull(conn);
assertEquals(1, createdConnections.size());
final String connToString = conn.toString();
- assertEquals(createdConnections.get(0).toString(), connToString);
+
assertTrue(connToString.endsWith(createdConnections.get(0).toString()));
conn.close();
Connection conn2 = _connectionFactory.createConnection();
assertNotNull(conn2);
assertEquals(1, createdConnections.size());
- assertEquals(createdConnections.get(0).toString(), conn2.toString());
+
assertTrue(conn2.toString().endsWith(createdConnections.get(0).toString()));
- assertEquals(connToString, conn2.toString());
try
{
@@ -127,14 +126,14 @@ public class PooledConnectionFactoryTest
Connection conn3 = _connectionFactory.createConnection();
assertNotNull(conn3);
assertEquals(2, createdConnections.size());
- assertEquals(createdConnections.get(1).toString(), conn3.toString());
+
assertTrue(conn3.toString().endsWith(createdConnections.get(1).toString()));
assertFalse(conn3.toString().equals(conn2.toString()));
conn2.close();
Connection conn4 = _connectionFactory.createConnection();
assertNotNull(conn4);
assertEquals(2, createdConnections.size());
- assertEquals(createdConnections.get(0).toString(), conn4.toString());
+
assertTrue(conn4.toString().endsWith(createdConnections.get(0).toString()));
}
@@ -179,7 +178,7 @@ public class PooledConnectionFactoryTest
Connection conn3 = _connectionFactory.createConnection("user1",
"pass1");
assertNotNull(conn3);
assertEquals(2, createdConnections.size());
- assertEquals(createdConnections.get(0).toString(), conn3.toString());
+
assertTrue(conn3.toString().endsWith(createdConnections.get(0).toString()));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]