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;