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 19:19:20 UTC

svn commit: r1384415 - /openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java

Author: rmannibucau
Date: Thu Sep 13 17:19:20 2012
New Revision: 1384415

URL: http://svn.apache.org/viewvc?rev=1384415&view=rev
Log:
delegating to bonecp its datasource creation since it manages itself the way properties should be parsed

Modified:
    openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java

Modified: openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java?rev=1384415&r1=1384414&r2=1384415&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java (original)
+++ openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java Thu Sep 13 17:19:20 2012
@@ -23,6 +23,7 @@ import org.apache.openejb.OpenEJBRuntime
 import org.apache.openejb.resource.jdbc.BasicDataSourceUtil;
 import org.apache.openejb.resource.jdbc.plugin.DataSourcePlugin;
 import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
+import org.apache.openejb.util.Duration;
 import org.apache.openejb.util.Strings;
 
 import javax.sql.DataSource;
@@ -31,6 +32,7 @@ import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
 import java.util.Map;
 import java.util.Properties;
+import java.util.concurrent.TimeUnit;
 import java.util.logging.Logger;
 
 public class BoneCPDataSourceCreator extends PoolDataSourceCreator {
@@ -41,8 +43,20 @@ public class BoneCPDataSourceCreator ext
 
     @Override
     public DataSource pool(final String name, final DataSource ds, final Properties properties) {
+        final BoneCPConfig config;
+        final BoneCP pool;
+        try {
+            config = new BoneCPConfig(prefixedProps(properties));
+            pool = new BoneCP(config);
+        } catch (Exception e) {
+            throw new IllegalArgumentException(e);
+        }
+        return build(BoneCPDataSourceProvidedPool.class, new BoneCPDataSourceProvidedPool(pool), new Properties());
+    }
+
+    private Properties prefixedProps(final Properties properties) {
         if (properties.containsKey("url")) {
-            properties.setProperty("jdbcUrl", properties.getProperty("url"));
+            properties.setProperty("", properties.getProperty("url"));
         }
 
         // updating relative url if mandatory (hsqldb for instance)
@@ -63,40 +77,40 @@ public class BoneCPDataSourceCreator ext
 
         // TODO: convert some more properties:
         // InitialSize, TestOnReturn, ConnectionProperties, MaxOpenPreparedStatements
-        // AccessToUnderlyingConnectionAllowed, MaxActive, PoolPreparedStatements, MinIdle, TestWhileIdle
+        // AccessToUnderlyingConnectionAllowed, PoolPreparedStatements, MinIdle, TestWhileIdle
         // NumTestsPerEvictionRun, MaxIdle, MaxWait, MinEvictableIdleTimeMillis, TestOnBorrow, ValidationQuery
 
         final String cipher = properties.getProperty("PasswordCipher");
         if (cipher == null || "PlainText".equals(cipher)) { // no need to warn
             properties.remove("PasswordCipher");
         }
-        if (properties.containsKey("TimeBetweenEvictionRunsMillis")) {
-            properties.setProperty("idleConnectionTestPeriodInSeconds", String.valueOf(Integer.parseInt((String) properties.remove("TimeBetweenEvictionRunsMillis")) / 1000));
+        if (properties.containsKey("TimeBetweenEvictionRuns")) {
+            properties.setProperty("idleConnectionTestPeriodInSeconds", Long.toString(new Duration((String) properties.remove("TimeBetweenEvictionRuns")).getTime(TimeUnit.SECONDS)));
         }
         if (properties.containsKey("UserName")) {
             properties.put("username", properties.remove("UserName"));
         }
+        if (properties.containsKey("MaxActive")) {
+            properties.put("maxConnectionsPerPartition", properties.remove("MaxActive"));
+        }
 
         // bonecp expects bonecp prefix in properties
         final Properties prefixedProps = new Properties();
         for (Map.Entry<Object, Object> entry : properties.entrySet()) {
-            prefixedProps.put("bonecp." + Strings.lcfirst((String) entry.getKey()), entry.getValue());
+            final String suffix = Strings.lcfirst((String) entry.getKey());
+            prefixedProps.put("bonecp." + suffix, entry.getValue());
         }
 
-        final BoneCPConfig config;
-        final BoneCP pool;
-        try {
-            config = new BoneCPConfig(prefixedProps);
-            pool = new BoneCP(config);
-        } catch (Exception e) {
-            throw new IllegalArgumentException(e);
-        }
-        return build(BoneCPDataSourceProvidedPool.class, new BoneCPDataSourceProvidedPool(pool), new Properties());
+        return prefixedProps;
     }
 
     @Override
     public DataSource pool(final String name, final String driver, final Properties properties) {
-        final BoneCPDataSource ds = build(BoneCPDataSource.class, properties);
+        // bonecp already have a kind of ObjectRecipe so simply giving it the values
+        final Properties props = new Properties();
+        props.put("properties", prefixedProps(properties));
+
+        final BoneCPDataSource ds = build(BoneCPDataSource.class, props);
         if (ds.getDriverClass() == null || ds.getDriverClass().isEmpty()) {
             ds.setDriverClass(driver);
         }