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);
             }
         }


Reply via email to