Author: rmannibucau
Date: Tue Aug 21 12:56:03 2012
New Revision: 1375514

URL: http://svn.apache.org/viewvc?rev=1375514&view=rev
Log:
minor fix on pool of connection recipe management + still some arquillian tweak 
(cleanonstartup) to try to get more info on buildbot failures

Modified:
    
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
    
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
    
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
    
openejb/trunk/openejb/server/openejb-bonecp/src/main/java/org/apache/openejb/bonecp/BoneCPDataSourceCreator.java
    
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java?rev=1375514&r1=1375513&r2=1375514&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
 Tue Aug 21 12:56:03 2012
@@ -36,6 +36,7 @@ public class RemoteTomEEConfiguration ex
     private boolean removeUnusedWebapps = true;
     private int ajpPort = 8009;
     private String conf;
+    private boolean cleanOnStartUp;
 
     public String getGroupId() {
         return groupId;
@@ -123,4 +124,12 @@ public class RemoteTomEEConfiguration ex
         }
         return toInts(value);
     }
+
+    public void setCleanOnStartUp(boolean clearOnStartUp) {
+        this.cleanOnStartUp = clearOnStartUp;
+    }
+
+    public boolean getCleanOnStartUp() {
+        return cleanOnStartUp;
+    }
 }

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1375514&r1=1375513&r2=1375514&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
 Tue Aug 21 12:56:03 2012
@@ -73,6 +73,10 @@ public class RemoteTomEEContainer extend
     private void configure() throws LifecycleException, IOException {
         final File workingDirectory = new 
File(configuration.getDir()).getAbsoluteFile();
 
+        if (configuration.getCleanOnStartUp()) {
+            Files.delete(workingDirectory);
+        }
+
         if (workingDirectory.exists()) {
 
             Files.assertDir(workingDirectory);

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml?rev=1375514&r1=1375513&r2=1375514&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/arquillian.xml
 Tue Aug 21 12:56:03 2012
@@ -40,6 +40,7 @@
       <property name="dir">target/apache-tomee-remote</property>
       <property 
name="appWorkingDir">target/arquillian-test-working-dir</property>
       <property name="portRange">20000-30000</property>
+      <property name="cleanOnStartUp">true</property>
       <property name="properties">
         openejb.classloader.forced-load=org.apache.openejb.arquillian.tests
       </property>

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java?rev=1375514&r1=1375513&r2=1375514&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/PoolDataSourceCreator.java
 Tue Aug 21 12:56:03 2012
@@ -80,7 +80,9 @@ public abstract class PoolDataSourceCrea
         recipeOptions(serviceRecipe);
         serviceRecipe.setAllProperties(properties);
         final T value = (T) serviceRecipe.create();
-        recipes.put(value, serviceRecipe);
+        if (value instanceof DataSource) { // avoid to keep config objects
+            recipes.put(value, serviceRecipe);
+        }
         return value;
     }
 
@@ -93,7 +95,7 @@ public abstract class PoolDataSourceCrea
         return value;
     }
 
-    private void recipeOptions(final ObjectRecipe recipe) {
+    private void recipeOptions(final ObjectRecipe recipe) { // important to 
not set "properties" attribute because pools often use it for sthg else
         recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES);
         recipe.allow(Option.IGNORE_MISSING_PROPERTIES);
     }

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=1375514&r1=1375513&r2=1375514&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
 Tue Aug 21 12:56:03 2012
@@ -20,11 +20,18 @@ import com.jolbox.bonecp.BoneCP;
 import com.jolbox.bonecp.BoneCPConfig;
 import com.jolbox.bonecp.BoneCPDataSource;
 import org.apache.openejb.OpenEJBRuntimeException;
+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.Strings;
 
 import javax.sql.DataSource;
 import java.lang.reflect.Field;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Map;
 import java.util.Properties;
+import java.util.logging.Logger;
 
 public class BoneCPDataSourceCreator extends PoolDataSourceCreator {
     @Override
@@ -38,15 +45,53 @@ public class BoneCPDataSourceCreator ext
             properties.setProperty("jdbcUrl", properties.getProperty("url"));
         }
 
+        // updating relative url if mandatory (hsqldb for instance)
+        final String currentUrl = properties.getProperty("jdbcUrl");
+        if (currentUrl != null) {
+            try {
+                final DataSourcePlugin helper = 
BasicDataSourceUtil.getDataSourcePlugin(currentUrl);
+                if (helper != null) {
+                    final String newUrl = helper.updatedUrl(currentUrl);
+                    if (!currentUrl.equals(newUrl)) {
+                        properties.setProperty("jdbcUrl", newUrl);
+                    }
+                }
+            } catch (SQLException ignored) {
+                // no-op
+            }
+        }
+
+        // TODO: convert some more properties:
+        // InitialSize, TestOnReturn, ConnectionProperties, 
MaxOpenPreparedStatements
+        // AccessToUnderlyingConnectionAllowed, MaxActive, 
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("UserName")) {
+            properties.put("username", properties.remove("UserName"));
+        }
+
+        // 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 BoneCPConfig config;
         final BoneCP pool;
         try {
-            config = new BoneCPConfig(properties);
+            config = new BoneCPConfig(prefixedProps);
             pool = new BoneCP(config);
         } catch (Exception e) {
             throw new IllegalArgumentException(e);
         }
-        return new BoneCPDataSourceProvidedPool(pool);
+        return build(BoneCPDataSourceProvidedPool.class, new 
BoneCPDataSourceProvidedPool(pool), new Properties());
     }
 
     @Override
@@ -79,5 +124,10 @@ public class BoneCPDataSourceCreator ext
                 throw new OpenEJBRuntimeException(e);
             }
         }
+
+        // @Override // java 7
+        public Logger getParentLogger() throws SQLFeatureNotSupportedException 
{
+            throw new SQLFeatureNotSupportedException();
+        }
     }
 }

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=1375514&r1=1375513&r2=1375514&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
 Tue Aug 21 12:56:03 2012
@@ -25,6 +25,7 @@ import org.apache.openejb.resource.jdbc.
 import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.Strings;
 import org.apache.openejb.util.reflection.Reflections;
 import org.apache.tomcat.jdbc.pool.ConnectionPool;
 import org.apache.tomcat.jdbc.pool.PoolConfiguration;
@@ -101,7 +102,7 @@ public class TomEEDataSourceCreator exte
                     continue;
                 }
 
-                converted.put(uncapitalize(key), value);
+                converted.put(Strings.lcfirst(key), value);
             }
         }
 
@@ -121,13 +122,6 @@ public class TomEEDataSourceCreator exte
         }
     }
 
-    private static String uncapitalize(final String key) {
-        if (key == null || key.isEmpty()) {
-            return key;
-        }
-        return Character.toLowerCase(key.charAt(0)) + key.substring(1);
-    }
-
     @Override
     public void doDestroy(final DataSource object) throws Throwable {
         org.apache.tomcat.jdbc.pool.DataSource ds = 
(org.apache.tomcat.jdbc.pool.DataSource) object;


Reply via email to