Author: psteitz
Date: Sun Oct 29 13:48:02 2006
New Revision: 469008
URL: http://svn.apache.org/viewvc?view=rev&rev=469008
Log:
Added tests and fixed errors remaining in DelegatingConnection,
PoolGuardConnectionWrapper equals implementations.
JIRA: DBCP-198
Modified:
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/PoolingDataSource.java
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestDelegatingConnection.java
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestPoolingDataSource.java
Modified:
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java?view=diff&rev=469008&r1=469007&r2=469008
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/DelegatingConnection.java
Sun Oct 29 13:48:02 2006
@@ -120,15 +120,30 @@
public Connection getDelegate() {
return _conn;
}
+
+ public boolean innermostDelegateEquals(Connection c) {
+ Connection innerCon = getInnermostDelegate();
+ if (innerCon == null) {
+ return c == null;
+ } else {
+ return innerCon.equals(c);
+ }
+ }
public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj == this) {
+ return true;
+ }
Connection delegate = getInnermostDelegate();
if (delegate == null) {
return false;
}
- if (obj instanceof DelegatingConnection) {
+ if (obj instanceof DelegatingConnection) {
DelegatingConnection c = (DelegatingConnection) obj;
- return delegate.equals(c.getInnermostDelegate());
+ return c.innermostDelegateEquals(delegate);
}
else {
return delegate.equals(obj);
Modified:
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/PoolingDataSource.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/PoolingDataSource.java?view=diff&rev=469008&r1=469007&r2=469008
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/PoolingDataSource.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp/PoolingDataSource.java
Sun Oct 29 13:48:02 2006
@@ -209,25 +209,15 @@
return delegate.createStatement(resultSetType,
resultSetConcurrency);
}
-
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (obj == this) {
- return true;
- }
- if (delegate == null) {
- return false;
- }
- if (obj instanceof PoolGuardConnectionWrapper) {
- PoolGuardConnectionWrapper w = (PoolGuardConnectionWrapper)
obj;
- return delegate.equals(w.delegate);
+ public boolean innermostDelegateEquals(Connection c) {
+ Connection innerCon = super.getInnermostDelegate();
+ if (innerCon == null) {
+ return c == null;
} else {
- return delegate.equals(obj);
+ return innerCon.equals(c);
}
}
-
+
public boolean getAutoCommit() throws SQLException {
checkOpen();
return delegate.getAutoCommit();
@@ -263,6 +253,27 @@
return 0;
}
return delegate.hashCode();
+ }
+
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj == this) {
+ return true;
+ }
+ // Use superclass accessor to skip access test
+ Connection delegate = super.getInnermostDelegate();
+ if (delegate == null) {
+ return false;
+ }
+ if (obj instanceof DelegatingConnection) {
+ DelegatingConnection c = (DelegatingConnection) obj;
+ return c.innermostDelegateEquals(delegate);
+ }
+ else {
+ return delegate.equals(obj);
+ }
}
public boolean isReadOnly() throws SQLException {
Modified:
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestDelegatingConnection.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestDelegatingConnection.java?view=diff&rev=469008&r1=469007&r2=469008
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestDelegatingConnection.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestDelegatingConnection.java
Sun Oct 29 13:48:02 2006
@@ -77,6 +77,7 @@
assertTrue(!conn.equals(null));
assertTrue(conn.equals(conn2));
assertTrue(!conn.equals(conn3));
+ assertTrue(conn.equals(conn));
}
public void testCheckOpen() throws Exception {
Modified:
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestPoolingDataSource.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestPoolingDataSource.java?view=diff&rev=469008&r1=469007&r2=469008
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestPoolingDataSource.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestPoolingDataSource.java
Sun Oct 29 13:48:02 2006
@@ -143,6 +143,18 @@
con1.close();
}
+ public void testestPoolGuardConnectionWrapperEqualInnermost() throws
Exception {
+ ds.setAccessToUnderlyingConnectionAllowed(true);
+ DelegatingConnection con = (DelegatingConnection) ds.getConnection();
+ Connection inner = con.getInnermostDelegate();
+ ds.setAccessToUnderlyingConnectionAllowed(false);
+ DelegatingConnection con2 = new DelegatingConnection(inner);
+ assertTrue(con2.equals(con));
+ assertTrue(con.innermostDelegateEquals(con2.getInnermostDelegate()));
+ assertTrue(con2.innermostDelegateEquals(inner));
+ assertTrue(con.equals(con2));
+ }
+
/** Factory to return non-delegating connections for DBCP-198 test */
private class NonDelegatingPoolableConnectionFactory extends
PoolableConnectionFactory {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]