From dc401605832fb08493244a9d7d9e4cde8559d0c9 Mon Sep 17 00:00:00 2001 From: dsyer Date: Fri, 7 Mar 2008 08:41:44 +0000 Subject: [PATCH] OPEN - issue BATCH-423: SimpleExitStatusExceptionClassifier never returns a value that will result in ExitMapper.JVM_EXITCODE_JOB_ERROR Applied patch from Doug. --- .../support/SimpleExitStatusExceptionClassifier.java | 4 ++++ .../SimpleExitStatusExceptionClassifierTests.java | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifier.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifier.java index 2df050afb..f1e51ee39 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifier.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifier.java @@ -19,7 +19,9 @@ import java.io.PrintWriter; import java.io.StringWriter; import org.springframework.batch.core.domain.JobInterruptedException; +import org.springframework.batch.core.repository.NoSuchJobException; import org.springframework.batch.core.runtime.ExitStatusExceptionClassifier; +import org.springframework.batch.execution.launch.support.ExitCodeMapper; import org.springframework.batch.repeat.ExitStatus; /** @@ -53,6 +55,8 @@ public class SimpleExitStatusExceptionClassifier implements if (throwable instanceof JobInterruptedException) { exitStatus = new ExitStatus(false, JOB_INTERRUPTED, JobInterruptedException.class.getName()); + } else if( throwable instanceof NoSuchJobException ) { + exitStatus = new ExitStatus(false, ExitCodeMapper.NO_SUCH_JOB); } else { String message = ""; if (throwable!=null) { diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifierTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifierTests.java index 9dee57ba0..bec0b970a 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifierTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/SimpleExitStatusExceptionClassifierTests.java @@ -17,7 +17,9 @@ package org.springframework.batch.execution.step.support; import org.springframework.batch.core.domain.JobInterruptedException; +import org.springframework.batch.core.repository.NoSuchJobException; import org.springframework.batch.core.runtime.ExitStatusExceptionClassifier; +import org.springframework.batch.execution.launch.support.ExitCodeMapper; import org.springframework.batch.execution.step.support.SimpleExitStatusExceptionClassifier; import org.springframework.batch.repeat.ExitStatus; @@ -74,4 +76,13 @@ public class SimpleExitStatusExceptionClassifierTests extends TestCase { assertEquals(exitStatus.getExitDescription(), JobInterruptedException.class.getName()); } + + /** + * a NoSuchJobException should lead to the related constant + */ + public void testClassifyNoSuchJobException() { + ExitStatus exitStatus = (ExitStatus)classifier.classifyForExitCode(new NoSuchJobException("")); + assertEquals(exitStatus.getExitCode(), ExitCodeMapper.NO_SUCH_JOB); + assertEquals(exitStatus.getExitDescription(), ""); + } }