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

Reply via email to