From e22aca85e95c4255052ffc1dcec67262c7be5e49 Mon Sep 17 00:00:00 2001 From: dreis2211 Date: Fri, 14 Feb 2020 11:04:00 +0100 Subject: [PATCH 1/3] Handle new Annotation.toString() behaviour in JDK 14 See gh-20180 --- .../NoSuchBeanDefinitionFailureAnalyzerTests.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java index bde0ae433af..8f6013a4ea6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.diagnostics.FailureAnalysis; import org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter; +import org.springframework.boot.system.JavaVersion; import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; @@ -153,8 +154,11 @@ class NoSuchBeanDefinitionFailureAnalyzerTests { @Test void failureAnalysisForUnmatchedQualifier() { FailureAnalysis analysis = analyzeFailure(createFailure(QualifiedBeanConfiguration.class)); - assertThat(analysis.getDescription()) - .containsPattern("@org.springframework.beans.factory.annotation.Qualifier\\(value=\"*alpha\"*\\)"); + String pattern = "@org.springframework.beans.factory.annotation.Qualifier\\(value=\"*alpha\"*\\)"; + if (JavaVersion.getJavaVersion().isEqualOrNewerThan(JavaVersion.FOURTEEN)) { + pattern = "@org.springframework.beans.factory.annotation.Qualifier\\(\"*alpha\"*\\)"; + } + assertThat(analysis.getDescription()).containsPattern(pattern); } @Test From e5394ceac2d322d517270b382acd1472c3b808df Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Sat, 7 Mar 2020 16:53:46 +0100 Subject: [PATCH 2/3] Polish "Handle new Annotation.toString() behaviour in JDK 14" See gh-20180 --- .../NoSuchBeanDefinitionFailureAnalyzerTests.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java index 8f6013a4ea6..06398788350 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/diagnostics/analyzer/NoSuchBeanDefinitionFailureAnalyzerTests.java @@ -154,11 +154,14 @@ class NoSuchBeanDefinitionFailureAnalyzerTests { @Test void failureAnalysisForUnmatchedQualifier() { FailureAnalysis analysis = analyzeFailure(createFailure(QualifiedBeanConfiguration.class)); - String pattern = "@org.springframework.beans.factory.annotation.Qualifier\\(value=\"*alpha\"*\\)"; + assertThat(analysis.getDescription()).containsPattern(determineAnnotationValuePattern()); + } + + private String determineAnnotationValuePattern() { if (JavaVersion.getJavaVersion().isEqualOrNewerThan(JavaVersion.FOURTEEN)) { - pattern = "@org.springframework.beans.factory.annotation.Qualifier\\(\"*alpha\"*\\)"; + return "@org.springframework.beans.factory.annotation.Qualifier\\(\"*alpha\"*\\)"; } - assertThat(analysis.getDescription()).containsPattern(pattern); + return "@org.springframework.beans.factory.annotation.Qualifier\\(value=\"*alpha\"*\\)"; } @Test From 53e8e49552211e0cd8873aa9c5826aab96f1475a Mon Sep 17 00:00:00 2001 From: dreis2211 Date: Fri, 14 Feb 2020 11:06:55 +0100 Subject: [PATCH 3/3] Fix JarFileTests for multi-release JARs on JDK14 See gh-20180 --- .../java/org/springframework/boot/loader/TestJarCreator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/TestJarCreator.java b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/TestJarCreator.java index 6303e8808c9..4bbd5c9ddc7 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/TestJarCreator.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/TestJarCreator.java @@ -98,6 +98,7 @@ public abstract class TestJarCreator { writeEntry(jarOutputStream, "META-INF/versions/11/multi-release.dat", 11); writeEntry(jarOutputStream, "META-INF/versions/12/multi-release.dat", 12); writeEntry(jarOutputStream, "META-INF/versions/13/multi-release.dat", 13); + writeEntry(jarOutputStream, "META-INF/versions/14/multi-release.dat", 14); } else { writeEntry(jarOutputStream, "3.dat", 3);