Fix NPE when return an eventExitCode before ApplicationFailedEvent
This commit is contained in:
committed by
Michael Minella
parent
2f03474bbe
commit
9ccbe60cba
@@ -125,7 +125,6 @@ public class TaskLifecycleListener implements ApplicationListener<ApplicationEve
|
||||
}
|
||||
else if(applicationEvent instanceof ExitCodeEvent){
|
||||
this.exitCodeEvent = (ExitCodeEvent) applicationEvent;
|
||||
doTaskEnd();
|
||||
}
|
||||
else if(applicationEvent instanceof ApplicationReadyEvent) {
|
||||
doTaskEnd();
|
||||
@@ -159,7 +158,7 @@ public class TaskLifecycleListener implements ApplicationListener<ApplicationEve
|
||||
this.taskExecution.setErrorMessage(stackTraceToString(this.applicationFailedEvent.getException()));
|
||||
}
|
||||
|
||||
if(this.taskExecution.getExitCode() != 0){
|
||||
if (this.applicationFailedEvent != null && this.taskExecution.getExitCode() != 0) {
|
||||
taskExecution.setExitMessage(invokeOnTaskError(taskExecution,
|
||||
this.applicationFailedEvent.getException()).getExitMessage());
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ExitCodeEvent;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.context.event.ApplicationFailedEvent;
|
||||
@@ -111,6 +112,20 @@ public class TaskLifecycleListenerTests {
|
||||
verifyTaskExecution(0, true, 1, exception);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTaskFailedWithExitCodeEvent() {
|
||||
final int exitCode = 10;
|
||||
context.refresh();
|
||||
RuntimeException exception = new RuntimeException("This was expected");
|
||||
SpringApplication application = new SpringApplication();
|
||||
this.taskExplorer = context.getBean(TaskExplorer.class);
|
||||
context.publishEvent(new ExitCodeEvent(context, exitCode));
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
context.publishEvent(new ApplicationReadyEvent(application, new String[0], context));
|
||||
|
||||
verifyTaskExecution(0, true, exitCode, exception);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoClosingOfContext() {
|
||||
ConfigurableApplicationContext applicationContext = SpringApplication.run(new Object[] {TestDefaultConfiguration.class, PropertyPlaceholderAutoConfiguration.class},
|
||||
|
||||
Reference in New Issue
Block a user