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())