You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/09/13 12:26:15 UTC

svn commit: r1384268 - /openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java

Author: rmannibucau
Date: Thu Sep 13 10:26:14 2012
New Revision: 1384268

URL: http://svn.apache.org/viewvc?rev=1384268&view=rev
Log:
better tomcat-jdbc handling

Modified:
    openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java

Modified: openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java?rev=1384268&r1=1384267&r2=1384268&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java (original)
+++ openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java Thu Sep 13 10:26:14 2012
@@ -26,6 +26,7 @@ import org.apache.openejb.resource.jdbc.
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Strings;
+import org.apache.openejb.util.SuperProperties;
 import org.apache.openejb.util.reflection.Reflections;
 import org.apache.tomcat.jdbc.pool.ConnectionPool;
 import org.apache.tomcat.jdbc.pool.PoolConfiguration;
@@ -49,7 +50,7 @@ public class TomEEDataSourceCreator exte
     @Override
     public DataSource pool(final String name, final DataSource ds, Properties properties) {
         final Properties converted = new Properties();
-        updateProperties(properties, converted, null);
+        updateProperties(new SuperProperties(properties).caseInsensitive(true), converted, null);
 
         final PoolConfiguration config = build(PoolProperties.class, converted);
         config.setDataSource(ds);
@@ -66,24 +67,36 @@ public class TomEEDataSourceCreator exte
     public DataSource pool(final String name, final String driver, final Properties properties) {
         final Properties converted = new Properties();
         converted.setProperty("name", name);
-        updateProperties(properties, converted, driver);
+        updateProperties(new SuperProperties(properties).caseInsensitive(true), converted, driver);
         final PoolConfiguration config = build(PoolProperties.class, converted);
         return build(TomEEDataSource.class, new TomEEDataSource(config, name), converted);
     }
 
-    private void updateProperties(final Properties properties, final Properties converted, final String driver) {
+    private void updateProperties(final SuperProperties properties, final Properties converted, final String driver) {
         // some compatibility with old dbcp style
         if (driver != null) {
             converted.setProperty("driverClassName", driver);
         }
-        if (properties.getProperty("JdbcDriver") != null) {
-            converted.setProperty("driverClassName", (String) properties.remove("JdbcDriver"));
+        if (properties.containsKey("JdbcDriver")) {
+            converted.setProperty("driverClassName", (String) properties.get("JdbcDriver"));
         }
         if (properties.containsKey("JdbcUrl")) {
-            converted.setProperty("url", (String) properties.remove("JdbcUrl"));
+            converted.setProperty("url", (String) properties.get("JdbcUrl"));
         }
         if (properties.containsKey("user")) {
-            converted.setProperty("username", (String) properties.remove("user"));
+            converted.setProperty("username", (String) properties.get("user"));
+        }
+        if (properties.containsKey("user")) {
+            converted.setProperty("username", (String) properties.get("user"));
+        }
+        if (properties.containsKey("maxWaitTime")) {
+            converted.setProperty("maxWait", (String) properties.get("maxWaitTime"));
+        }
+        if (properties.containsKey("timeBetweenEvictionRuns")) {
+            converted.setProperty("timeBetweenEvictionRunsMillis", (String) properties.get("timeBetweenEvictionRuns"));
+        }
+        if (properties.containsKey("minEvictableIdleTime")) {
+            converted.setProperty("minEvictableIdleTimeMillis", (String) properties.get("minEvictableIdleTime"));
         }
         for (Map.Entry<Object, Object> entry : properties.entrySet()) {
             final String key = entry.getKey().toString();
@@ -94,11 +107,10 @@ public class TomEEDataSourceCreator exte
                 }
                 if ("MaxOpenPreparedStatements".equalsIgnoreCase(key) || "PoolPreparedStatements".equalsIgnoreCase(key)) {
                     String interceptors = properties.getProperty("jdbcInterceptors");
-                    if (interceptors == null) {
-                        interceptors = properties.getProperty("JdbcInterceptors");
-                    }
                     if (interceptors == null || !interceptors.contains("StatementCache")) {
-                        LOGGER.warning("Tomcat-jdbc doesn't support '" + key + "' property, please configure the StatementCache jdbc interceptor");
+                        converted.setProperty("jdbcInterceptors",
+                                "StatementCache(max=" + properties.getProperty("MaxOpenPreparedStatements", "128") + ")");
+                        LOGGER.debug("Tomcat-jdbc StatementCache added to handle prepared statement cache/pool");
                     }
                     continue;
                 }