From d6989f1e54104d09b8af6d22cf46ea4f6fc5f4dc Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 10 Sep 2014 00:12:30 +0200 Subject: o Initial import of postgresql LISTEN/NOTIFY code. --- .../java/io/trygvis/jz14/db/RobustTimerTask.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/io/trygvis/jz14/db/RobustTimerTask.java (limited to 'src/main/java/io/trygvis/jz14/db/RobustTimerTask.java') diff --git a/src/main/java/io/trygvis/jz14/db/RobustTimerTask.java b/src/main/java/io/trygvis/jz14/db/RobustTimerTask.java new file mode 100644 index 0000000..af55aa7 --- /dev/null +++ b/src/main/java/io/trygvis/jz14/db/RobustTimerTask.java @@ -0,0 +1,47 @@ +package io.trygvis.jz14.db; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.TimerTask; +import java.util.concurrent.Callable; + +public abstract class RobustTimerTask extends TimerTask { + private static final Logger log = LoggerFactory.getLogger(RobustTimerTask.class); + + private final Class klass; + + private RobustTimerTask(Class klass) { + this.klass = klass; + } + + protected RobustTimerTask() { + this.klass = getClass(); + } + + public static TimerTask robustTimerTask(final TimerTask timerTask) { + return new RobustTimerTask(timerTask.getClass()) { + public void timerRun() throws Exception { + timerTask.run(); + } + }; + } + + public static TimerTask robustTimerTask(final Callable callable) { + return new RobustTimerTask(callable.getClass()) { + public void timerRun() throws Exception { + callable.call(); + } + }; + } + + public void run() { + try { + timerRun(); + } catch (Exception e) { + log.error("Timer task " + klass.getName() + " failed.", e); + } + } + + public abstract void timerRun() throws Exception; +} -- cgit v1.2.3