You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2016/01/02 00:30:51 UTC

deltaspike git commit: DELTASPIKE-1059 improved exception handling for JobRunnableAdapter

Repository: deltaspike
Updated Branches:
  refs/heads/master e81a1a45a -> 3d8a30629


DELTASPIKE-1059 improved exception handling for JobRunnableAdapter


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/3d8a3062
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/3d8a3062
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/3d8a3062

Branch: refs/heads/master
Commit: 3d8a30629d9784e5991d7c8c167f836403f5678d
Parents: e81a1a4
Author: gpetracek <gp...@apache.org>
Authored: Fri Jan 1 23:42:53 2016 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Sat Jan 2 00:29:16 2016 +0100

----------------------------------------------------------------------
 .../scheduler/impl/JobRunnableAdapter.java      | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/3d8a3062/deltaspike/modules/scheduler/impl/src/main/java/org/apache/deltaspike/scheduler/impl/JobRunnableAdapter.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/scheduler/impl/src/main/java/org/apache/deltaspike/scheduler/impl/JobRunnableAdapter.java b/deltaspike/modules/scheduler/impl/src/main/java/org/apache/deltaspike/scheduler/impl/JobRunnableAdapter.java
index ab03f27..7891fb2 100644
--- a/deltaspike/modules/scheduler/impl/src/main/java/org/apache/deltaspike/scheduler/impl/JobRunnableAdapter.java
+++ b/deltaspike/modules/scheduler/impl/src/main/java/org/apache/deltaspike/scheduler/impl/JobRunnableAdapter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.deltaspike.scheduler.impl;
 
+import org.apache.deltaspike.core.api.exception.control.event.ExceptionToCatchEvent;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
 import org.apache.deltaspike.core.util.ClassUtils;
 import org.quartz.Job;
@@ -25,10 +26,16 @@ import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
 import javax.enterprise.inject.Typed;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
 
+//configured via SchedulerBaseConfig
 @Typed()
 public class JobRunnableAdapter implements Job
 {
+    @Inject
+    private BeanManager beanManager;
+
     @Override
     public void execute(JobExecutionContext context) throws JobExecutionException
     {
@@ -36,6 +43,17 @@ public class JobRunnableAdapter implements Job
             ClassUtils.tryToLoadClassForName(context.getJobDetail().getKey().getName(), Runnable.class);
 
         Runnable runnableBean = BeanProvider.getContextualReference(jobClass);
-        runnableBean.run();
+
+        try
+        {
+            runnableBean.run();
+        }
+        catch (Throwable t)
+        {
+            //just in this case to reduce the implementation(s) of runnable (annotated with @Scheduled)
+            //to an absolute minimum.
+            //(custom implementations of org.quartz.Job need to do it on their own)
+            this.beanManager.fireEvent(new ExceptionToCatchEvent(t));
+        }
     }
 }