From d212232d9d84955fd763cc67bf55aa509b7d857b Mon Sep 17 00:00:00 2001 From: Tran Ngoc Nhan Date: Fri, 14 Feb 2025 00:26:01 +0700 Subject: [PATCH] Implement RuntimeHintsRegistrar CLoses gh-44299 --- .../FreeMarkerTemplateAvailabilityProvider.java | 12 +++++------- .../template/GroovyTemplateAvailabilityProvider.java | 12 +++++------- .../http/HttpMessageConvertersAutoConfiguration.java | 12 ++++++++---- .../springframework/boot/ApplicationProperties.java | 11 +++++++---- .../structured/ElasticCommonSchemaProperties.java | 10 +++++++--- .../GraylogExtendedLogFormatProperties.java | 10 +++++++--- .../structured/StructuredLoggingJsonProperties.java | 10 +++++++--- 7 files changed, 46 insertions(+), 31 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/freemarker/FreeMarkerTemplateAvailabilityProvider.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/freemarker/FreeMarkerTemplateAvailabilityProvider.java index 4209bca7c9a..10f9fed1ceb 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/freemarker/FreeMarkerTemplateAvailabilityProvider.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/freemarker/FreeMarkerTemplateAvailabilityProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.List; import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.boot.autoconfigure.template.PathBasedTemplateAvailabilityProvider; import org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; @@ -65,16 +66,13 @@ public class FreeMarkerTemplateAvailabilityProvider extends PathBasedTemplateAva } - static class FreeMarkerTemplateAvailabilityRuntimeHints extends BindableRuntimeHintsRegistrar { - - FreeMarkerTemplateAvailabilityRuntimeHints() { - super(FreeMarkerTemplateAvailabilityProperties.class); - } + static class FreeMarkerTemplateAvailabilityRuntimeHints implements RuntimeHintsRegistrar { @Override public void registerHints(RuntimeHints hints, ClassLoader classLoader) { if (ClassUtils.isPresent(REQUIRED_CLASS_NAME, classLoader)) { - super.registerHints(hints, classLoader); + BindableRuntimeHintsRegistrar.forTypes(FreeMarkerTemplateAvailabilityProperties.class) + .registerHints(hints, classLoader); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProvider.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProvider.java index ae67f961a15..37beb02a51c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProvider.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/groovy/template/GroovyTemplateAvailabilityProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.List; import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.boot.autoconfigure.template.PathBasedTemplateAvailabilityProvider; import org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; @@ -65,16 +66,13 @@ public class GroovyTemplateAvailabilityProvider extends PathBasedTemplateAvailab } - static class GroovyTemplateAvailabilityRuntimeHints extends BindableRuntimeHintsRegistrar { - - GroovyTemplateAvailabilityRuntimeHints() { - super(GroovyTemplateAvailabilityProperties.class); - } + static class GroovyTemplateAvailabilityRuntimeHints implements RuntimeHintsRegistrar { @Override public void registerHints(RuntimeHints hints, ClassLoader classLoader) { if (ClassUtils.isPresent(REQUIRED_CLASS_NAME, classLoader)) { - super.registerHints(hints, classLoader); + BindableRuntimeHintsRegistrar.forTypes(GroovyTemplateAvailabilityProperties.class) + .registerHints(hints, classLoader); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.java index 7b7e9134b5b..a028321acf2 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -16,6 +16,8 @@ package org.springframework.boot.autoconfigure.http; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -31,6 +33,7 @@ import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.Binder; +import org.springframework.boot.logging.structured.GraylogExtendedLogFormatProperties; import org.springframework.boot.web.servlet.server.Encoding; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; @@ -100,10 +103,11 @@ public class HttpMessageConvertersAutoConfiguration { } - static class HttpMessageConvertersAutoConfigurationRuntimeHints extends BindableRuntimeHintsRegistrar { + static class HttpMessageConvertersAutoConfigurationRuntimeHints implements RuntimeHintsRegistrar { - HttpMessageConvertersAutoConfigurationRuntimeHints() { - super(Encoding.class); + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + BindableRuntimeHintsRegistrar.forTypes(Encoding.class).registerHints(hints, classLoader); } } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ApplicationProperties.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ApplicationProperties.java index 34848c77696..f266772f063 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ApplicationProperties.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/ApplicationProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -19,6 +19,8 @@ package org.springframework.boot; import java.util.LinkedHashSet; import java.util.Set; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.boot.Banner.Mode; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; import org.springframework.boot.logging.LoggingSystemProperty; @@ -157,10 +159,11 @@ class ApplicationProperties { this.webApplicationType = webApplicationType; } - static class ApplicationPropertiesRuntimeHints extends BindableRuntimeHintsRegistrar { + static class ApplicationPropertiesRuntimeHints implements RuntimeHintsRegistrar { - ApplicationPropertiesRuntimeHints() { - super(ApplicationProperties.class); + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + BindableRuntimeHintsRegistrar.forTypes(ApplicationProperties.class).registerHints(hints, classLoader); } } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/ElasticCommonSchemaProperties.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/ElasticCommonSchemaProperties.java index f401e549076..c665c23f8f3 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/ElasticCommonSchemaProperties.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/ElasticCommonSchemaProperties.java @@ -16,6 +16,8 @@ package org.springframework.boot.logging.structured; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.json.JsonWriter; @@ -92,10 +94,12 @@ public record ElasticCommonSchemaProperties(Service service) { } - static class ElasticCommonSchemaPropertiesRuntimeHints extends BindableRuntimeHintsRegistrar { + static class ElasticCommonSchemaPropertiesRuntimeHints implements RuntimeHintsRegistrar { - ElasticCommonSchemaPropertiesRuntimeHints() { - super(ElasticCommonSchemaProperties.class); + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + BindableRuntimeHintsRegistrar.forTypes(ElasticCommonSchemaProperties.class) + .registerHints(hints, classLoader); } } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java index 1db65c80883..dfa2ca3dc18 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/GraylogExtendedLogFormatProperties.java @@ -16,6 +16,8 @@ package org.springframework.boot.logging.structured; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.json.JsonWriter; @@ -92,10 +94,12 @@ public record GraylogExtendedLogFormatProperties(String host, Service service) { } - static class GraylogExtendedLogFormatPropertiesRuntimeHints extends BindableRuntimeHintsRegistrar { + static class GraylogExtendedLogFormatPropertiesRuntimeHints implements RuntimeHintsRegistrar { - GraylogExtendedLogFormatPropertiesRuntimeHints() { - super(GraylogExtendedLogFormatProperties.class); + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + BindableRuntimeHintsRegistrar.forTypes(GraylogExtendedLogFormatProperties.class) + .registerHints(hints, classLoader); } } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/StructuredLoggingJsonProperties.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/StructuredLoggingJsonProperties.java index 82a4f55e409..281a4cebbc2 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/StructuredLoggingJsonProperties.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/structured/StructuredLoggingJsonProperties.java @@ -19,6 +19,8 @@ package org.springframework.boot.logging.structured; import java.util.Map; import java.util.Set; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.core.env.Environment; @@ -43,10 +45,12 @@ record StructuredLoggingJsonProperties(Set include, Set exclude, .orElse(null); } - static class StructuredLoggingJsonPropertiesRuntimeHints extends BindableRuntimeHintsRegistrar { + static class StructuredLoggingJsonPropertiesRuntimeHints implements RuntimeHintsRegistrar { - StructuredLoggingJsonPropertiesRuntimeHints() { - super(StructuredLoggingJsonProperties.class); + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + BindableRuntimeHintsRegistrar.forTypes(StructuredLoggingJsonProperties.class) + .registerHints(hints, classLoader); } }