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: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org