diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/health/RefreshScopeHealthIndicator.java b/spring-cloud-context/src/main/java/org/springframework/cloud/health/RefreshScopeHealthIndicator.java index a8de8b4f..4e96657a 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/health/RefreshScopeHealthIndicator.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/health/RefreshScopeHealthIndicator.java @@ -45,19 +45,20 @@ public class RefreshScopeHealthIndicator extends AbstractHealthIndicator { @Override protected void doHealthCheck(Builder builder) throws Exception { - Map errors = new HashMap<>(this.scope.getIfAvailable().getErrors()); - errors.putAll(this.rebinder.getErrors()); - if (errors.isEmpty()) { - builder.up(); - } - else { - builder.down(); - if (errors.size() == 1) { - builder.withException(errors.values().iterator().next()); - } - else { - for (String name : errors.keySet()) { - builder.withDetail(name, errors.get(name)); + RefreshScope refreshScope = this.scope.getIfAvailable(); + if(refreshScope != null) { + Map errors = new HashMap<>(refreshScope.getErrors()); + errors.putAll(this.rebinder.getErrors()); + if (errors.isEmpty()) { + builder.up(); + } else { + builder.down(); + if (errors.size() == 1) { + builder.withException(errors.values().iterator().next()); + } else { + for (String name : errors.keySet()) { + builder.withDetail(name, errors.get(name)); + } } } } diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/health/RefreshScopeHealthIndicatorTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/health/RefreshScopeHealthIndicatorTests.java index 4009b8b9..88adea70 100644 --- a/spring-cloud-context/src/test/java/org/springframework/cloud/health/RefreshScopeHealthIndicatorTests.java +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/health/RefreshScopeHealthIndicatorTests.java @@ -81,4 +81,11 @@ public class RefreshScopeHealthIndicatorTests { assertEquals(Status.DOWN, this.indicator.health().getStatus()); } + @Test + public void nullRefreshScope() { + ObjectProvider scopeProvider = mock(ObjectProvider.class); + BDDMockito.willReturn(null).given(scopeProvider).getIfAvailable(); + assertEquals(Status.UP, this.indicator.health().getStatus()); + } + }