Additional fix related to BATCH-40, ExitStatus was not being propagated from the RepeatCallback correctly.
This commit is contained in:
@@ -109,7 +109,7 @@ public class ExitStatus implements Serializable {
|
||||
* logical and of the current value and the argument provided.
|
||||
*/
|
||||
public ExitStatus and(boolean continuable) {
|
||||
return new ExitStatus(this.continuable && continuable);
|
||||
return new ExitStatus(this.continuable && continuable, this.exitCode, this.exitDescription);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -203,7 +203,10 @@ public class RepeatTemplate implements RepeatOperations {
|
||||
executeAfterInterceptors(context, value);
|
||||
// An exception alone is not sufficient grounds for not
|
||||
// continuing
|
||||
result = result.and(canContinue(value));
|
||||
|
||||
if(value instanceof ExitStatus){
|
||||
result = (ExitStatus)value;
|
||||
}
|
||||
|
||||
// N.B. the order may be important here:
|
||||
if (isComplete(context, value) || isMarkedComplete(context)) {
|
||||
|
||||
@@ -66,6 +66,11 @@ public class ExitStatusTests extends TestCase {
|
||||
public void testAndExitStatus() {
|
||||
assertTrue(ExitStatus.CONTINUABLE.and(ExitStatus.CONTINUABLE.isContinuable()).isContinuable());
|
||||
assertFalse(ExitStatus.CONTINUABLE.and(ExitStatus.FINISHED.isContinuable()).isContinuable());
|
||||
assertTrue(ExitStatus.FINISHED.and(ExitStatus.CONTINUABLE.isContinuable()).getExitCode()
|
||||
== ExitStatus.FINISHED.getExitCode());
|
||||
ExitStatus status = new ExitStatus(false, "CUSTOM_CODE", "CUSTOM_DESCRIPTION");
|
||||
assertTrue(status.and(true).getExitCode() == "CUSTOM_CODE");
|
||||
assertTrue(status.and(true).getExitDescription() == "CUSTOM_DESCRIPTION");
|
||||
}
|
||||
|
||||
public void testAddExitCode() throws Exception {
|
||||
|
||||
@@ -387,5 +387,20 @@ public class SimpleRepeatTemplateTests extends AbstractTradeBatchTests {
|
||||
assertFalse(result.isContinuable());
|
||||
|
||||
}
|
||||
|
||||
public void testCustomExitCode(){
|
||||
|
||||
ExitStatus status = template.iterate(new RepeatCallback(){
|
||||
|
||||
public ExitStatus doInIteration(RepeatContext context)
|
||||
throws Exception {
|
||||
ExitStatus exitStatus = new ExitStatus(false, "CUSTOM_CODE");
|
||||
return exitStatus;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
assertEquals("CUSTOM_CODE", status.getExitCode());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user