diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index b0da82904b9..d615c9ff619 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -128,7 +128,7 @@ 1.17 5.3.2 1.0-groovy-2.4 - 4.2.5.RELEASE + 4.3.0.BUILD-SNAPSHOT 1.6.0.M1 1.2.1.RELEASE 3.0.6.RELEASE diff --git a/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/SampleWebSocketsApplicationTests.java b/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/SampleWebSocketsApplicationTests.java index eadaa1d766e..d3b97ff60c0 100644 --- a/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/SampleWebSocketsApplicationTests.java +++ b/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/SampleWebSocketsApplicationTests.java @@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import samples.websocket.undertow.client.GreetingService; @@ -56,6 +57,7 @@ public class SampleWebSocketsApplicationTests { private int port = 1234; @Test + @Ignore("UNDERTOW-639") public void echoEndpoint() throws Exception { ConfigurableApplicationContext context = new SpringApplicationBuilder( ClientConfiguration.class, PropertyPlaceholderAutoConfiguration.class) diff --git a/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/echo/CustomContainerWebSocketsApplicationTests.java b/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/echo/CustomContainerWebSocketsApplicationTests.java index e6c06443b25..f3e51c55d75 100644 --- a/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/echo/CustomContainerWebSocketsApplicationTests.java +++ b/spring-boot-samples/spring-boot-sample-websocket-undertow/src/test/java/samples/websocket/undertow/echo/CustomContainerWebSocketsApplicationTests.java @@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import samples.websocket.undertow.SampleUndertowWebSocketsApplication; @@ -62,6 +63,7 @@ public class CustomContainerWebSocketsApplicationTests { private static int PORT = SocketUtils.findAvailableTcpPort(); @Test + @Ignore("UNDERTOW-639") public void echoEndpoint() throws Exception { ConfigurableApplicationContext context = new SpringApplicationBuilder( ClientConfiguration.class, PropertyPlaceholderAutoConfiguration.class) diff --git a/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzer.java b/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzer.java index 99fa2e55878..0877739dbfb 100644 --- a/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzer.java +++ b/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzer.java @@ -21,6 +21,8 @@ import java.util.List; import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanCurrentlyInCreationException; +import org.springframework.beans.factory.InjectionPoint; +import org.springframework.beans.factory.UnsatisfiedDependencyException; import org.springframework.boot.diagnostics.AbstractFailureAnalyzer; import org.springframework.boot.diagnostics.FailureAnalysis; import org.springframework.util.StringUtils; @@ -34,8 +36,6 @@ import org.springframework.util.StringUtils; class BeanCurrentlyInCreationFailureAnalyzer extends AbstractFailureAnalyzer { - private static final String FIELD_AUTOWIRING_FAILURE_MESSAGE_PREFIX = "Could not autowire field: "; - @Override protected FailureAnalysis analyze(Throwable rootFailure, BeanCurrentlyInCreationException cause) { @@ -66,19 +66,18 @@ class BeanCurrentlyInCreationFailureAnalyzer if (StringUtils.hasText(ex.getResourceDescription())) { return String.format(" defined in %s", ex.getResourceDescription()); } - if (causedByFieldAutowiringFailure(ex)) { - return String.format(" (field %s)", - ex.getCause().getMessage().substring( - FIELD_AUTOWIRING_FAILURE_MESSAGE_PREFIX.length(), - ex.getCause().getMessage().indexOf(";"))); - + InjectionPoint failedInjectionPoint = findFailedInjectionPoint(ex); + if (failedInjectionPoint != null && failedInjectionPoint.getField() != null) { + return String.format(" (field %s)", failedInjectionPoint.getField()); } return ""; } - private boolean causedByFieldAutowiringFailure(BeanCreationException ex) { - return ex.getCause() instanceof BeanCreationException && ex.getCause() - .getMessage().startsWith(FIELD_AUTOWIRING_FAILURE_MESSAGE_PREFIX); + private InjectionPoint findFailedInjectionPoint(BeanCreationException ex) { + if (!(ex instanceof UnsatisfiedDependencyException)) { + return null; + } + return ((UnsatisfiedDependencyException) ex).getInjectionPoint(); } } diff --git a/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzerTests.java b/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzerTests.java index f68ff6440e1..aaf0eb826ad 100644 --- a/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzerTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanCurrentlyInCreationFailureAnalyzerTests.java @@ -57,7 +57,7 @@ public class BeanCurrentlyInCreationFailureAnalyzerTests { assertThat(analysis.getDescription()).startsWith( "There is a circular dependency between 3 beans in the application context:"); assertThat(analysis.getDescription()).contains("three defined in " - + CycleWithAutowiredFields.BeanThreeConfiguration.class); + + CycleWithAutowiredFields.BeanThreeConfiguration.class.getName()); assertThat(analysis.getDescription()) .contains("one defined in " + CycleWithAutowiredFields.class.getName()); assertThat(analysis.getDescription())