From e5498f59fe3742b11da17c04b9a211b371514b02 Mon Sep 17 00:00:00 2001 From: Andrus Adamchik Date: Sat, 4 May 2024 10:28:39 -0400 Subject: [PATCH] Align job result API with Bootique "CommandOutcome" #124 --- RELEASE-NOTES.md | 1 + .../lock/CompositeConsulLockHandler.java | 4 +- .../job/consul/lock/ConsulLockHandler.java | 6 +- .../bootique/job/consul/it/job/LockJob.java | 8 +- .../InstrumentedGraphExecutor.java | 4 +- .../instrumented/InstrumentedJobLogger.java | 24 +-- .../bootique/job/instrumented/JobMeter.java | 6 +- .../TxIdAwareGroupMemberJobDecorator.java | 4 +- .../instrumented/InstrumentedJobMDCIT.java | 16 +- .../JobInstrumentedModule_MetricsIT.java | 6 +- .../instrumented/JobMetricsManagerTest.java | 10 +- .../zookeeper/lock/ZkClusterLockHandler.java | 6 +- .../job/zookeeper/it/job/LockJob.java | 8 +- .../main/java/io/bootique/job/BaseJob.java | 2 +- .../src/main/java/io/bootique/job/Job.java | 4 +- .../java/io/bootique/job/JobDecorator.java | 2 +- .../main/java/io/bootique/job/JobFuture.java | 8 +- .../java/io/bootique/job/JobListener.java | 2 +- .../main/java/io/bootique/job/JobOutcome.java | 122 ++++++++++- .../main/java/io/bootique/job/JobResult.java | 194 ++---------------- .../java/io/bootique/job/JobRunBuilder.java | 6 +- .../main/java/io/bootique/job/JobStatus.java | 28 +++ .../io/bootique/job/command/ExecCommand.java | 12 +- .../bootique/job/lock/LocalLockHandler.java | 6 +- .../io/bootique/job/runnable/JobResult.java | 23 ++- .../io/bootique/job/runtime/DecoratedJob.java | 4 +- .../runtime/ExceptionsHandlerDecorator.java | 14 +- .../bootique/job/runtime/GraphExecutor.java | 8 +- .../io/bootique/job/runtime/GraphJob.java | 8 +- .../io/bootique/job/runtime/GraphJobStep.java | 12 +- .../JobListenersDispatcherDecorator.java | 16 +- .../io/bootique/job/runtime/JobLogger.java | 22 +- .../job/runtime/JobNameDecorator.java | 4 +- .../job/runtime/JobParamsBinderDecorator.java | 6 +- .../job/runtime/ParallelJobsStep.java | 14 +- .../bootique/job/runtime/SimpleJobFuture.java | 10 +- .../bootique/job/runtime/SingleJobStep.java | 6 +- .../java/io/bootique/job/ExecCommandIT.java | 4 +- .../bootique/job/ExecCommand_DeepGroups.java | 24 +-- .../java/io/bootique/job/JobDecoratorIT.java | 14 +- .../bootique/job/JobDecorator_FailuresIT.java | 30 +-- .../java/io/bootique/job/JobRegistryIT.java | 8 +- .../test/java/io/bootique/job/JobTest.java | 6 +- .../test/java/io/bootique/job/ListenerIT.java | 14 +- .../io/bootique/job/Listener_FailuresIT.java | 40 ++-- .../io/bootique/job/fixture/BaseTestJob.java | 6 +- .../job/fixture/ExecutableAtMostOnceJob.java | 8 +- .../job/fixture/ParameterizedJob3.java | 6 +- .../job/fixture/ParameterizedJob4.java | 6 +- .../job/fixture/ParameterizedJob5.java | 6 +- .../bootique/job/fixture/ScheduledJob1.java | 6 +- .../bootique/job/fixture/ScheduledJob2.java | 6 +- .../io/bootique/job/fixture/SerialJob2.java | 6 +- .../io/bootique/job/graph/GraphJobIT.java | 16 +- .../bootique/job/scheduler/SchedulerIT.java | 2 +- .../job/scheduler/SchedulerParamsIT.java | 10 +- .../job/scheduler/SchedulerSerialJobIT.java | 8 +- .../job/scheduler/Scheduler_GraphJobIT.java | 8 +- .../job/scheduler/Scheduler_NoDeadlockIT.java | 28 +-- .../bootique/job/trigger/JobExecParserIT.java | 10 +- 60 files changed, 451 insertions(+), 457 deletions(-) create mode 100644 bootique-job/src/main/java/io/bootique/job/JobStatus.java diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index ddbb7784..938a92e9 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,6 +1,7 @@ ## 3.0-M5 * #123 Jobs as lambdas +* #124 Align job result API with Bootique "CommandOutcome" ## 3.0-M4 diff --git a/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/CompositeConsulLockHandler.java b/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/CompositeConsulLockHandler.java index dc9fe082..567e9b2e 100644 --- a/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/CompositeConsulLockHandler.java +++ b/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/CompositeConsulLockHandler.java @@ -20,7 +20,7 @@ import io.bootique.job.Job; import io.bootique.job.lock.LockHandler; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -35,7 +35,7 @@ public CompositeConsulLockHandler(LockHandler localLockHandler, LockHandler cons } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { return localLockHandler.run(consulLockHandler.decorate(delegate, null, params), params); } } diff --git a/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/ConsulLockHandler.java b/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/ConsulLockHandler.java index 03b2ee7e..78f506e9 100644 --- a/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/ConsulLockHandler.java +++ b/bootique-job-consul/src/main/java/io/bootique/job/consul/lock/ConsulLockHandler.java @@ -22,7 +22,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; import io.bootique.job.lock.LockHandler; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +45,7 @@ public ConsulLockHandler(KeyValueClient kvClient, Supplier consulSession } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { JobMetadata metadata = delegate.getMetadata(); @@ -57,7 +57,7 @@ public JobResult run(Job delegate, Map params) { boolean acquired = kvClient.acquireLock(lockName, sessionId); if (!acquired) { LOGGER.info("** Another job instance owns the lock. Skipping execution of '{}'", lockName); - return JobResult.skipped("Another job instance owns the lock. Skipping execution"); + return JobOutcome.skipped("Another job instance owns the lock. Skipping execution"); } try { diff --git a/bootique-job-consul/src/test/java/io/bootique/job/consul/it/job/LockJob.java b/bootique-job-consul/src/test/java/io/bootique/job/consul/it/job/LockJob.java index 0636aadb..91f796dd 100644 --- a/bootique-job-consul/src/test/java/io/bootique/job/consul/it/job/LockJob.java +++ b/bootique-job-consul/src/test/java/io/bootique/job/consul/it/job/LockJob.java @@ -4,7 +4,7 @@ import io.bootique.job.JobMetadata; import io.bootique.job.SerialJob; import io.bootique.job.consul.it.ConsulJobLockIT; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -18,14 +18,14 @@ public LockJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { Integer callsCount = (Integer) params.get(ConsulJobLockIT.CALLS_COUNT); params.put(ConsulJobLockIT.CALLS_COUNT, callsCount + 1); try { Thread.sleep(DELAY); } catch (InterruptedException e) { - return JobResult.failed(); + return JobOutcome.failed(); } - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } diff --git a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedGraphExecutor.java b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedGraphExecutor.java index 7bd1b8bf..b9164649 100644 --- a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedGraphExecutor.java +++ b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedGraphExecutor.java @@ -19,7 +19,7 @@ package io.bootique.job.instrumented; import io.bootique.job.Job; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.job.runtime.GraphExecutor; import java.util.Map; @@ -36,7 +36,7 @@ public InstrumentedGraphExecutor(ExecutorService pool) { } @Override - public Future submit(Job job, Map params) { + public Future submit(Job job, Map params) { Job decorated = decorateWithGroupTxId(job); return super.submit(decorated, params); } diff --git a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedJobLogger.java b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedJobLogger.java index 642c13fd..6f29edd6 100644 --- a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedJobLogger.java +++ b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/InstrumentedJobLogger.java @@ -21,7 +21,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.job.runtime.JobLogger; import java.util.Map; @@ -40,15 +40,15 @@ class InstrumentedJobLogger extends JobLogger { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { JobMetadata metadata = delegate.getMetadata(); JobMeter meter = onMeteredJobStarted(metadata, params); try { - JobResult result = delegate.run(params); + JobOutcome result = delegate.run(params); return onMeteredJobFinished(metadata, result, meter); } catch (Throwable th) { - return onMeteredJobFinished(metadata, JobResult.failure(metadata, th), meter); + return onMeteredJobFinished(metadata, JobOutcome.failed(th), meter); } } @@ -62,38 +62,38 @@ protected JobMeter onMeteredJobStarted(JobMetadata metadata, Map return meter; } - private JobResult onMeteredJobFinished(JobMetadata metadata, JobResult result, JobMeter meter) { + private JobOutcome onMeteredJobFinished(JobMetadata metadata, JobOutcome result, JobMeter meter) { long timeMs = meter.stop(result); logJobFinished(metadata, result, timeMs); mdcManager.onJobFinished(); return result; } - private void logJobFinished(JobMetadata metadata, JobResult result, long timeMs) { + private void logJobFinished(JobMetadata metadata, JobOutcome result, long timeMs) { String label = metadata.isGroup() ? "group" : "job"; String name = metadata.getName(); - switch (result.getOutcome()) { + switch (result.getStatus()) { case SUCCESS: LOGGER.info("{} '{}' finished in {} ms", label, name, timeMs); return; default: String message = result.getMessage(); - if (message == null && result.getThrowable() != null) { - message = result.getThrowable().getMessage(); + if (message == null && result.getException() != null) { + message = result.getException().getMessage(); } if (message == null) { message = ""; } - if (result.getThrowable() != null) { - LOGGER.info("job exception", result.getThrowable()); + if (result.getException() != null) { + LOGGER.info("job exception", result.getException()); } - LOGGER.warn("{} '{}' finished in {} ms: {} - {} ", label, name, timeMs, result.getOutcome(), message); + LOGGER.warn("{} '{}' finished in {} ms: {} - {} ", label, name, timeMs, result.getStatus(), message); } } } diff --git a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/JobMeter.java b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/JobMeter.java index dcd7e7a7..b4a054fd 100644 --- a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/JobMeter.java +++ b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/JobMeter.java @@ -19,7 +19,7 @@ package io.bootique.job.instrumented; import com.codahale.metrics.Timer; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Objects; @@ -40,14 +40,14 @@ public void start() { this.runTimer = metrics.getTimer().time(); } - public long stop(JobResult result) { + public long stop(JobOutcome result) { metrics.getActiveCounter().dec(); metrics.getCompletedCounter().inc(); // Timer.Context#stop also updates aggregate running time of all instances of long timeNanos = runTimer.stop(); - switch (result.getOutcome()) { + switch (result.getStatus()) { case SUCCESS: { metrics.getSuccessCounter().inc(); break; diff --git a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/TxIdAwareGroupMemberJobDecorator.java b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/TxIdAwareGroupMemberJobDecorator.java index 20058d86..84888fd4 100644 --- a/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/TxIdAwareGroupMemberJobDecorator.java +++ b/bootique-job-instrumented/src/main/java/io/bootique/job/instrumented/TxIdAwareGroupMemberJobDecorator.java @@ -20,7 +20,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.metrics.mdc.TransactionIdMDC; import java.util.Map; @@ -48,7 +48,7 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map parameters) { + public JobOutcome run(Map parameters) { TransactionIdMDC.setId(groupMDC); try { diff --git a/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/InstrumentedJobMDCIT.java b/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/InstrumentedJobMDCIT.java index 5236f2ee..01d01106 100644 --- a/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/InstrumentedJobMDCIT.java +++ b/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/InstrumentedJobMDCIT.java @@ -125,14 +125,14 @@ public Job1() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("in job1"); int next = counter.getAndIncrement(); String id = MDC.get(TransactionIdMDC.MDC_KEY); tx.put(next, id != null ? id : NULL_PLACEHOLDER); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -147,12 +147,12 @@ public Job2() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("in job2"); int next = counter.getAndIncrement(); String id = MDC.get(TransactionIdMDC.MDC_KEY); tx.put(next, id != null ? id : NULL_PLACEHOLDER); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -163,8 +163,8 @@ public Job3() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } @@ -175,8 +175,8 @@ public Job4() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } } diff --git a/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobInstrumentedModule_MetricsIT.java b/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobInstrumentedModule_MetricsIT.java index f66d1b71..ad9b75d7 100644 --- a/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobInstrumentedModule_MetricsIT.java +++ b/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobInstrumentedModule_MetricsIT.java @@ -23,7 +23,7 @@ import io.bootique.BQRuntime; import io.bootique.job.Job; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.job.JobsModule; import io.bootique.junit5.BQTest; import io.bootique.junit5.BQTestFactory; @@ -77,8 +77,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map parameters) { - return JobResult.succeeded(); + public JobOutcome run(Map parameters) { + return JobOutcome.succeeded(); } } } diff --git a/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobMetricsManagerTest.java b/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobMetricsManagerTest.java index 98048776..01dabf8c 100644 --- a/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobMetricsManagerTest.java +++ b/bootique-job-instrumented/src/test/java/io/bootique/job/instrumented/JobMetricsManagerTest.java @@ -21,7 +21,7 @@ import com.codahale.metrics.Counter; import com.codahale.metrics.MetricRegistry; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -48,10 +48,10 @@ public void jobsInstrumentation_ActiveCount_SuccessAndFailureResults() { JobMeter m2 = manager.onJobStarted("j1"); assertHasMetrics("j1", metricRegistry, 2, 0, 0, 0); - m1.stop(JobResult.succeeded()); + m1.stop(JobOutcome.succeeded()); assertHasMetrics("j1", metricRegistry, 1, 1, 1, 0); - m2.stop(JobResult.failed()); + m2.stop(JobOutcome.failed()); assertHasMetrics("j1", metricRegistry, 0, 2, 1, 1); } @@ -62,7 +62,7 @@ public void jobsInstrumentation_UnknownResult() { JobMeter m1 = manager.onJobStarted("j1"); assertHasMetrics("j1", metricRegistry, 1, 0, 0, 0); - m1.stop(JobResult.unknown()); + m1.stop(JobOutcome.unknown()); assertHasMetrics("j1", metricRegistry, 0, 1, 0, 0); } @@ -71,7 +71,7 @@ public void jobsInstrumentation_SuccessResult() { JobMetricsManager manager = new JobMetricsManager(metricRegistry); JobMeter m1 = manager.onJobStarted("j1"); - m1.stop(JobResult.unknown()); + m1.stop(JobOutcome.unknown()); assertHasMetrics("j1", metricRegistry, 0, 1, 0, 0); } diff --git a/bootique-job-zookeeper/src/main/java/io/bootique/job/zookeeper/lock/ZkClusterLockHandler.java b/bootique-job-zookeeper/src/main/java/io/bootique/job/zookeeper/lock/ZkClusterLockHandler.java index d2643a1b..bb7e3644 100644 --- a/bootique-job-zookeeper/src/main/java/io/bootique/job/zookeeper/lock/ZkClusterLockHandler.java +++ b/bootique-job-zookeeper/src/main/java/io/bootique/job/zookeeper/lock/ZkClusterLockHandler.java @@ -22,7 +22,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; import io.bootique.job.lock.LockHandler; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.apache.curator.framework.CuratorFramework; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,7 +46,7 @@ public ZkClusterLockHandler(Provider curator) { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { JobMetadata metadata = delegate.getMetadata(); String lockName = getLockName(metadata); @@ -56,7 +56,7 @@ public JobResult run(Job delegate, Map params) { ZkMutex lock = ZkMutex.acquire(curator.get(), lockName); if (lock == null) { LOGGER.info("** Another job instance owns the lock. Skipping execution of '{}'", lockName); - return JobResult.skipped("Another job instance owns the lock. Skipping execution"); + return JobOutcome.skipped("Another job instance owns the lock. Skipping execution"); } try { diff --git a/bootique-job-zookeeper/src/test/java/io/bootique/job/zookeeper/it/job/LockJob.java b/bootique-job-zookeeper/src/test/java/io/bootique/job/zookeeper/it/job/LockJob.java index 99124b89..60944b26 100644 --- a/bootique-job-zookeeper/src/test/java/io/bootique/job/zookeeper/it/job/LockJob.java +++ b/bootique-job-zookeeper/src/test/java/io/bootique/job/zookeeper/it/job/LockJob.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; import io.bootique.job.SerialJob; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.job.zookeeper.it.ZkJobLockIT; import java.util.Map; @@ -36,15 +36,15 @@ public LockJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { Integer callsCount = (Integer) params.get(ZkJobLockIT.CALLS_COUNT); params.put(ZkJobLockIT.CALLS_COUNT, callsCount + 1); try { Thread.sleep(DELAY); } catch (InterruptedException e) { - return JobResult.failed(); + return JobOutcome.failed(); } - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } diff --git a/bootique-job/src/main/java/io/bootique/job/BaseJob.java b/bootique-job/src/main/java/io/bootique/job/BaseJob.java index 82340d69..6074d8bd 100644 --- a/bootique-job/src/main/java/io/bootique/job/BaseJob.java +++ b/bootique-job/src/main/java/io/bootique/job/BaseJob.java @@ -38,5 +38,5 @@ public JobMetadata getMetadata() { } @Override - public abstract JobResult run(Map params); + public abstract JobOutcome run(Map params); } diff --git a/bootique-job/src/main/java/io/bootique/job/Job.java b/bootique-job/src/main/java/io/bootique/job/Job.java index fd758b6c..b7151ff5 100644 --- a/bootique-job/src/main/java/io/bootique/job/Job.java +++ b/bootique-job/src/main/java/io/bootique/job/Job.java @@ -22,12 +22,12 @@ import java.util.Map; /** - * Represents a runnable job with metadata. + * A runnable job with metadata. */ @FunctionalInterface public interface Job { - JobResult run(Map params); + JobOutcome run(Map params); default JobMetadata getMetadata() { return JobMetadata.build(getClass()); diff --git a/bootique-job/src/main/java/io/bootique/job/JobDecorator.java b/bootique-job/src/main/java/io/bootique/job/JobDecorator.java index 4b3fd6a1..0e1c05e8 100644 --- a/bootique-job/src/main/java/io/bootique/job/JobDecorator.java +++ b/bootique-job/src/main/java/io/bootique/job/JobDecorator.java @@ -41,5 +41,5 @@ default boolean isApplicable(JobMetadata metadata, String altName, Map params); + JobOutcome run(Job delegate, Map params); } diff --git a/bootique-job/src/main/java/io/bootique/job/JobFuture.java b/bootique-job/src/main/java/io/bootique/job/JobFuture.java index 0c586855..e901db46 100644 --- a/bootique-job/src/main/java/io/bootique/job/JobFuture.java +++ b/bootique-job/src/main/java/io/bootique/job/JobFuture.java @@ -19,15 +19,13 @@ package io.bootique.job; -import io.bootique.job.JobResult; - import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; /** * A specialized future for a single job execution that hides checked exceptions and provides job execution result. */ -public interface JobFuture extends Future { +public interface JobFuture extends Future { String getJobName(); @@ -36,7 +34,7 @@ public interface JobFuture extends Future { */ // override super to hide checked exceptions @Override - JobResult get(); + JobOutcome get(); /** * Waits till the job is done and then returns the result. Throws an exception, if timeout elapses before the job @@ -44,5 +42,5 @@ public interface JobFuture extends Future { */ // override super to hide checked exceptions @Override - JobResult get(long timeout, TimeUnit unit); + JobOutcome get(long timeout, TimeUnit unit); } diff --git a/bootique-job/src/main/java/io/bootique/job/JobListener.java b/bootique-job/src/main/java/io/bootique/job/JobListener.java index d4bf8e8d..79204809 100644 --- a/bootique-job/src/main/java/io/bootique/job/JobListener.java +++ b/bootique-job/src/main/java/io/bootique/job/JobListener.java @@ -40,5 +40,5 @@ public interface JobListener { * @param onFinishedCallbackRegistry an object that will notify registered consumers when the job that generated this start * event is finished. */ - void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry); + void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry); } diff --git a/bootique-job/src/main/java/io/bootique/job/JobOutcome.java b/bootique-job/src/main/java/io/bootique/job/JobOutcome.java index 1be1005c..9fe28086 100644 --- a/bootique-job/src/main/java/io/bootique/job/JobOutcome.java +++ b/bootique-job/src/main/java/io/bootique/job/JobOutcome.java @@ -19,7 +19,125 @@ package io.bootique.job; -public enum JobOutcome { +/** + * @since 3.0 + */ +public class JobOutcome { + + private final JobStatus status; + private final Throwable exception; + private final String message; + private final JobFuture yieldedTo; + + public static JobOutcome succeeded() { + return new JobOutcome(JobStatus.SUCCESS, null, null, null); + } + + public static JobOutcome succeeded(String message) { + return new JobOutcome(JobStatus.SUCCESS, null, message, null); + } + + public static JobOutcome failed() { + return new JobOutcome(JobStatus.FAILURE, null, null, null); + } + + public static JobOutcome failed(String message) { + return new JobOutcome(JobStatus.FAILURE, null, message, null); + } + + public static JobOutcome failed(Throwable th) { + return new JobOutcome(JobStatus.FAILURE, th, null, null); + } + + public static JobOutcome failed(String message, Throwable th) { + return new JobOutcome(JobStatus.FAILURE, th, message, null); + } + + public static JobOutcome succeededPartially() { + return new JobOutcome(JobStatus.PARTIAL_SUCCESS, null, null, null); + } + + public static JobOutcome succeededPartially(String message) { + return new JobOutcome(JobStatus.PARTIAL_SUCCESS, null, message, null); + } + + public static JobOutcome unknown() { + return new JobOutcome(JobStatus.UNKNOWN, null, null, null); + } + + public static JobOutcome unknown(Throwable th) { + return new JobOutcome(JobStatus.UNKNOWN, th, null, null); + } + + public static JobOutcome unknown(String message) { + return new JobOutcome(JobStatus.UNKNOWN, null, message, null); + } + + public static JobOutcome skipped() { + return new JobOutcome(JobStatus.SKIPPED, null, null, null); + } + + public static JobOutcome skipped(String message) { + return new JobOutcome(JobStatus.SKIPPED, null, message, null); + } + + protected JobOutcome(JobStatus status, Throwable exception, String message, JobFuture yieldedTo) { + this.status = status; + this.exception = exception; + this.message = message; + this.yieldedTo = yieldedTo; + } + + /** + * @deprecatedto use {@link #getStatus()} + */ + @Deprecated(since = "3.0", forRemoval = true) + public JobStatus getOutcome() { + return status; + } + + public JobStatus getStatus() { + return status; + } + + public boolean isSuccess() { + return status == JobStatus.SUCCESS; + } + + /** + * @deprecatedto use {@link #getException()} + */ + @Deprecated(since = "3.0", forRemoval = true) + public Throwable getThrowable() { + return exception; + } + + public Throwable getException() { + return exception; + } + + public String getMessage() { + return message; + } + + public JobFuture getYieldedTo() { + return yieldedTo; + } + + @Override + public String toString() { + + String message = this.message; + + if (message == null && exception != null) { + message = exception.getMessage(); + } + + StringBuilder buffer = new StringBuilder().append("[").append(status); + if (message != null) { + buffer.append(": ").append(message); + } - SUCCESS, FAILURE, PARTIAL_SUCCESS, UNKNOWN, SKIPPED + return buffer.append("]").toString(); + } } diff --git a/bootique-job/src/main/java/io/bootique/job/JobResult.java b/bootique-job/src/main/java/io/bootique/job/JobResult.java index 5c861a12..784c7365 100644 --- a/bootique-job/src/main/java/io/bootique/job/JobResult.java +++ b/bootique-job/src/main/java/io/bootique/job/JobResult.java @@ -16,37 +16,22 @@ * specific language governing permissions and limitations * under the License. */ - package io.bootique.job; -public class JobResult { +/** + * @deprecated in favor of {@link JobOutcome} + */ +@Deprecated(since = "3.0", forRemoval = true) +public class JobResult extends JobOutcome { private final JobMetadata metadata; - private final JobOutcome outcome; - private final Throwable throwable; - private final String message; - private final JobFuture yieldedTo; - - /** - * @since 3.0 - */ - public static JobResult succeeded() { - return new JobResult(JobOutcome.SUCCESS, null, null, null); - } /** * @deprecated in favor of {@link #succeeded()} */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult success(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.SUCCESS, null, null, null); - } - - /** - * @since 3.0 - */ - public static JobResult succeeded(String message) { - return new JobResult(JobOutcome.SUCCESS, null, message, null); + return new JobResult(metadata, JobStatus.SUCCESS, null, null, null); } /** @@ -55,14 +40,7 @@ public static JobResult succeeded(String message) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult success(JobMetadata metadata, String message) { - return new JobResult(metadata, JobOutcome.SUCCESS, null, message, null); - } - - /** - * @since 3.0 - */ - public static JobResult failed() { - return new JobResult(JobOutcome.FAILURE, null, null, null); + return new JobResult(metadata, JobStatus.SUCCESS, null, message, null); } /** @@ -70,14 +48,7 @@ public static JobResult failed() { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult failure(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.FAILURE, null, null, null); - } - - /** - * @since 3.0 - */ - public static JobResult failed(String message) { - return new JobResult(JobOutcome.FAILURE, null, message, null); + return new JobResult(metadata, JobStatus.FAILURE, null, null, null); } /** @@ -85,14 +56,7 @@ public static JobResult failed(String message) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult failure(JobMetadata metadata, String message) { - return new JobResult(metadata, JobOutcome.FAILURE, null, message, null); - } - - /** - * @since 3.0 - */ - public static JobResult failed(Throwable th) { - return new JobResult(JobOutcome.FAILURE, th, null, null); + return new JobResult(metadata, JobStatus.FAILURE, null, message, null); } /** @@ -100,14 +64,7 @@ public static JobResult failed(Throwable th) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult failure(JobMetadata metadata, Throwable th) { - return new JobResult(metadata, JobOutcome.FAILURE, th, null, null); - } - - /** - * @since 3.0 - */ - public static JobResult failed(String message, Throwable th) { - return new JobResult(JobOutcome.FAILURE, th, message, null); + return new JobResult(metadata, JobStatus.FAILURE, th, null, null); } /** @@ -115,14 +72,7 @@ public static JobResult failed(String message, Throwable th) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult failure(JobMetadata metadata, String message, Throwable th) { - return new JobResult(metadata, JobOutcome.FAILURE, th, message, null); - } - - /** - * @since 3.0 - */ - public static JobResult succeededPartially() { - return new JobResult(JobOutcome.PARTIAL_SUCCESS, null, null, null); + return new JobResult(metadata, JobStatus.FAILURE, th, message, null); } /** @@ -130,14 +80,7 @@ public static JobResult succeededPartially() { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult partialSuccess(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.PARTIAL_SUCCESS, null, null, null); - } - - /** - * @since 3.0 - */ - public static JobResult succeededPartially(String message) { - return new JobResult(JobOutcome.PARTIAL_SUCCESS, null, message, null); + return new JobResult(metadata, JobStatus.PARTIAL_SUCCESS, null, null, null); } /** @@ -145,14 +88,7 @@ public static JobResult succeededPartially(String message) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult partialSuccess(JobMetadata metadata, String message) { - return new JobResult(metadata, JobOutcome.PARTIAL_SUCCESS, null, message, null); - } - - /** - * @since 3.0 - */ - public static JobResult unknown() { - return new JobResult(JobOutcome.UNKNOWN, null, null, null); + return new JobResult(metadata, JobStatus.PARTIAL_SUCCESS, null, message, null); } /** @@ -160,14 +96,7 @@ public static JobResult unknown() { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult unknown(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.UNKNOWN, null, null, null); - } - - /** - * @since 3.0 - */ - public static JobResult unknown(Throwable th) { - return new JobResult(JobOutcome.UNKNOWN, th, null, null); + return new JobResult(metadata, JobStatus.UNKNOWN, null, null, null); } @@ -176,29 +105,14 @@ public static JobResult unknown(Throwable th) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult unknown(JobMetadata metadata, Throwable th) { - return new JobResult(metadata, JobOutcome.UNKNOWN, th, null, null); + return new JobResult(metadata, JobStatus.UNKNOWN, th, null, null); } - - /** - * @since 3.0 - */ - public static JobResult unknown(String message) { - return new JobResult(JobOutcome.UNKNOWN, null, message, null); - } - /** * @deprecated in favor of {@link #unknown(String)} */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult unknown(JobMetadata metadata, String message) { - return new JobResult(metadata, JobOutcome.UNKNOWN, null, message, null); - } - - /** - * @since 3.0 - */ - public static JobResult skipped() { - return new JobResult(JobOutcome.SKIPPED, null, null, null); + return new JobResult(metadata, JobStatus.UNKNOWN, null, message, null); } /** @@ -206,14 +120,7 @@ public static JobResult skipped() { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult skipped(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.SKIPPED, null, null, null); - } - - /** - * @since 3.0 - */ - public static JobResult skipped(String message) { - return new JobResult(JobOutcome.SKIPPED, null, message, null); + return new JobResult(metadata, JobStatus.SKIPPED, null, null, null); } /** @@ -221,31 +128,7 @@ public static JobResult skipped(String message) { */ @Deprecated(since = "3.0", forRemoval = true) public static JobResult skipped(JobMetadata metadata, String message) { - return new JobResult(metadata, JobOutcome.SKIPPED, null, message, null); - } - - /** - * @since 3.0 - * @deprecated as JobMetadata is no longer a part of JobResult - */ - @Deprecated(since = "3.0", forRemoval = true) - protected JobResult(JobMetadata metadata, JobOutcome outcome, Throwable throwable, String message, JobFuture yieldedTo) { - this.metadata = metadata; - this.outcome = outcome; - this.throwable = throwable; - this.message = message; - this.yieldedTo = yieldedTo; - } - - /** - * @since 3.0 - */ - protected JobResult(JobOutcome outcome, Throwable throwable, String message, JobFuture yieldedTo) { - this.outcome = outcome; - this.throwable = throwable; - this.message = message; - this.yieldedTo = yieldedTo; - this.metadata = null; + return new JobResult(metadata, JobStatus.SKIPPED, null, message, null); } /** @@ -256,43 +139,8 @@ public JobMetadata getMetadata() { return metadata; } - public JobOutcome getOutcome() { - return outcome; - } - - public boolean isSuccess() { - return outcome == JobOutcome.SUCCESS; - } - - public Throwable getThrowable() { - return throwable; - } - - public String getMessage() { - return message; - } - - /** - * @since 3.0 - */ - public JobFuture getYieldedTo() { - return yieldedTo; - } - - @Override - public String toString() { - - String message = this.message; - - if (message == null && throwable != null) { - message = throwable.getMessage(); - } - - StringBuilder buffer = new StringBuilder().append("[").append(outcome); - if (message != null) { - buffer.append(": ").append(message); - } - - return buffer.append("]").toString(); + protected JobResult(JobMetadata metadata, JobStatus status, Throwable throwable, String message, JobFuture yieldedTo) { + super(status, throwable, message, yieldedTo); + this.metadata = metadata; } } diff --git a/bootique-job/src/main/java/io/bootique/job/JobRunBuilder.java b/bootique-job/src/main/java/io/bootique/job/JobRunBuilder.java index 510f0b02..89506f0e 100644 --- a/bootique-job/src/main/java/io/bootique/job/JobRunBuilder.java +++ b/bootique-job/src/main/java/io/bootique/job/JobRunBuilder.java @@ -75,7 +75,7 @@ public JobRunBuilder noDecorators() { return this; } - public JobResult runBlocking() { + public JobOutcome runBlocking() { return resolveJob().run(resolveParams()); } @@ -84,7 +84,7 @@ public JobFuture runNonBlocking() { Job job = resolveJob(); Map params = resolveParams(); - JobResult[] result = new JobResult[1]; + JobOutcome[] result = new JobOutcome[1]; Future future = taskScheduler.schedule( () -> result[0] = job.run(params), new Date()); @@ -92,7 +92,7 @@ public JobFuture runNonBlocking() { return new SimpleJobFuture( job.getMetadata().getName(), future, - () -> result[0] != null ? result[0] : JobResult.unknown()); + () -> result[0] != null ? result[0] : JobOutcome.unknown()); } protected Job resolveJob() { diff --git a/bootique-job/src/main/java/io/bootique/job/JobStatus.java b/bootique-job/src/main/java/io/bootique/job/JobStatus.java new file mode 100644 index 00000000..b122a6d2 --- /dev/null +++ b/bootique-job/src/main/java/io/bootique/job/JobStatus.java @@ -0,0 +1,28 @@ +/* + * Licensed to ObjectStyle LLC under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ObjectStyle LLC licenses + * this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package io.bootique.job; + +/** + * @since 3.0 + */ +public enum JobStatus { + + SUCCESS, FAILURE, PARTIAL_SUCCESS, UNKNOWN, SKIPPED +} diff --git a/bootique-job/src/main/java/io/bootique/job/command/ExecCommand.java b/bootique-job/src/main/java/io/bootique/job/command/ExecCommand.java index 6d7f58b7..d5e4bfa3 100644 --- a/bootique-job/src/main/java/io/bootique/job/command/ExecCommand.java +++ b/bootique-job/src/main/java/io/bootique/job/command/ExecCommand.java @@ -105,7 +105,7 @@ private CommandOutcome runParallel(List execs, Scheduler scheduler) { private CommandOutcome runSerial(List execs, Scheduler scheduler) { for (JobExec e : execs) { - JobResult result = scheduler.runBuilder().jobName(e.getJobName()).params(e.getParams()).runBlocking(); + JobOutcome result = scheduler.runBuilder().jobName(e.getJobName()).params(e.getParams()).runBlocking(); processResult(e.getJobName(), result); if (!result.isSuccess()) { return CommandOutcome.failed(1, "One of the jobs failed: " + e.getJobName()); @@ -114,22 +114,22 @@ private CommandOutcome runSerial(List execs, Scheduler scheduler) { return CommandOutcome.succeeded(); } - private void processResult(String jobName, JobResult result) { + private void processResult(String jobName, JobOutcome result) { String message = result.getMessage() != null ? String.format("Finished job '%s', result: %s, message: %s", jobName, - result.getOutcome(), + result.getStatus(), result.getMessage()) : String.format("Finished job '%s', result: %s", jobName, - result.getOutcome()); + result.getStatus()); - if (result.getThrowable() == null) { + if (result.getException() == null) { LOGGER.info(message); } else { - LOGGER.error(message, result.getThrowable()); + LOGGER.error(message, result.getException()); } } } diff --git a/bootique-job/src/main/java/io/bootique/job/lock/LocalLockHandler.java b/bootique-job/src/main/java/io/bootique/job/lock/LocalLockHandler.java index 8e7215bc..001f33b3 100644 --- a/bootique-job/src/main/java/io/bootique/job/lock/LocalLockHandler.java +++ b/bootique-job/src/main/java/io/bootique/job/lock/LocalLockHandler.java @@ -21,7 +21,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +45,7 @@ public LocalLockHandler() { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { JobMetadata metadata = delegate.getMetadata(); String lockName = toLockName(metadata); @@ -53,7 +53,7 @@ public JobResult run(Job delegate, Map params) { if (!lock.tryLock()) { LOGGER.info("Skipping execution of '{}', another job instance owns the lock.", metadata.getName()); - return JobResult.skipped("Skipping execution, another job instance owns the lock"); + return JobOutcome.skipped("Skipping execution, another job instance owns the lock"); } LOGGER.info("Locked '{}'", metadata.getName()); diff --git a/bootique-job/src/main/java/io/bootique/job/runnable/JobResult.java b/bootique-job/src/main/java/io/bootique/job/runnable/JobResult.java index d2f9bfd1..f95a7db0 100644 --- a/bootique-job/src/main/java/io/bootique/job/runnable/JobResult.java +++ b/bootique-job/src/main/java/io/bootique/job/runnable/JobResult.java @@ -21,42 +21,43 @@ import io.bootique.job.JobFuture; import io.bootique.job.JobMetadata; import io.bootique.job.JobOutcome; +import io.bootique.job.JobStatus; /** - * @deprecated since 3.0 in favor of {@link io.bootique.job.JobResult} + * @deprecated in favor of {@link JobOutcome} */ -@Deprecated +@Deprecated(since = "3.0", forRemoval = true) public class JobResult extends io.bootique.job.JobResult { public static JobResult success(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.SUCCESS, null, null, null); + return new JobResult(metadata, JobStatus.SUCCESS, null, null, null); } public static JobResult failure(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.FAILURE, null, null, null); + return new JobResult(metadata, JobStatus.FAILURE, null, null, null); } public static JobResult failure(JobMetadata metadata, String message) { - return new JobResult(metadata, JobOutcome.FAILURE, null, message, null); + return new JobResult(metadata, JobStatus.FAILURE, null, message, null); } public static JobResult failure(JobMetadata metadata, Throwable th) { - return new JobResult(metadata, JobOutcome.FAILURE, th, null, null); + return new JobResult(metadata, JobStatus.FAILURE, th, null, null); } public static JobResult unknown(JobMetadata metadata) { - return new JobResult(metadata, JobOutcome.UNKNOWN, null, null, null); + return new JobResult(metadata, JobStatus.UNKNOWN, null, null, null); } - public static io.bootique.job.JobResult unknown(JobMetadata metadata, Throwable th) { - return new JobResult(metadata, JobOutcome.UNKNOWN, th, null, null); + public static JobResult unknown(JobMetadata metadata, Throwable th) { + return new JobResult(metadata, JobStatus.UNKNOWN, th, null, null); } - public JobResult(JobMetadata metadata, JobOutcome outcome, Throwable throwable, String message) { + public JobResult(JobMetadata metadata, JobStatus outcome, Throwable throwable, String message) { this(metadata, outcome, throwable, message, null); } - protected JobResult(JobMetadata metadata, JobOutcome outcome, Throwable throwable, String message, JobFuture yieldedTo) { + protected JobResult(JobMetadata metadata, JobStatus outcome, Throwable throwable, String message, JobFuture yieldedTo) { super(metadata, outcome, throwable, message, null); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/DecoratedJob.java b/bootique-job/src/main/java/io/bootique/job/runtime/DecoratedJob.java index 8372ccf7..d2221702 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/DecoratedJob.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/DecoratedJob.java @@ -21,7 +21,7 @@ import io.bootique.job.Job; import io.bootique.job.JobDecorator; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -46,7 +46,7 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { return decorator.run(job, params); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/ExceptionsHandlerDecorator.java b/bootique-job/src/main/java/io/bootique/job/runtime/ExceptionsHandlerDecorator.java index 96ccb6d0..c01903ed 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/ExceptionsHandlerDecorator.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/ExceptionsHandlerDecorator.java @@ -22,7 +22,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; import io.bootique.job.JobDecorator; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -32,18 +32,18 @@ public class ExceptionsHandlerDecorator implements JobDecorator { @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { return runWithExceptionHandling(delegate.getMetadata(), delegate, params); } // reusable method that can be used by this and other decorators for consistent error handling - static JobResult runWithExceptionHandling(JobMetadata metadata, Job delegate, Map params) { + static JobOutcome runWithExceptionHandling(JobMetadata metadata, Job delegate, Map params) { try { - JobResult result = delegate.run(params); - return result != null ? result : JobResult.unknown("Job returned null result"); + JobOutcome result = delegate.run(params); + return result != null ? result : JobOutcome.unknown("Job returned null result"); } catch (Exception e) { - // not logging the failure here.. JobLogDecorator will do the logging - return JobResult.failure(metadata, e); + // not logging the failure here... JobLogDecorator will do the logging + return JobOutcome.failed(e); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/GraphExecutor.java b/bootique-job/src/main/java/io/bootique/job/runtime/GraphExecutor.java index 695fed18..018291d5 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/GraphExecutor.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/GraphExecutor.java @@ -19,7 +19,7 @@ package io.bootique.job.runtime; import io.bootique.job.Job; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; import java.util.concurrent.Callable; @@ -39,11 +39,11 @@ public GraphExecutor(ExecutorService pool) { this.pool = pool; } - public Future submit(Job job, Map params) { + public Future submit(Job job, Map params) { return pool.submit(new CallableJob(job, params)); } - static class CallableJob implements Callable { + static class CallableJob implements Callable { final Job job; final Map params; @@ -53,7 +53,7 @@ static class CallableJob implements Callable { } @Override - public JobResult call() { + public JobOutcome call() { return job.run(params); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/GraphJob.java b/bootique-job/src/main/java/io/bootique/job/runtime/GraphJob.java index d912188e..0a13b3c4 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/GraphJob.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/GraphJob.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.List; import java.util.Map; @@ -42,15 +42,15 @@ public GraphJob(JobMetadata metadata, List steps) { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { for (GraphJobStep step : steps) { - JobResult result = step.run(params); + JobOutcome result = step.run(params); if (!result.isSuccess()) { return result; } } - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/GraphJobStep.java b/bootique-job/src/main/java/io/bootique/job/runtime/GraphJobStep.java index 8f36ccff..9377fd3a 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/GraphJobStep.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/GraphJobStep.java @@ -19,7 +19,7 @@ package io.bootique.job.runtime; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,9 +34,9 @@ public abstract class GraphJobStep { private static final Logger LOGGER = LoggerFactory.getLogger(GraphJobStep.class); - public abstract JobResult run(Map params); + public abstract JobOutcome run(Map params); - protected void logResult(String jobName, JobResult result) { + protected void logResult(String jobName, JobOutcome result) { if (!LOGGER.isDebugEnabled()) { return; @@ -48,11 +48,11 @@ protected void logResult(String jobName, JobResult result) { LOGGER.debug("graph member '{}' finished: {} - {}", jobName, - result.getOutcome(), + result.getStatus(), result.getMessage()); - if (result.getThrowable() != null) { - LOGGER.debug("graph member error", result.getThrowable()); + if (result.getException() != null) { + LOGGER.debug("graph member error", result.getException()); } } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/JobListenersDispatcherDecorator.java b/bootique-job/src/main/java/io/bootique/job/runtime/JobListenersDispatcherDecorator.java index 8917c683..d4e6651f 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/JobListenersDispatcherDecorator.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/JobListenersDispatcherDecorator.java @@ -23,7 +23,7 @@ import io.bootique.job.JobMetadata; import io.bootique.job.MappedJobListener; import io.bootique.job.JobDecorator; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.*; import java.util.function.Consumer; @@ -47,23 +47,23 @@ public boolean isApplicable(JobMetadata metadata, String altName, Map params) { + public JobOutcome run(Job delegate, Map params) { String jobName = delegate.getMetadata().getName(); JobListenerInvoker listenerInvoker = new JobListenerInvoker(jobName); listenerInvoker.onStart(listeners, params); - JobResult result = ExceptionsHandlerDecorator.runWithExceptionHandling(delegate.getMetadata(), delegate, params); + JobOutcome result = ExceptionsHandlerDecorator.runWithExceptionHandling(delegate.getMetadata(), delegate, params); // invoke outside try/catch... Listener exceptions will be processed downstream listenerInvoker.onFinish(result); return result; } - static class JobListenerInvoker implements Consumer> { + static class JobListenerInvoker implements Consumer> { private final String jobName; - private final List> callbacks; + private final List> callbacks; JobListenerInvoker(String jobName) { this.jobName = jobName; @@ -71,7 +71,7 @@ static class JobListenerInvoker implements Consumer> { } @Override - public void accept(Consumer callback) { + public void accept(Consumer callback) { callbacks.add(callback); } @@ -79,10 +79,10 @@ public void onStart(Collection listeners, Map listeners.stream().map(MappedJobListener::getListener).forEach(l -> l.onJobStarted(jobName, parameters, this)); } - public void onFinish(JobResult result) { + public void onFinish(JobOutcome result) { // invoke backwards - last callbacks are notified first - ListIterator> it = callbacks.listIterator(callbacks.size()); + ListIterator> it = callbacks.listIterator(callbacks.size()); while (it.hasPrevious()) { it.previous().accept(result); } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/JobLogger.java b/bootique-job/src/main/java/io/bootique/job/runtime/JobLogger.java index 715a676a..0fd2c04b 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/JobLogger.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/JobLogger.java @@ -22,7 +22,7 @@ import io.bootique.job.Job; import io.bootique.job.JobDecorator; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,16 +36,16 @@ public class JobLogger implements JobDecorator { protected static final Logger LOGGER = LoggerFactory.getLogger(JobLogger.class); @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { JobMetadata metadata = delegate.getMetadata(); onJobStarted(metadata, params); try { - JobResult result = delegate.run(params); + JobOutcome result = delegate.run(params); return onJobFinished(metadata, result); } catch (Throwable th) { - return onJobFinished(metadata, JobResult.failure(metadata, th)); + return onJobFinished(metadata, JobOutcome.failed(th)); } } @@ -54,29 +54,29 @@ private void onJobStarted(JobMetadata metadata, Map params) { LOGGER.info("{} '{}' started with params {}", label, metadata.getName(), params); } - private JobResult onJobFinished(JobMetadata metadata, JobResult result) { + private JobOutcome onJobFinished(JobMetadata metadata, JobOutcome result) { String label = metadata.isGroup() ? "group" : "job"; String name = metadata.getName(); - switch (result.getOutcome()) { + switch (result.getStatus()) { case SUCCESS: LOGGER.info("{} '{}' finished", label, name); return result; default: String message = result.getMessage(); - if (message == null && result.getThrowable() != null) { - message = result.getThrowable().getMessage(); + if (message == null && result.getException() != null) { + message = result.getException().getMessage(); } if (message == null) { message = ""; } - if (result.getThrowable() != null) { - LOGGER.info("job exception", result.getThrowable()); + if (result.getException() != null) { + LOGGER.info("job exception", result.getException()); } - LOGGER.warn("{} '{}' finished: {} - {} ", label, name, result.getOutcome(), message); + LOGGER.warn("{} '{}' finished: {} - {} ", label, name, result.getStatus(), message); return result; } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/JobNameDecorator.java b/bootique-job/src/main/java/io/bootique/job/runtime/JobNameDecorator.java index 8448c9e1..07c6c88d 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/JobNameDecorator.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/JobNameDecorator.java @@ -21,7 +21,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; import io.bootique.job.JobDecorator; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -49,7 +49,7 @@ protected JobMetadata changeName(JobMetadata metadata, String altName) { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { return delegate.run(params); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/JobParamsBinderDecorator.java b/bootique-job/src/main/java/io/bootique/job/runtime/JobParamsBinderDecorator.java index 0235f3e2..ccb30df4 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/JobParamsBinderDecorator.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/JobParamsBinderDecorator.java @@ -21,7 +21,7 @@ import io.bootique.job.Job; import io.bootique.job.JobMetadata; import io.bootique.job.JobDecorator; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.HashMap; import java.util.Map; @@ -44,7 +44,7 @@ public Job decorate(Job delegate, String altName, Map prebindPar } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { throw new UnsupportedOperationException("This decorator is not executable. It delegates to another decorator instead"); } @@ -56,7 +56,7 @@ static class KnownParamsDecorator implements JobDecorator { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { return delegate.run(mergeParams(params)); } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/ParallelJobsStep.java b/bootique-job/src/main/java/io/bootique/job/runtime/ParallelJobsStep.java index 054ea869..a926a971 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/ParallelJobsStep.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/ParallelJobsStep.java @@ -19,7 +19,7 @@ package io.bootique.job.runtime; import io.bootique.job.Job; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,15 +46,15 @@ public ParallelJobsStep(GraphExecutor executor, List jobs) { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { - List>> submitted = jobs + List>> submitted = jobs .stream() .skip(1) .map(j -> Map.entry(j.getMetadata().getName(), executor.submit(j, params))) .collect(Collectors.toList()); - JobResult r0 = jobs.get(0).run(params); + JobOutcome r0 = jobs.get(0).run(params); logResult(jobs.get(0).getMetadata().getName(), r0); if (!r0.isSuccess()) { @@ -65,11 +65,11 @@ public JobResult run(Map params) { for (int i = 0; i < submitted.size(); i++) { - JobResult r; + JobOutcome r; try { r = submitted.get(i).getValue().get(); } catch (ExecutionException | InterruptedException e) { - r = JobResult.failure(jobs.get(i).getMetadata(), e); + r = JobOutcome.failed(e); } logResult(submitted.get(i).getKey(), r); @@ -87,7 +87,7 @@ public JobResult run(Map params) { return r0; } - private void cancelAll(List>> tasks) { + private void cancelAll(List>> tasks) { tasks.forEach(t -> t.getValue().cancel(true)); } } diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/SimpleJobFuture.java b/bootique-job/src/main/java/io/bootique/job/runtime/SimpleJobFuture.java index 0cde2f90..73299701 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/SimpleJobFuture.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/SimpleJobFuture.java @@ -20,7 +20,7 @@ package io.bootique.job.runtime; import io.bootique.job.JobFuture; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.concurrent.*; import java.util.function.Supplier; @@ -29,12 +29,12 @@ public class SimpleJobFuture implements JobFuture { private String jobName; private Future delegate; - private Supplier resultSupplier; + private Supplier resultSupplier; public SimpleJobFuture( String jobName, Future delegate, - Supplier resultSupplier) { + Supplier resultSupplier) { this.jobName = jobName; this.delegate = delegate; @@ -62,7 +62,7 @@ public boolean isDone() { } @Override - public JobResult get() { + public JobOutcome get() { // wait till the job is done and then return the result try { delegate.get(); @@ -74,7 +74,7 @@ public JobResult get() { } @Override - public JobResult get(long timeout, TimeUnit unit) { + public JobOutcome get(long timeout, TimeUnit unit) { // wait till the job is done and then return the result try { diff --git a/bootique-job/src/main/java/io/bootique/job/runtime/SingleJobStep.java b/bootique-job/src/main/java/io/bootique/job/runtime/SingleJobStep.java index ad8ccd1d..de50649e 100644 --- a/bootique-job/src/main/java/io/bootique/job/runtime/SingleJobStep.java +++ b/bootique-job/src/main/java/io/bootique/job/runtime/SingleJobStep.java @@ -19,7 +19,7 @@ package io.bootique.job.runtime; import io.bootique.job.Job; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; import java.util.Objects; @@ -36,8 +36,8 @@ public SingleJobStep(Job job) { } @Override - public JobResult run(Map params) { - JobResult result = job.run(params); + public JobOutcome run(Map params) { + JobOutcome result = job.run(params); logResult(job.getMetadata().getName(), result); return result; } diff --git a/bootique-job/src/test/java/io/bootique/job/ExecCommandIT.java b/bootique-job/src/test/java/io/bootique/job/ExecCommandIT.java index 7a3a42ce..64677af5 100644 --- a/bootique-job/src/test/java/io/bootique/job/ExecCommandIT.java +++ b/bootique-job/src/test/java/io/bootique/job/ExecCommandIT.java @@ -509,7 +509,7 @@ public YJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { try { Thread.sleep(600L); } catch (InterruptedException e) { @@ -525,7 +525,7 @@ public ZJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { try { Thread.sleep(1000L); } catch (InterruptedException e) { diff --git a/bootique-job/src/test/java/io/bootique/job/ExecCommand_DeepGroups.java b/bootique-job/src/test/java/io/bootique/job/ExecCommand_DeepGroups.java index 90444a58..e5b48687 100644 --- a/bootique-job/src/test/java/io/bootique/job/ExecCommand_DeepGroups.java +++ b/bootique-job/src/test/java/io/bootique/job/ExecCommand_DeepGroups.java @@ -88,10 +88,10 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("running 1"); results.put("j1", 1); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -103,10 +103,10 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("running 2"); results.put("j2", 1); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -118,10 +118,10 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("running 3"); results.put("j3", 1); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -133,10 +133,10 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("running 4"); results.put("j4", 1); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -148,10 +148,10 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("running 5"); results.put("j5", 1); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -163,10 +163,10 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("running 6"); results.put("j6", 1); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } } diff --git a/bootique-job/src/test/java/io/bootique/job/JobDecoratorIT.java b/bootique-job/src/test/java/io/bootique/job/JobDecoratorIT.java index acc79ab6..cecff8eb 100644 --- a/bootique-job/src/test/java/io/bootique/job/JobDecoratorIT.java +++ b/bootique-job/src/test/java/io/bootique/job/JobDecoratorIT.java @@ -179,7 +179,7 @@ static String getAndReset() { public static class Listener1 implements JobDecorator { @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { SharedState.append("_L1_started"); try { return delegate.run(params); @@ -192,7 +192,7 @@ public JobResult run(Job delegate, Map params) { public static class Listener2 implements JobDecorator { @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { SharedState.append("_L2_started"); try { return delegate.run(params); @@ -205,7 +205,7 @@ public JobResult run(Job delegate, Map params) { public static class Listener3 implements JobDecorator { @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { SharedState.append("_L3_started"); try { return delegate.run(params); @@ -229,9 +229,9 @@ public String getActualParam() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { this.actualParam = (String) params.get("LP"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -243,7 +243,7 @@ public Listener_ParamsChange(String setParam) { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { params.put("LP", setParam); return delegate.run(params); } @@ -267,7 +267,7 @@ public ZJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { try { Thread.sleep(1000L); } catch (InterruptedException e) { diff --git a/bootique-job/src/test/java/io/bootique/job/JobDecorator_FailuresIT.java b/bootique-job/src/test/java/io/bootique/job/JobDecorator_FailuresIT.java index 56272a7a..b336ef22 100644 --- a/bootique-job/src/test/java/io/bootique/job/JobDecorator_FailuresIT.java +++ b/bootique-job/src/test/java/io/bootique/job/JobDecorator_FailuresIT.java @@ -48,10 +48,10 @@ public void jobFailure() { .module(b -> JobsModule.extend(b).addJob(job).addDecorator(listener, JobDecorators.PARAMS_BINDER_ORDER + 1)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("failure").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("failure").runNonBlocking().get(); assertSame(result, listener.result); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertNull(result.getThrowable()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertNull(result.getException()); assertEquals(FailureJob.FAILURE_MESSAGE, result.getMessage()); } @@ -65,11 +65,11 @@ public void listenerException_OnStart() { .module(b -> JobsModule.extend(b).addJob(job).addDecorator(new StartException(), JobDecorators.PARAMS_BINDER_ORDER + 1)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); job.assertNotExecuted(); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertEquals("This decorator always throws on start", result.getThrowable().getMessage()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertEquals("This decorator always throws on start", result.getException().getMessage()); } @Test @@ -82,17 +82,17 @@ public void listenerException_OnFinish() { .module(b -> JobsModule.extend(b).addJob(job).addDecorator(new EndException(), JobDecorators.PARAMS_BINDER_ORDER + 1)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); job.assertExecuted(); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertEquals("This decorator always throws on finish", result.getThrowable().getMessage()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertEquals("This decorator always throws on finish", result.getException().getMessage()); } public static class StartException implements JobDecorator { @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { throw new RuntimeException("This decorator always throws on start"); } } @@ -100,7 +100,7 @@ public JobResult run(Job delegate, Map params) { public static class EndException implements JobDecorator { @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { try { return delegate.run(params); } finally { @@ -111,10 +111,10 @@ public JobResult run(Job delegate, Map params) { public static class JobResultCapture implements JobDecorator { - private JobResult result; + private JobOutcome result; @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { this.result = delegate.run(params); return this.result; @@ -136,8 +136,8 @@ public FailureJob() { } @Override - public JobResult run(Map params) { - return JobResult.failed(FAILURE_MESSAGE); + public JobOutcome run(Map params) { + return JobOutcome.failed(FAILURE_MESSAGE); } } } diff --git a/bootique-job/src/test/java/io/bootique/job/JobRegistryIT.java b/bootique-job/src/test/java/io/bootique/job/JobRegistryIT.java index 2d3c67bd..fce58b6d 100644 --- a/bootique-job/src/test/java/io/bootique/job/JobRegistryIT.java +++ b/bootique-job/src/test/java/io/bootique/job/JobRegistryIT.java @@ -75,8 +75,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } @@ -88,8 +88,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } } diff --git a/bootique-job/src/test/java/io/bootique/job/JobTest.java b/bootique-job/src/test/java/io/bootique/job/JobTest.java index 71c8de79..0441bb6a 100644 --- a/bootique-job/src/test/java/io/bootique/job/JobTest.java +++ b/bootique-job/src/test/java/io/bootique/job/JobTest.java @@ -34,15 +34,15 @@ void getMetadata() { @Test void getMetadataLambda() { - Job j = p -> JobResult.succeeded(); + Job j = p -> JobOutcome.succeeded(); assertTrue(j.getMetadata().getName().startsWith("jobtest$$lambda"), j.getMetadata().getName()); } static class MyJob implements Job { @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } } diff --git a/bootique-job/src/test/java/io/bootique/job/ListenerIT.java b/bootique-job/src/test/java/io/bootique/job/ListenerIT.java index f1f2f21c..75b27082 100644 --- a/bootique-job/src/test/java/io/bootique/job/ListenerIT.java +++ b/bootique-job/src/test/java/io/bootique/job/ListenerIT.java @@ -155,7 +155,7 @@ static String getAndReset() { public static class Listener1 implements JobListener { @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { onFinishedCallbackRegistry.accept(result -> SharedState.append("_L1_finished")); SharedState.append("_L1_started"); @@ -165,7 +165,7 @@ public void onJobStarted(String jobName, Map parameters, Consume public static class Listener2 implements JobListener { @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { onFinishedCallbackRegistry.accept(result -> SharedState.append("_L2_finished")); SharedState.append("_L2_started"); } @@ -174,7 +174,7 @@ public void onJobStarted(String jobName, Map parameters, Consume public static class Listener3 implements JobListener { @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { onFinishedCallbackRegistry.accept(result -> SharedState.append("_L3_finished")); SharedState.append("_L3_started"); } @@ -194,9 +194,9 @@ public String getActualParam() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { this.actualParam = (String) params.get("LP"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -208,7 +208,7 @@ public Listener_ParamsChange(String setParam) { } @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { parameters.put("LP", setParam); } } @@ -231,7 +231,7 @@ public ZJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { try { Thread.sleep(1000L); } catch (InterruptedException e) { diff --git a/bootique-job/src/test/java/io/bootique/job/Listener_FailuresIT.java b/bootique-job/src/test/java/io/bootique/job/Listener_FailuresIT.java index 72a49870..d4556845 100644 --- a/bootique-job/src/test/java/io/bootique/job/Listener_FailuresIT.java +++ b/bootique-job/src/test/java/io/bootique/job/Listener_FailuresIT.java @@ -49,11 +49,11 @@ public void jobException() { .module(b -> JobsModule.extend(b).addJob(job).addListener(listener)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("exception").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("exception").runNonBlocking().get(); assertSame(result, listener.result); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertTrue(result.getThrowable() instanceof RuntimeException); - assertEquals(ExceptionJob.EXCEPTION_MESSAGE, result.getThrowable().getMessage()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertTrue(result.getException() instanceof RuntimeException); + assertEquals(ExceptionJob.EXCEPTION_MESSAGE, result.getException().getMessage()); } @Test @@ -67,10 +67,10 @@ public void jobFailure() { .module(b -> JobsModule.extend(b).addJob(job).addListener(listener)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("failure").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("failure").runNonBlocking().get(); assertSame(result, listener.result); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertNull(result.getThrowable()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertNull(result.getException()); assertEquals(FailureJob.FAILURE_MESSAGE, result.getMessage()); } @@ -84,11 +84,11 @@ public void listenerException_OnStart() { .module(b -> JobsModule.extend(b).addJob(job).addListener(Listener_StartException.class)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); job.assertNotExecuted(); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertEquals("This listener always throws on start", result.getThrowable().getMessage()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertEquals("This listener always throws on start", result.getException().getMessage()); } @Test @@ -101,17 +101,17 @@ public void listenerException_OnFinish() { .module(b -> JobsModule.extend(b).addJob(job).addListener(Listener_EndException.class)) .createRuntime(); - JobResult result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); + JobOutcome result = runtime.getInstance(Scheduler.class).runBuilder().jobName("x").runNonBlocking().get(); job.assertExecuted(); - assertEquals(JobOutcome.FAILURE, result.getOutcome()); - assertEquals("This listener always throws on finish", result.getThrowable().getMessage()); + assertEquals(JobStatus.FAILURE, result.getStatus()); + assertEquals("This listener always throws on finish", result.getException().getMessage()); } public static class Listener_StartException implements JobListener { @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { throw new RuntimeException("This listener always throws on start"); } } @@ -119,7 +119,7 @@ public void onJobStarted(String jobName, Map parameters, Consume public static class Listener_EndException implements JobListener { @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { onFinishedCallbackRegistry.accept(r -> { throw new RuntimeException("This listener always throws on finish"); }); @@ -128,10 +128,10 @@ public void onJobStarted(String jobName, Map parameters, Consume public static class Listener_JobResultCapture implements JobListener { - private JobResult result; + private JobOutcome result; @Override - public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { + public void onJobStarted(String jobName, Map parameters, Consumer> onFinishedCallbackRegistry) { onFinishedCallbackRegistry.accept(r -> { this.result = r; }); @@ -153,8 +153,8 @@ public FailureJob() { } @Override - public JobResult run(Map params) { - return JobResult.failed(FAILURE_MESSAGE); + public JobOutcome run(Map params) { + return JobOutcome.failed(FAILURE_MESSAGE); } } @@ -167,7 +167,7 @@ public ExceptionJob() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { throw new RuntimeException(EXCEPTION_MESSAGE); } } diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/BaseTestJob.java b/bootique-job/src/test/java/io/bootique/job/fixture/BaseTestJob.java index 679cb1e9..b46d8cec 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/BaseTestJob.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/BaseTestJob.java @@ -20,7 +20,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -41,10 +41,10 @@ protected BaseTestJob(JobMetadata metadata) { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { this.executedAtNanos = System.nanoTime(); this.params = params; - return JobResult.succeeded(); + return JobOutcome.succeeded(); } public T assertNotExecuted() { diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/ExecutableAtMostOnceJob.java b/bootique-job/src/test/java/io/bootique/job/fixture/ExecutableAtMostOnceJob.java index f77189b1..a46c208b 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/ExecutableAtMostOnceJob.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/ExecutableAtMostOnceJob.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,7 +54,7 @@ public ExecutableAtMostOnceJob(JobMetadata metadata, long runIterations, boolean } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { try { boolean acquired = executionLock.tryLock(); if (!acquired) { @@ -76,7 +76,7 @@ public JobResult run(Map params) { } } - private JobResult doExecute(Map params) { + private JobOutcome doExecute(Map params) { if (executed) { throw new RuntimeException("Already executed: " + getMetadata().getName()); } @@ -85,7 +85,7 @@ private JobResult doExecute(Map params) { busyWait(runIterations); finishedAt = System.nanoTime(); executed = true; - return shouldFail ? JobResult.failed() : JobResult.succeeded(); + return shouldFail ? JobOutcome.failed() : JobOutcome.succeeded(); } private void busyWait(long iterations) { diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob3.java b/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob3.java index 35134784..43a7287f 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob3.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob3.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -34,7 +34,7 @@ public ParameterizedJob3() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { assertEquals(3, params.size()); assertTrue(params.containsKey("longp")); assertTrue(params.containsKey("param1")); @@ -42,6 +42,6 @@ public JobResult run(Map params) { assertEquals(3L, params.get("longp")); assertEquals("value1", params.get("param1")); assertEquals(2, params.get("param2")); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob4.java b/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob4.java index 639ac04c..f7aa81d8 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob4.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob4.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -36,9 +36,9 @@ public ParameterizedJob4() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { this.params = params; - return JobResult.succeeded(); + return JobOutcome.succeeded(); } public Map getParams() { diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob5.java b/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob5.java index a3961ad1..38f91846 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob5.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/ParameterizedJob5.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -36,9 +36,9 @@ public ParameterizedJob5() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { this.params = params; - return JobResult.succeeded(); + return JobOutcome.succeeded(); } public Map getParams() { diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob1.java b/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob1.java index 71bbac15..83aba75b 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob1.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob1.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -32,7 +32,7 @@ public ScheduledJob1() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob2.java b/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob2.java index 06be4112..eb12f1bb 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob2.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/ScheduledJob2.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import java.util.Map; @@ -32,7 +32,7 @@ public ScheduledJob2() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } diff --git a/bootique-job/src/test/java/io/bootique/job/fixture/SerialJob2.java b/bootique-job/src/test/java/io/bootique/job/fixture/SerialJob2.java index d30a006c..15c05b86 100644 --- a/bootique-job/src/test/java/io/bootique/job/fixture/SerialJob2.java +++ b/bootique-job/src/test/java/io/bootique/job/fixture/SerialJob2.java @@ -21,7 +21,7 @@ import io.bootique.job.BaseJob; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.job.SerialJob; import java.util.Map; @@ -34,7 +34,7 @@ public SerialJob2() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { long startTime = System.nanoTime(); @@ -45,6 +45,6 @@ public JobResult run(Map params) { } long endTime = System.nanoTime(); - return JobResult.success(getMetadata(), startTime + ":" + endTime); + return JobOutcome.succeeded(startTime + ":" + endTime); } } diff --git a/bootique-job/src/test/java/io/bootique/job/graph/GraphJobIT.java b/bootique-job/src/test/java/io/bootique/job/graph/GraphJobIT.java index 892695c2..2ed77e8d 100644 --- a/bootique-job/src/test/java/io/bootique/job/graph/GraphJobIT.java +++ b/bootique-job/src/test/java/io/bootique/job/graph/GraphJobIT.java @@ -111,8 +111,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } @@ -124,8 +124,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } @@ -137,8 +137,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } @@ -152,8 +152,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } } diff --git a/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerIT.java b/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerIT.java index 790d3ed8..19f0b016 100644 --- a/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerIT.java +++ b/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerIT.java @@ -151,7 +151,7 @@ public ExecutionRateListener() { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { ExecutionRateListener.Execution previousExecution = executions.peekLast(); long startedAt = System.currentTimeMillis(); diff --git a/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerParamsIT.java b/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerParamsIT.java index da5d9949..1c0a19d1 100644 --- a/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerParamsIT.java +++ b/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerParamsIT.java @@ -80,8 +80,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map parameters) { - return JobResult.succeeded(); + public JobOutcome run(Map parameters) { + return JobOutcome.succeeded(); } } @@ -92,7 +92,7 @@ public DecoratorParamsTester(BQTestFactory testFactory) { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { // testing params map mutability params.put("added", "A"); return super.run(delegate, params); @@ -104,7 +104,7 @@ public static class ParamsTester implements JobDecorator { private BQTestFactory testFactory; protected Map expectedParams; private Map params; - private JobResult result; + private JobOutcome result; ParamsTester(BQTestFactory testFactory) { this.testFactory = testFactory; @@ -118,7 +118,7 @@ ParamsTester param(String key, Object value) { } @Override - public JobResult run(Job delegate, Map params) { + public JobOutcome run(Job delegate, Map params) { this.params = new HashMap<>(params); this.result = delegate.run(params); return this.result; diff --git a/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerSerialJobIT.java b/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerSerialJobIT.java index 0b4e8bd6..a02196ac 100644 --- a/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerSerialJobIT.java +++ b/bootique-job/src/test/java/io/bootique/job/scheduler/SchedulerSerialJobIT.java @@ -63,13 +63,13 @@ public void serialJob() throws InterruptedException { Scheduler scheduler = app.getInstance(Scheduler.class); final int count = 5; - ConcurrentMap results = new ConcurrentHashMap<>(); + ConcurrentMap results = new ConcurrentHashMap<>(); CountDownLatch latch = new CountDownLatch(count); for (int i = 0; i < count; i++) { Integer id = i; executor.submit(() -> { try { - JobResult r = scheduler.runBuilder().jobName("serialjob2").runNonBlocking().get(); + JobOutcome r = scheduler.runBuilder().jobName("serialjob2").runNonBlocking().get(); results.put(id, r); } finally { latch.countDown(); @@ -87,10 +87,10 @@ public void serialJob() throws InterruptedException { List successRanges = results.values().stream() // can either be non-overlapping successes or skipped - .peek(r -> assertTrue(r.getOutcome() == JobOutcome.SUCCESS || r.getOutcome() == JobOutcome.SKIPPED)) + .peek(r -> assertTrue(r.getStatus() == JobStatus.SUCCESS || r.getStatus() == JobStatus.SKIPPED)) // check for success overlaps - .filter(r -> r.getOutcome() == JobOutcome.SUCCESS) + .filter(r -> r.getStatus() == JobStatus.SUCCESS) .map(r -> r.getMessage().split(":")) .map(ss -> new Long[]{Long.parseLong(ss[0]), Long.parseLong(ss[1])}) .sorted(Comparator.comparing(ll -> ll[0])) diff --git a/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_GraphJobIT.java b/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_GraphJobIT.java index 6ff7c55a..bf9bf351 100644 --- a/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_GraphJobIT.java +++ b/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_GraphJobIT.java @@ -53,8 +53,8 @@ public void runOnce_JobGroup() { parameters.put("param2", 2); JobFuture future = scheduler.runBuilder().jobName("group1").params(parameters).runNonBlocking(); - JobResult result = future.get(5L, TimeUnit.SECONDS); - assertEquals(JobOutcome.SUCCESS, result.getOutcome()); + JobOutcome result = future.get(5L, TimeUnit.SECONDS); + assertEquals(JobStatus.SUCCESS, result.getStatus()); } @Test @@ -62,7 +62,7 @@ public void runOnce_EmptyGroup() { Scheduler scheduler = app.getInstance(Scheduler.class); JobFuture future = scheduler.runBuilder().jobName("group2").runNonBlocking(); - JobResult result = future.get(5L, TimeUnit.SECONDS); - assertEquals(JobOutcome.SUCCESS, result.getOutcome()); + JobOutcome result = future.get(5L, TimeUnit.SECONDS); + assertEquals(JobStatus.SUCCESS, result.getStatus()); } } diff --git a/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_NoDeadlockIT.java b/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_NoDeadlockIT.java index 36838df4..7212088a 100644 --- a/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_NoDeadlockIT.java +++ b/bootique-job/src/test/java/io/bootique/job/scheduler/Scheduler_NoDeadlockIT.java @@ -72,8 +72,8 @@ public void attemptDeadlock_Get() { scheduler.runBuilder().jobName("j1").runNonBlocking()); for (JobFuture f : futures) { - JobResult r = f.get(); - assertEquals(JobOutcome.SUCCESS, r.getOutcome()); + JobOutcome r = f.get(); + assertEquals(JobStatus.SUCCESS, r.getStatus()); } } @@ -87,8 +87,8 @@ public void attemptDeadlock_GetWithTimeout() { scheduler.runBuilder().jobName("j1").runNonBlocking()); for (JobFuture f : futures) { - JobResult r = f.get(1, TimeUnit.SECONDS); - assertEquals(JobOutcome.SUCCESS, r.getOutcome()); + JobOutcome r = f.get(1, TimeUnit.SECONDS); + assertEquals(JobStatus.SUCCESS, r.getStatus()); } } @@ -99,9 +99,9 @@ public J1() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("1 in progress"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -112,9 +112,9 @@ public J2() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("2 in progress"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -125,9 +125,9 @@ public J3() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("3 in progress"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -138,9 +138,9 @@ public J4() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("4 in progress"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } @@ -151,9 +151,9 @@ public J5() { } @Override - public JobResult run(Map params) { + public JobOutcome run(Map params) { LOGGER.info("5 in progress"); - return JobResult.succeeded(); + return JobOutcome.succeeded(); } } } diff --git a/bootique-job/src/test/java/io/bootique/job/trigger/JobExecParserIT.java b/bootique-job/src/test/java/io/bootique/job/trigger/JobExecParserIT.java index 75877ea6..4efd5740 100644 --- a/bootique-job/src/test/java/io/bootique/job/trigger/JobExecParserIT.java +++ b/bootique-job/src/test/java/io/bootique/job/trigger/JobExecParserIT.java @@ -22,7 +22,7 @@ import io.bootique.Bootique; import io.bootique.job.Job; import io.bootique.job.JobMetadata; -import io.bootique.job.JobResult; +import io.bootique.job.JobOutcome; import io.bootique.job.JobsModule; import io.bootique.junit5.BQApp; import io.bootique.junit5.BQTest; @@ -95,8 +95,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } @@ -112,8 +112,8 @@ public JobMetadata getMetadata() { } @Override - public JobResult run(Map params) { - return JobResult.succeeded(); + public JobOutcome run(Map params) { + return JobOutcome.succeeded(); } } }