Author: fhanik
Date: Mon Nov 24 12:33:17 2008
New Revision: 720280
URL: http://svn.apache.org/viewvc?rev=720280&view=rev
Log:
implement useEquals for the connection pool itself, does not apply to
interceptors, they can manage that on their own
Modified:
tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
Modified: tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml?rev=720280&r1=720279&r2=720280&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml (original)
+++ tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml Mon Nov 24 12:33:17 2008
@@ -324,7 +324,11 @@
implementation for the list of the idle connections. The default
value is <code>false</code>.
</p>
</attribute>
-
+ <attribute name="useEquals" required="false">
+ <p>(boolean) Set to true if you wish the <code>ProxyConnection</code>
class to use <code>String.equals</code> instead of
+ <code>==</code> when comparing method names. This property does not
apply to added interceptors as those are configured individually.
+ The default value is <code>false</code>.
+ </p>
</attributes>
</subsection>
</section>
Modified:
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=720280&r1=720279&r2=720280&view=diff
==============================================================================
---
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
(original)
+++
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
Mon Nov 24 12:33:17 2008
@@ -131,7 +131,7 @@
JdbcInterceptor handler = con.getHandler();
if (handler==null) {
//build the proxy handler
- handler = new ProxyConnection(this,con);
+ handler = new
ProxyConnection(this,con,getPoolProperties().isUseEquals());
//set up the interceptor chain
PoolProperties.InterceptorDefinition[] proxies =
getPoolProperties().getJdbcInterceptorsAsArray();
for (int i=proxies.length-1; i>=0; i--) {
Modified:
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java?rev=720280&r1=720279&r2=720280&view=diff
==============================================================================
---
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
(original)
+++
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
Mon Nov 24 12:33:17 2008
@@ -102,6 +102,8 @@
protected final static String PROP_JMX_ENABLED = "jmxEnabled";
protected final static String PROP_FAIR_QUEUE = "fairQueue";
+ protected static final String PROP_USE_EQUALS = "useEquals";
+
public static final int UNKNOWN_TRANSACTIONISOLATION = -1;
@@ -138,7 +140,8 @@
PROP_INITSQL,
PROP_INTERCEPTORS,
PROP_JMX_ENABLED,
- PROP_FAIR_QUEUE
+ PROP_FAIR_QUEUE,
+ PROP_USE_EQUALS
};
// -------------------------------------------------- ObjectFactory Methods
@@ -389,6 +392,11 @@
dataSource.getPoolProperties().setFairQueue(Boolean.parseBoolean(value));
}
+ value = properties.getProperty(PROP_USE_EQUALS);
+ if (value != null) {
+
dataSource.getPoolProperties().setUseEquals(Boolean.parseBoolean(value));
+ }
+
// Return the configured DataSource instance
DataSource ds = getDataSource(dataSource);
Modified:
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java?rev=720280&r1=720279&r2=720280&view=diff
==============================================================================
---
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
(original)
+++
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java
Mon Nov 24 12:33:17 2008
@@ -316,5 +316,9 @@
throw new RuntimeException(x);
}
}
+
+ public void setUseEquals(boolean useEquals) {
+ this.getPoolProperties().setUseEquals(useEquals);
+ }
}
Modified:
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java?rev=720280&r1=720279&r2=720280&view=diff
==============================================================================
---
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
(original)
+++
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
Mon Nov 24 12:33:17 2008
@@ -63,6 +63,7 @@
protected boolean testOnConnect =false;
private String jdbcInterceptors=null;
private boolean fairQueue = false;
+ private boolean useEquals = false;
private InterceptorDefinition[] interceptors = null;
@@ -425,6 +426,8 @@
return result;
}
+
+
public static class InterceptorDefinition {
protected String className;
protected List<InterceptorProperty> properties = new
ArrayList<InterceptorProperty>();
@@ -465,4 +468,12 @@
}
}
+ public boolean isUseEquals() {
+ return useEquals;
+ }
+
+ public void setUseEquals(boolean useEquals) {
+ this.useEquals = useEquals;
+ }
+
}
Modified:
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java?rev=720280&r1=720279&r2=720280&view=diff
==============================================================================
---
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
(original)
+++
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
Mon Nov 24 12:33:17 2008
@@ -44,9 +44,10 @@
this.pool = pool;
}
- protected ProxyConnection(ConnectionPool parent, PooledConnection con)
throws SQLException {
+ protected ProxyConnection(ConnectionPool parent, PooledConnection con,
boolean useEquals) throws SQLException {
pool = parent;
connection = con;
+ setUseEquals(useEquals);
}
public void reset(ConnectionPool parent, PooledConnection con) {
@@ -68,16 +69,16 @@
}
public Object invoke(Object proxy, Method method, Object[] args) throws
Throwable {
- if (ISCLOSED_VAL==method.getName()) {
+ if (compare(ISCLOSED_VAL,method)) {
return isClosed();
}
- if (CLOSE_VAL==method.getName()) {
+ if (compare(CLOSE_VAL,method)) {
if (isClosed()) return null; //noop for already closed.
PooledConnection poolc = this.connection;
this.connection = null;
pool.returnConnection(poolc);
return null;
- } else if (TOSTRING_VAL==method.getName()) {
+ } else if (compare(TOSTRING_VAL,method)) {
return this.toString();
}
if (isClosed()) throw new SQLException("Connection has already been
closed.");
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]