BATCHEE-84 retn BatchStatus in Batches.waitForEnd
diff --git a/jbatch/src/main/java/org/apache/batchee/util/Batches.java b/jbatch/src/main/java/org/apache/batchee/util/Batches.java
index a7668c7..1482e8a 100644
--- a/jbatch/src/main/java/org/apache/batchee/util/Batches.java
+++ b/jbatch/src/main/java/org/apache/batchee/util/Batches.java
@@ -31,24 +31,32 @@
// no-op
}
- public static void waitForEnd(final long id) {
- waitForEnd(BatchRuntime.getJobOperator(), id);
+ public static BatchStatus waitForEnd(final long id) {
+ return waitForEnd(BatchRuntime.getJobOperator(), id);
}
- public static void waitForEnd(final JobOperator jobOperator, final long id) {
+ public static BatchStatus waitForEnd(final JobOperator jobOperator, final long id) {
+ BatchStatus batchStatus;
+
if (JobOperatorImpl.class.isInstance(jobOperator)) {
JobOperatorImpl.class.cast(jobOperator).waitFor(id);
- return;
+ batchStatus = getBatchStatus(jobOperator, id);
+ } else {
+
+ // else polling
+ do {
+ batchStatus = getBatchStatus(jobOperator, id);
+
+ try {
+ Thread.sleep(100);
+ } catch (final InterruptedException e) {
+ return batchStatus;
+ }
+ }
+ while (!BATCH_END_STATUSES.contains(batchStatus));
}
- // else polling
- do {
- try {
- Thread.sleep(100);
- } catch (final InterruptedException e) {
- return;
- }
- } while (!isDone(jobOperator, id));
+ return batchStatus;
}
public static boolean isDone(final BatchStatus status) {
@@ -56,6 +64,11 @@
}
public static boolean isDone(final JobOperator jobOperator, final long id) {
- return BATCH_END_STATUSES.contains(jobOperator.getJobExecution(id).getBatchStatus());
+ return isDone(getBatchStatus(jobOperator, id));
+ }
+
+
+ private static BatchStatus getBatchStatus(JobOperator jobOperator, long id) {
+ return jobOperator.getJobExecution(id).getBatchStatus();
}
}