@Override public long startWork( final Work work, long startTimeout, ExecutionContext execContext, final WorkListener workListener) throws WorkException { try { workTracker.addWork(work); TrackeableWork trackeableWork = new TrackeableWork(work); return delegateHolder .getWorkManager() .startWork( trackeableWork, startTimeout, execContext, workListenerWrapperFactory.create(work, workListener)); } catch (WorkException e) { workTracker.removeWork(work); throw e; } catch (RuntimeException e) { workTracker.removeWork(work); throw e; } }
@Override public void scheduleWork(final Work work) throws WorkException { try { workTracker.addWork(work); Work wrappedWork = new TrackeableWork(work); delegateHolder.getWorkManager().scheduleWork(wrappedWork); } catch (WorkException e) { workTracker.removeWork(work); throw e; } catch (RuntimeException e) { workTracker.removeWork(work); throw e; } }
@Override public void doWork(Work work) throws WorkException { workTracker.addWork(work); try { delegateHolder.getWorkManager().doWork(work); } finally { workTracker.removeWork(work); } }
@Override public void execute(final Runnable runnable) { try { workTracker.addWork(runnable); delegateHolder.getWorkManager().execute(new TrackeableRunnable(runnable)); } catch (RuntimeException e) { workTracker.removeWork(runnable); throw e; } }
@Override public void doWork( Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException { workTracker.addWork(work); try { delegateHolder.getWorkManager().doWork(work, startTimeout, execContext, workListener); } finally { workTracker.removeWork(work); } }