Author: andygumbrecht
Date: Thu Nov 24 07:53:38 2011
New Revision: 1205747
URL: http://svn.apache.org/viewvc?rev=1205747&view=rev
Log:
Added 'setMaxWait(int)' to BasicDataSource which calls 'setMaxWait(long)'.
The property was not being set if an int was specified, so now both work.
env.put("maxWait", 10000);
env.put("maxWait", 10000L);
Also pushed down the Logger and catch Throwables.
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicDataSource.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicDataSource.java?rev=1205747&r1=1205746&r2=1205747&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicDataSource.java
Thu Nov 24 07:53:38 2011
@@ -18,7 +18,9 @@ package org.apache.openejb.resource.jdbc
import java.io.File;
import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
import java.util.Properties;
+import java.util.logging.Logger;
import javax.sql.DataSource;
@@ -88,6 +90,10 @@ public class BasicDataSource extends org
super.setDefaultTransactionIsolation(level);
}
+ public synchronized void setMaxWait(final int maxWait) {
+ super.setMaxWait((long)maxWait);
+ }
+
protected synchronized DataSource createDataSource() throws SQLException {
if (dataSource != null) {
return dataSource;
@@ -129,4 +135,12 @@ public class BasicDataSource extends org
}
}
+ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+ try {
+ return (Logger)
DataSource.class.getDeclaredMethod("getParentLogger").invoke(dataSource);
+ } catch (Throwable e) {
+ throw new SQLFeatureNotSupportedException();
+ }
+ }
+
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java?rev=1205747&r1=1205746&r2=1205747&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java
Thu Nov 24 07:53:38 2011
@@ -16,20 +16,21 @@
*/
package org.apache.openejb.resource.jdbc;
+import org.apache.openejb.loader.SystemInstance;
+
+import javax.sql.DataSource;
import java.io.File;
import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
import java.util.Properties;
-
-import javax.sql.DataSource;
-
-import org.apache.openejb.loader.SystemInstance;
+import java.util.logging.Logger;
public class BasicManagedDataSource extends
org.apache.commons.dbcp.managed.BasicManagedDataSource {
-
+
/**
* The password codec to be used to retrieve the plain text password from a
* ciphered value.
- *
+ * <p/>
* <em>The default is no codec.</em>. In other words, it means password is
* not ciphered. The {@link PlainTextPasswordCipher} can also be used.
*/
@@ -38,7 +39,7 @@ public class BasicManagedDataSource exte
/**
* Returns the password codec class name to use to retrieve plain text
* password.
- *
+ *
* @return the password codec class
*/
public synchronized String getPasswordCipher() {
@@ -49,14 +50,13 @@ public class BasicManagedDataSource exte
* <p>
* Sets the {@link #passwordCipher}.
* </p>
- *
- * @param passwordCipher
- * password codec value
+ *
+ * @param passwordCipher password codec value
*/
public synchronized void setPasswordCipher(String passwordCipher) {
this.passwordCipher = passwordCipher;
}
-
+
public synchronized String getUserName() {
return super.getUsername();
}
@@ -87,11 +87,15 @@ public class BasicManagedDataSource exte
super.setDefaultTransactionIsolation(level);
}
+ public synchronized void setMaxWait(final int maxWait) {
+ super.setMaxWait((long)maxWait);
+ }
+
protected synchronized DataSource createDataSource() throws SQLException {
if (dataSource != null) {
return dataSource;
}
-
+
// check password codec if available
if (null != passwordCipher) {
PasswordCipher cipher =
BasicDataSourceUtil.getPasswordCipher(passwordCipher);
@@ -132,7 +136,16 @@ public class BasicManagedDataSource exte
protected void wrapTransactionManager() {
}
- public synchronized void close() throws SQLException {
- }
-
+ public synchronized void close() throws SQLException {
+ //TODO - Prevent unuathorized call
+ super.close();
+ }
+
+ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+ try {
+ return (Logger)
DataSource.class.getDeclaredMethod("getParentLogger").invoke(dataSource);
+ } catch (Throwable e) {
+ throw new SQLFeatureNotSupportedException();
+ }
+ }
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1205747&r1=1205746&r2=1205747&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
Thu Nov 24 07:53:38 2011
@@ -24,6 +24,7 @@ import org.apache.commons.dbcp.managed.T
import org.apache.commons.dbcp.managed.XAConnectionFactory;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.XAResourceWrapper;
+import org.apache.openejb.util.LogCategory;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
@@ -32,24 +33,21 @@ import javax.sql.XADataSource;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.SQLException;
-import java.sql.SQLFeatureNotSupportedException;
import java.util.Map;
import java.util.Properties;
-import java.util.logging.Logger;
/**
* @version $Rev$ $Date$
*/
public class DataSourceFactory {
- public static DataSource create(boolean managed, Class impl, String
definition) throws IllegalAccessException, InstantiationException, IOException {
+ public static DataSource create(final boolean managed, final Class impl,
final String definition) throws IllegalAccessException, InstantiationException,
IOException {
+ final org.apache.commons.dbcp.BasicDataSource ds;
- org.apache.commons.dbcp.BasicDataSource ds;
- if (DataSource.class.isAssignableFrom(impl)) {
+ if (DataSource.class.isAssignableFrom(impl) &&
!Boolean.parseBoolean(System.getProperty("org.apache.openejb.resource.jdbc.hot.deploy",
"false"))) {
final ObjectRecipe recipe = new ObjectRecipe(impl);
recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES);
@@ -115,23 +113,16 @@ public class DataSourceFactory {
}
@Override
- public void setJdbcUrl(String string) {
+ public void setJdbcUrl(String url) {
// TODO This is a big whole and we will need to rework this
try {
+ // only works if hsql is available and datasource is an HSQL
jdbcDataSource
final Class<?> hsql =
this.getClass().getClassLoader().loadClass("org.hsqldb.jdbc.JDBCDataSource");
final Method setDatabase = hsql.getMethod("setDatabase",
String.class);
setDatabase.setAccessible(true);
- setDatabase.invoke(dataSource, string);
- } catch (Exception e) {
- // only works if hsql is available and datasource is an HSQL
jdbcDataSource
- }
- }
-
- public Logger getParentLogger() throws SQLFeatureNotSupportedException
{
- try {
- return (Logger)
DataSource.class.getDeclaredMethod("getParentLogger").invoke(dataSource);
- } catch (Exception e) {
- return null;
+ setDatabase.invoke(dataSource, url);
+ } catch (Throwable e) {
+ super.setUrl(url);
}
}
}
@@ -145,10 +136,16 @@ public class DataSourceFactory {
}
@Override
- public void setJdbcUrl(String string) {
+ public void setJdbcUrl(String url) {
// TODO This is a big whole and we will need to rework this
- if (dataSource instanceof org.hsqldb.jdbc.JDBCDataSource) {
-
((org.hsqldb.jdbc.JDBCDataSource)dataSource).setDatabase(string);
+ try {
+ // only works if hsql is available and datasource is an HSQL
jdbcDataSource
+ final Class<?> hsql =
this.getClass().getClassLoader().loadClass("org.hsqldb.jdbc.JDBCDataSource");
+ final Method setDatabase = hsql.getMethod("setDatabase",
String.class);
+ setDatabase.setAccessible(true);
+ setDatabase.invoke(dataSource, url);
+ } catch (Throwable e) {
+ super.setUrl(url);
}
}
@@ -173,20 +170,12 @@ public class DataSourceFactory {
}
}
- public Logger getParentLogger() throws SQLFeatureNotSupportedException
{
- try {
- return (Logger)
DataSource.class.getDeclaredMethod("getParentLogger").invoke(dataSource);
- } catch (Exception e) {
- return null;
- }
- }
-
public void setTransactionRegistry(TransactionRegistry registry) {
try {
final Field field =
org.apache.commons.dbcp.managed.BasicManagedDataSource.class.getDeclaredField("transactionRegistry");
field.setAccessible(true);
field.set(this, registry);
- } catch (Exception e) {
+ } catch (Throwable e) {
throw new IllegalStateException(e);
}
}