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/08/02 09:50:40 UTC

svn commit: r1368373 - in /openejb/trunk/openejb/tomee/tomee-jdbc/src: main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java test/java/org/apache/tomee/jdbc/TomcatPoolTest.java

Author: rmannibucau
Date: Thu Aug  2 07:50:40 2012
New Revision: 1368373

URL: http://svn.apache.org/viewvc?rev=1368373&view=rev
Log:
better consistency with tomcat-jdbc datasource unused property logging

Modified:
    openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
    openejb/trunk/openejb/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.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=1368373&r1=1368372&r2=1368373&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 Aug  2 07:50:40 2012
@@ -2,8 +2,9 @@ package org.apache.tomee.jdbc;
 
 import org.apache.openejb.monitoring.LocalMBeanServer;
 import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
 import org.apache.tomcat.jdbc.pool.ConnectionPool;
-import org.apache.tomcat.jdbc.pool.DataSourceFactory;
 import org.apache.tomcat.jdbc.pool.PoolConfiguration;
 import org.apache.tomcat.jdbc.pool.PoolProperties;
 
@@ -18,6 +19,8 @@ import java.util.Map;
 import java.util.Properties;
 
 public class TomEEDataSourceCreator extends PoolDataSourceCreator {
+    private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEDataSourceCreator.class);
+
     @Override
     public DataSource pool(final String name, final DataSource ds, Properties properties) {
         final Properties converted = new Properties();
@@ -31,7 +34,7 @@ public class TomEEDataSourceCreator exte
         } catch (SQLException e) {
             throw new IllegalStateException(e);
         }
-        return build(TomEEDataSource.class, new TomEEDataSource(pool, name), properties);
+        return build(TomEEDataSource.class, new TomEEDataSource(pool, name), converted);
     }
 
     @Override
@@ -39,7 +42,8 @@ public class TomEEDataSourceCreator exte
         final Properties converted = new Properties();
         converted.setProperty("name", name);
         updateProperties(properties, converted, driver);
-        return new TomEEDataSource(DataSourceFactory.parsePoolProperties(converted), name);
+        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) {
@@ -47,16 +51,34 @@ public class TomEEDataSourceCreator exte
         if (driver != null) {
             converted.setProperty("driverClassName", driver);
         }
+        if (properties.containsKey("JdbcDriver") && properties.getProperty("JdbcDriver") != null) {
+            converted.setProperty("driverClassName", (String) properties.remove("JdbcDriver"));
+        }
         if (properties.containsKey("JdbcUrl")) {
-            converted.setProperty("url", properties.getProperty("JdbcUrl"));
+            converted.setProperty("url", (String) properties.remove("JdbcUrl"));
         }
         if (properties.containsKey("user")) {
-            converted.setProperty("username", properties.getProperty("user"));
+            converted.setProperty("username", (String) properties.remove("user"));
         }
         for (Map.Entry<Object, Object> entry : properties.entrySet()) {
+            final String key = entry.getKey().toString();
             final String value = entry.getValue().toString().trim();
             if (!value.isEmpty()) {
-                converted.put(entry.getKey(), entry.getValue());
+                if ("PasswordCipher".equals(key) && "PlainText".equals(value)) { // no need to warn about it
+                    continue;
+                }
+                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");
+                    }
+                    continue;
+                }
+
+                converted.put(key, value);
             }
         }
     }
@@ -107,7 +129,7 @@ public class TomEEDataSourceCreator exte
         }
     }
 
-    private static class ContantHashCodeHandler implements InvocationHandler {
+    private static class ContantHashCodeHandler implements InvocationHandler { // will be fixed in tomcat-jdbc in next version
         private final Object delegate;
         private final int hashCode;
 

Modified: openejb/trunk/openejb/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java?rev=1368373&r1=1368372&r2=1368373&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java (original)
+++ openejb/trunk/openejb/tomee/tomee-jdbc/src/test/java/org/apache/tomee/jdbc/TomcatPoolTest.java Thu Aug  2 07:50:40 2012
@@ -65,6 +65,7 @@ public class TomcatPoolTest {
         p.put("managed.UserName", USER);
         p.put("managed.Password", PASSWORD);
         p.put("managed.JtaManaged", "true");
+        p.put("managed.JdbcInterceptors", "StatementCache(prepared=true)");
         return p;
     }