From dfd327d68fca364b3267db63da8a504a4c0e65a6 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 16 Nov 2016 15:17:23 -0800 Subject: [PATCH] Polish multiple root contexts in `Restarter` See gh-7335 See gh-7336 --- .../restart/RestartApplicationListener.java | 17 ++++++++++++----- .../boot/devtools/restart/Restarter.java | 9 +++------ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/RestartApplicationListener.java b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/RestartApplicationListener.java index 2966ac1456e..817d1733598 100644 --- a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/RestartApplicationListener.java +++ b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/RestartApplicationListener.java @@ -45,15 +45,14 @@ public class RestartApplicationListener onApplicationStartingEvent((ApplicationStartingEvent) event); } if (event instanceof ApplicationPreparedEvent) { - Restarter.getInstance() - .prepare(((ApplicationPreparedEvent) event).getApplicationContext()); + onApplicationPreparedEvent((ApplicationPreparedEvent) event); } if (event instanceof ApplicationReadyEvent || event instanceof ApplicationFailedEvent) { Restarter.getInstance().finish(); - if (event instanceof ApplicationFailedEvent) { - Restarter.getInstance().remove(((ApplicationFailedEvent) event).getApplicationContext()); - } + } + if (event instanceof ApplicationFailedEvent) { + onApplicationFailedEvent((ApplicationFailedEvent) event); } } @@ -72,6 +71,14 @@ public class RestartApplicationListener } } + private void onApplicationPreparedEvent(ApplicationPreparedEvent event) { + Restarter.getInstance().prepare(event.getApplicationContext()); + } + + private void onApplicationFailedEvent(ApplicationFailedEvent event) { + Restarter.getInstance().remove(event.getApplicationContext()); + } + @Override public int getOrder() { return this.order; diff --git a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/Restarter.java b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/Restarter.java index 35b4b937c4c..681026c0325 100644 --- a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/Restarter.java +++ b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/Restarter.java @@ -52,7 +52,6 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.ResolvableType; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; import org.springframework.util.ReflectionUtils; /** @@ -316,11 +315,9 @@ public class Restarter { this.logger.debug("Stopping application"); this.stopLock.lock(); try { - if (!CollectionUtils.isEmpty(this.rootContexts)) { - for (ConfigurableApplicationContext rootContext : this.rootContexts) { - rootContext.close(); - } - this.rootContexts.clear(); + for (ConfigurableApplicationContext context : this.rootContexts) { + context.close(); + this.rootContexts.remove(context); } cleanupCaches(); if (this.forceReferenceCleanup) {