Author: andygumbrecht
Date: Thu Aug  2 15:46:18 2012
New Revision: 1368558

URL: http://svn.apache.org/viewvc?rev=1368558&view=rev
Log:
Fix DbcpDataSource and DbcpManagedDataSource- Were calling 
DataSourceHelper.setUrl on self rather than the DataSource - This would lead to 
errors on redeployment. Also rename to prevent clash with underlaying protected 
variable.

EjbTimerServiceImpl check for shutdown.

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
 Thu Aug  2 15:46:18 2012
@@ -192,7 +192,6 @@ public class EjbTimerServiceImpl impleme
         } catch (SchedulerException e) {
             throw new OpenEJBRuntimeException("Unable to shutdown scheduler", 
e);
         }
-
     }
 
     @Override
@@ -229,21 +228,35 @@ public class EjbTimerServiceImpl impleme
      * @param timerData the timer to schedule
      */
     public void schedule(TimerData timerData) {
-        if (scheduler == null) throw new IllegalStateException("scheduler is 
configured properly");
+        if (scheduler == null) throw new IllegalStateException("Scheduler is 
not configured properly");
 
         timerData.setScheduler(scheduler);
 
-        Trigger trigger = timerData.getTrigger();
+        final Trigger trigger = timerData.getTrigger();
+
+        if (null == trigger) {
+
+            try {
+                if (!scheduler.isShutdown()) {
+                    log.warning("Failed to schedule: " + timerData.getInfo());
+                }
+            } catch (SchedulerException e) {
+                //Ignore
+            }
+        }
+
         if (trigger instanceof AbstractTrigger) { // is the case
             AbstractTrigger<?> atrigger = (AbstractTrigger<?>) trigger;
             atrigger.setJobName(OPENEJB_TIMEOUT_JOB_NAME);
             atrigger.setJobGroup(OPENEJB_TIMEOUT_JOB_GROUP_NAME);
         } else {
-            throw new OpenEJBRuntimeException("the trigger was not an 
AbstractTrigger - it shouldn't be possible");
+            throw new OpenEJBRuntimeException("the trigger was not an 
AbstractTrigger - Should not be possible: " + trigger);
         }
+
         JobDataMap triggerDataMap = trigger.getJobDataMap();
         triggerDataMap.put(EjbTimeoutJob.EJB_TIMERS_SERVICE, this);
         triggerDataMap.put(EjbTimeoutJob.TIMER_DATA, timerData);
+
         try {
             scheduler.scheduleJob(trigger);
         } catch (Exception e) {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicDataSource.java
 Thu Aug  2 15:46:18 2012
@@ -186,8 +186,8 @@ public class BasicDataSource extends org
         final ReentrantLock l = lock;
         l.lock();
         try {
-            if (dataSource != null) {
-                return dataSource;
+            if (super.dataSource != null) {
+                return super.dataSource;
             }
 
             // check password codec if available
@@ -207,13 +207,17 @@ public class BasicDataSource extends org
                 final String currentUrl = getUrl();
                 final String newUrl = helper.updatedUrl(currentUrl);
                 if (!currentUrl.equals(newUrl)) {
-                    setUrl(newUrl);
-            }
+                    super.setUrl(newUrl);
+                }
             }
 
             // create the data source
             if (helper == null || !helper.enableUserDirHack()) {
-                return super.createDataSource();
+                try {
+                    return super.createDataSource();
+                } catch (Throwable e) {
+                    throw new SQLException("Failed to create DataSource", e);
+                }
             } else {
                 // wrap super call with code that sets user.dir to 
openejb.base and then resets it
                 Properties systemProperties = System.getProperties();
@@ -222,7 +226,11 @@ public class BasicDataSource extends org
                 try {
                     File base = SystemInstance.get().getBase().getDirectory();
                     systemProperties.setProperty("user.dir", 
base.getAbsolutePath());
-                    return super.createDataSource();
+                    try {
+                        return super.createDataSource();
+                    } catch (Throwable e) {
+                        throw new SQLException("Failed to create DataSource", 
e);
+                    }
                 } finally {
                     systemProperties.setProperty("user.dir", userDir);
                 }
@@ -262,7 +270,7 @@ public class BasicDataSource extends org
         try {
 
             if (null == this.logger) {
-                this.logger = (Logger) 
Reflections.invokeByReflection(dataSource, "getParentLogger", new Class<?>[0], 
null);
+                this.logger = (Logger) 
Reflections.invokeByReflection(super.dataSource, "getParentLogger", new 
Class<?>[0], null);
             }
 
             return this.logger;

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/BasicManagedDataSource.java
 Thu Aug  2 15:46:18 2012
@@ -180,8 +180,8 @@ public class BasicManagedDataSource exte
         final ReentrantLock l = lock;
         l.lock();
         try {
-            if (dataSource != null) {
-                return dataSource;
+            if (super.dataSource != null) {
+                return super.dataSource;
             }
 
             // check password codec if available
@@ -201,14 +201,18 @@ public class BasicManagedDataSource exte
                 final String currentUrl = getUrl();
                 final String newUrl = helper.updatedUrl(currentUrl);
                 if (!currentUrl.equals(newUrl)) {
-                    setUrl(newUrl);
-            }
+                    super.setUrl(newUrl);
+                }
             }
 
             wrapTransactionManager();
             // create the data source
             if (helper == null || !helper.enableUserDirHack()) {
-                return super.createDataSource();
+                try {
+                    return super.createDataSource();
+                } catch (Throwable e) {
+                    throw new SQLException("Failed to create DataSource", e);
+                }
             } else {
                 // wrap super call with code that sets user.dir to 
openejb.base and then resets it
                 Properties systemProperties = System.getProperties();
@@ -217,7 +221,11 @@ public class BasicManagedDataSource exte
                 try {
                     File base = SystemInstance.get().getBase().getDirectory();
                     systemProperties.setProperty("user.dir", 
base.getAbsolutePath());
-                    return super.createDataSource();
+                    try {
+                        return super.createDataSource();
+                    } catch (Throwable e) {
+                        throw new SQLException("Failed to create DataSource", 
e);
+                    }
                 } finally {
                     systemProperties.setProperty("user.dir", userDir);
                 }
@@ -261,7 +269,7 @@ public class BasicManagedDataSource exte
         try {
 
             if (null == this.logger) {
-                this.logger = (Logger) 
DataSource.class.getDeclaredMethod("getParentLogger").invoke(dataSource);
+                this.logger = (Logger) 
DataSource.class.getDeclaredMethod("getParentLogger").invoke(super.dataSource);
             }
 
             return this.logger;

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSource.java
 Thu Aug  2 15:46:18 2012
@@ -25,22 +25,22 @@ import java.sql.SQLException;
 
 public class DbcpDataSource extends BasicDataSource {
 
-    private final DataSource dataSource;
+    protected final DataSource ds;
 
     public DbcpDataSource(final String name, final DataSource dataSource) {
         super(name);
-        this.dataSource = dataSource;
+        this.ds = dataSource;
     }
 
     @Override
     protected ConnectionFactory createConnectionFactory() throws SQLException {
-        return new DataSourceConnectionFactory(dataSource, username, password);
+        return new DataSourceConnectionFactory(this.ds, username, password);
     }
 
     @Override
     public void setJdbcUrl(String url) {
         try {
-            DataSourceHelper.setUrl(this, url);
+            DataSourceHelper.setUrl(this.ds, url);
         } catch (Throwable e1) {
             super.setUrl(url);
         }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java?rev=1368558&r1=1368557&r2=1368558&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpManagedDataSource.java
 Thu Aug  2 15:46:18 2012
@@ -31,17 +31,17 @@ import java.sql.SQLException;
 
 public class DbcpManagedDataSource extends BasicManagedDataSource {
 
-    private final DataSource dataSource;
+    private final DataSource ds;
 
     public DbcpManagedDataSource(final String name, final DataSource 
dataSource) {
         super(name);
-        this.dataSource = dataSource;
+        this.ds = dataSource;
     }
 
     @Override
     public void setJdbcUrl(String url) {
         try {
-            DataSourceHelper.setUrl(this, url);
+            DataSourceHelper.setUrl(this.ds, url);
         } catch (Throwable e1) {
             super.setUrl(url);
         }
@@ -50,10 +50,10 @@ public class DbcpManagedDataSource exten
     @Override
     protected ConnectionFactory createConnectionFactory() throws SQLException {
 
-        if (dataSource instanceof XADataSource) {
+        if (this.ds instanceof XADataSource) {
 
             // Create the XAConectionFactory using the XA data source
-            XADataSource xaDataSourceInstance = (XADataSource) dataSource;
+            XADataSource xaDataSourceInstance = (XADataSource) this.ds;
             XAConnectionFactory xaConnectionFactory = new 
DataSourceXAConnectionFactory(getTransactionManager(), xaDataSourceInstance, 
username, password);
             
setTransactionRegistry(xaConnectionFactory.getTransactionRegistry());
             return xaConnectionFactory;
@@ -61,7 +61,7 @@ public class DbcpManagedDataSource exten
         } else {
 
             // If xa data source is not specified a DriverConnectionFactory is 
created and wrapped with a LocalXAConnectionFactory
-            ConnectionFactory connectionFactory = new 
DataSourceConnectionFactory(dataSource, username, password);
+            ConnectionFactory connectionFactory = new 
DataSourceConnectionFactory(this.ds, username, password);
             XAConnectionFactory xaConnectionFactory = new 
LocalXAConnectionFactory(getTransactionManager(), connectionFactory);
             
setTransactionRegistry(xaConnectionFactory.getTransactionRegistry());
             return xaConnectionFactory;


Reply via email to