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]

Reply via email to