@Override public void release() { this.work.release(); } }
@Override public void run() { if (this.acceptOnExecution) { this.workListener.workAccepted(new WorkEvent(this, WorkEvent.WORK_ACCEPTED, this.work, null)); } synchronized (this.monitor) { this.started = true; this.monitor.notify(); } this.workListener.workStarted(new WorkEvent(this, WorkEvent.WORK_STARTED, this.work, null)); try { this.work.run(); } catch (RuntimeException | Error ex) { this.workListener.workCompleted( new WorkEvent(this, WorkEvent.WORK_COMPLETED, this.work, new WorkCompletedException(ex))); throw ex; } this.workListener.workCompleted(new WorkEvent(this, WorkEvent.WORK_COMPLETED, this.work, null)); }
@Override public long startWork(Work work, long delay, ExecutionContext executionContext, WorkListener workListener) throws WorkException { return obtainWorkManager().startWork(work, delay, executionContext, workListener); }
@Nullable ExecutionContext executionContext, @Nullable WorkListener workListener) throws WorkException { if (executionContext != null && executionContext.getXid() != null) { throw new WorkException("SimpleTaskWorkManager does not supported imported XIDs: " + executionContext.getXid()); workListenerToUse = new WorkAdapter(); WorkException wex = new WorkRejectedException("TaskExecutor rejected Work because of timeout: " + work, ex); wex.setErrorCode(WorkException.START_TIMED_OUT); workListenerToUse.workRejected(new WorkEvent(this, WorkEvent.WORK_REJECTED, work, wex)); throw wex; WorkException wex = new WorkRejectedException("TaskExecutor rejected Work: " + work, ex); wex.setErrorCode(WorkException.INTERNAL); workListenerToUse.workRejected(new WorkEvent(this, WorkEvent.WORK_REJECTED, work, wex)); throw wex; WorkException wex = new WorkException("TaskExecutor failed to execute Work: " + work, ex); wex.setErrorCode(WorkException.INTERNAL); throw wex; workListenerToUse.workAccepted(new WorkEvent(this, WorkEvent.WORK_ACCEPTED, work, null));
if (this.blockUntilCompleted) { if (startTimeout != TIMEOUT_INDEFINITE || this.workListener != null) { obtainWorkManager().doWork(work, startTimeout, null, this.workListener); obtainWorkManager().doWork(work); obtainWorkManager().startWork(work, startTimeout, null, this.workListener); obtainWorkManager().startWork(work); obtainWorkManager().scheduleWork(work, startTimeout, null, this.workListener); obtainWorkManager().scheduleWork(work); if (WorkException.START_TIMED_OUT.equals(ex.getErrorCode())) { throw new TaskTimeoutException("JCA WorkManager rejected task because of timeout: " + task, ex);
@Override public final WorkCompletedException importedInflowTransactionIsInactive(final Xid xid, final Work work, final Exception e) { final WorkCompletedException result = new WorkCompletedException(String.format(getLoggingLocale(), importedInflowTransactionIsInactive$str(), xid, work), e); final StackTraceElement[] st = result.getStackTrace(); result.setStackTrace(Arrays.copyOfRange(st, 1, st.length)); return result; } private static final String cannotResumeInflowTransactionUnexpectedError = "WFLYTX0037: Unexpected error on resuming transaction %s for work %s";
@Override public void scheduleWork(Work work, long delay, ExecutionContext executionContext, WorkListener workListener) throws WorkException { obtainWorkManager().scheduleWork(work, delay, executionContext, workListener); }
@Override public void doWork(Work work, long delay, ExecutionContext executionContext, WorkListener workListener) throws WorkException { obtainWorkManager().doWork(work, delay, executionContext, workListener); }
@Override public void run() { if (this.acceptOnExecution) { this.workListener.workAccepted(new WorkEvent(this, WorkEvent.WORK_ACCEPTED, this.work, null)); } synchronized (this.monitor) { this.started = true; this.monitor.notify(); } this.workListener.workStarted(new WorkEvent(this, WorkEvent.WORK_STARTED, this.work, null)); try { this.work.run(); } catch (RuntimeException | Error ex) { this.workListener.workCompleted( new WorkEvent(this, WorkEvent.WORK_COMPLETED, this.work, new WorkCompletedException(ex))); throw ex; } this.workListener.workCompleted(new WorkEvent(this, WorkEvent.WORK_COMPLETED, this.work, null)); }
@Override public final WorkCompletedException cannotResumeInflowTransactionUnexpectedError(final Transaction txn, final Work work, final Exception e) { final WorkCompletedException result = new WorkCompletedException(String.format(getLoggingLocale(), cannotResumeInflowTransactionUnexpectedError$str(), txn, work), e); final StackTraceElement[] st = result.getStackTrace(); result.setStackTrace(Arrays.copyOfRange(st, 1, st.length)); return result; } private static final String cannotSuspendInflowTransactionUnexpectedError = "WFLYTX0038: Unexpected error on suspending transaction for work %s";
@Override public void scheduleWork(Work work) throws WorkException { obtainWorkManager().scheduleWork(work); }
@Override public long startWork(Work work) throws WorkException { return obtainWorkManager().startWork(work); }
@Override public void doWork(Work work) throws WorkException { obtainWorkManager().doWork(work); }
@Override public void release() { this.work.release(); } }
@Override public void scheduleWork(Work work, long delay, ExecutionContext executionContext, WorkListener workListener) throws WorkException { obtainWorkManager().scheduleWork(work, delay, executionContext, workListener); }
@Override public long startWork(Work work, long delay, ExecutionContext executionContext, WorkListener workListener) throws WorkException { return obtainWorkManager().startWork(work, delay, executionContext, workListener); }
@Override public void doWork(Work work, long delay, ExecutionContext executionContext, WorkListener workListener) throws WorkException { obtainWorkManager().doWork(work, delay, executionContext, workListener); }
@Override public void scheduleWork(Work work) throws WorkException { obtainWorkManager().scheduleWork(work); }
@Override public long startWork(Work work) throws WorkException { return obtainWorkManager().startWork(work); }
@Override public void doWork(Work work) throws WorkException { obtainWorkManager().doWork(work); }