diff --git a/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java b/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java index 4a9c98f4dac..728e663546c 100644 --- a/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java +++ b/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java @@ -233,7 +233,7 @@ public class StartMojo extends AbstractRunMojo { } private boolean hasCauseWithType(Throwable t, Class type) { - return type.isAssignableFrom(t.getClass()) || t.getCause() != null && hasCauseWithType(t.getCause(), type); + return type.isInstance(t) || t.getCause() != null && hasCauseWithType(t.getCause(), type); } } diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 1f2778c9e92..84dda76682a 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -88,6 +88,18 @@ value="Please use static AssertJ imports." /> + + + + + + + + + + + + diff --git a/configuration-metadata/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java b/configuration-metadata/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java index 9eb0caba513..1b154d92bd6 100644 --- a/configuration-metadata/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java +++ b/configuration-metadata/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java @@ -55,14 +55,14 @@ class ExpressionTree extends ReflectionWrapper { } Object getLiteralValue() throws Exception { - if (this.literalTreeType.isAssignableFrom(getInstance().getClass())) { + if (this.literalTreeType.isInstance(getInstance())) { return this.literalValueMethod.invoke(getInstance()); } return null; } Object getFactoryValue() throws Exception { - if (this.methodInvocationTreeType.isAssignableFrom(getInstance().getClass())) { + if (this.methodInvocationTreeType.isInstance(getInstance())) { List arguments = (List) this.methodInvocationArgumentsMethod.invoke(getInstance()); if (arguments.size() == 1) { return new ExpressionTree(arguments.get(0)).getLiteralValue(); @@ -72,7 +72,7 @@ class ExpressionTree extends ReflectionWrapper { } Member getSelectedMember() throws Exception { - if (this.memberSelectTreeType.isAssignableFrom(getInstance().getClass())) { + if (this.memberSelectTreeType.isInstance(getInstance())) { String expression = this.memberSelectTreeExpressionMethod.invoke(getInstance()).toString(); String identifier = this.memberSelectTreeIdentifierMethod.invoke(getInstance()).toString(); if (expression != null && identifier != null) { @@ -83,7 +83,7 @@ class ExpressionTree extends ReflectionWrapper { } List getArrayExpression() throws Exception { - if (this.newArrayTreeType.isAssignableFrom(getInstance().getClass())) { + if (this.newArrayTreeType.isInstance(getInstance())) { List elements = (List) this.arrayValueMethod.invoke(getInstance()); List result = new ArrayList<>(); if (elements == null) { diff --git a/core/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java b/core/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java index 6e357c13edc..8107c1059ed 100644 --- a/core/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java +++ b/core/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java @@ -64,7 +64,7 @@ public abstract class AbstractInjectionFailureAnalyzer exte Throwable candidate = root; C result = null; while (candidate != null) { - if (type.isAssignableFrom(candidate.getClass())) { + if (type.isInstance(candidate)) { result = (C) candidate; } candidate = candidate.getCause(); diff --git a/core/spring-boot/src/main/java/org/springframework/boot/json/AbstractJsonParser.java b/core/spring-boot/src/main/java/org/springframework/boot/json/AbstractJsonParser.java index 78e9a0000b8..56591ea5ee3 100644 --- a/core/spring-boot/src/main/java/org/springframework/boot/json/AbstractJsonParser.java +++ b/core/spring-boot/src/main/java/org/springframework/boot/json/AbstractJsonParser.java @@ -55,7 +55,7 @@ public abstract class AbstractJsonParser implements JsonParser { return parser.call(); } catch (Exception ex) { - if (check.isAssignableFrom(ex.getClass())) { + if (check.isInstance(ex)) { throw new JsonParseException(ex); } ReflectionUtils.rethrowRuntimeException(ex); diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java index 7de31c52698..51a390501a8 100644 --- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java +++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java @@ -337,7 +337,7 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext if (value == null || ClassUtils.isPrimitiveOrWrapper(value.getClass()) || value instanceof String) { return value; } - if (CharSequence.class.isAssignableFrom(value.getClass())) { + if (value instanceof CharSequence) { return value.toString(); } return "Complex property value " + value.getClass().getName(); diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/env/EnvironmentEndpoint.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/env/EnvironmentEndpoint.java index 4b979f5c573..807ceb0761b 100644 --- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/env/EnvironmentEndpoint.java +++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/env/EnvironmentEndpoint.java @@ -208,11 +208,10 @@ public class EnvironmentEndpoint { } protected @Nullable Object stringifyIfNecessary(@Nullable Object value) { - if (value == null || ClassUtils.isPrimitiveOrWrapper(value.getClass()) - || Number.class.isAssignableFrom(value.getClass())) { + if (value == null || ClassUtils.isPrimitiveOrWrapper(value.getClass()) || value instanceof Number) { return value; } - if (CharSequence.class.isAssignableFrom(value.getClass())) { + if (value instanceof CharSequence) { return value.toString(); } return "Complex property type " + value.getClass().getName(); diff --git a/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java b/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java index 6c221bcbd68..1bdcd559c2c 100644 --- a/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java +++ b/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java @@ -169,7 +169,7 @@ class CodecsAutoConfigurationTests { .filter((writer) -> writer instanceof EncoderHttpMessageWriter) .map((writer) -> (EncoderHttpMessageWriter) writer) .map(EncoderHttpMessageWriter::getEncoder) - .filter((encoder) -> encoderClass.isAssignableFrom(encoder.getClass())) + .filter(encoderClass::isInstance) .findFirst() .orElseThrow(); } diff --git a/module/spring-boot-http-converter/src/test/java/org/springframework/boot/http/converter/autoconfigure/HttpMessageConvertersAutoConfigurationTests.java b/module/spring-boot-http-converter/src/test/java/org/springframework/boot/http/converter/autoconfigure/HttpMessageConvertersAutoConfigurationTests.java index 4e7177dc03a..ec35b5e71df 100644 --- a/module/spring-boot-http-converter/src/test/java/org/springframework/boot/http/converter/autoconfigure/HttpMessageConvertersAutoConfigurationTests.java +++ b/module/spring-boot-http-converter/src/test/java/org/springframework/boot/http/converter/autoconfigure/HttpMessageConvertersAutoConfigurationTests.java @@ -465,18 +465,14 @@ class HttpMessageConvertersAutoConfigurationTests { private void assertConverterIsRegistered(AssertableApplicationContext context, Class> converterType) { - assertThat(getClientConverters(context)).filteredOn((c) -> converterType.isAssignableFrom(c.getClass())) - .hasSize(1); - assertThat(getServerConverters(context)).filteredOn((c) -> converterType.isAssignableFrom(c.getClass())) - .hasSize(1); + assertThat(getClientConverters(context)).filteredOn(converterType::isInstance).hasSize(1); + assertThat(getServerConverters(context)).filteredOn(converterType::isInstance).hasSize(1); } private void assertConverterIsNotRegistered(AssertableApplicationContext context, Class> converterType) { - assertThat(getClientConverters(context)).filteredOn((c) -> converterType.isAssignableFrom(c.getClass())) - .isEmpty(); - assertThat(getServerConverters(context)).filteredOn((c) -> converterType.isAssignableFrom(c.getClass())) - .isEmpty(); + assertThat(getClientConverters(context)).filteredOn(converterType::isInstance).isEmpty(); + assertThat(getServerConverters(context)).filteredOn(converterType::isInstance).isEmpty(); } private void assertBeanExists(AssertableApplicationContext context, Class type, String beanName) { @@ -504,7 +500,7 @@ class HttpMessageConvertersAutoConfigurationTests { private > T findConverter(HttpMessageConverters converters, Class> type) { for (HttpMessageConverter converter : converters) { - if (type.isAssignableFrom(converter.getClass())) { + if (type.isInstance(converter)) { return (T) converter; } } @@ -589,8 +585,7 @@ class HttpMessageConvertersAutoConfigurationTests { @Bean JacksonJsonHttpMessageConverter customJacksonMessageConverter(JsonMapper jsonMapperMapper) { - JacksonJsonHttpMessageConverter converter = new JacksonJsonHttpMessageConverter(jsonMapperMapper); - return converter; + return new JacksonJsonHttpMessageConverter(jsonMapperMapper); } } diff --git a/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/autoconfigure/JdbcConnectionDetailsBeanPostProcessor.java b/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/autoconfigure/JdbcConnectionDetailsBeanPostProcessor.java index 23d1f737824..cb7989d775c 100644 --- a/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/autoconfigure/JdbcConnectionDetailsBeanPostProcessor.java +++ b/module/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/autoconfigure/JdbcConnectionDetailsBeanPostProcessor.java @@ -49,7 +49,7 @@ abstract class JdbcConnectionDetailsBeanPostProcessor implements BeanPostProc @Override @SuppressWarnings("unchecked") public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - if (this.dataSourceClass.isAssignableFrom(bean.getClass()) && "dataSource".equals(beanName)) { + if (this.dataSourceClass.isInstance(bean) && "dataSource".equals(beanName)) { JdbcConnectionDetails connectionDetails = this.connectionDetailsProvider.getObject(); if (!(connectionDetails instanceof PropertiesJdbcConnectionDetails)) { return processDataSource((T) bean, connectionDetails); diff --git a/module/spring-boot-micrometer-tracing/src/main/java/org/springframework/boot/micrometer/tracing/autoconfigure/TracingAndMeterObservationHandlerGroup.java b/module/spring-boot-micrometer-tracing/src/main/java/org/springframework/boot/micrometer/tracing/autoconfigure/TracingAndMeterObservationHandlerGroup.java index 35872707f62..0c0e11e76ed 100644 --- a/module/spring-boot-micrometer-tracing/src/main/java/org/springframework/boot/micrometer/tracing/autoconfigure/TracingAndMeterObservationHandlerGroup.java +++ b/module/spring-boot-micrometer-tracing/src/main/java/org/springframework/boot/micrometer/tracing/autoconfigure/TracingAndMeterObservationHandlerGroup.java @@ -47,7 +47,7 @@ class TracingAndMeterObservationHandlerGroup implements ObservationHandlerGroup @Override public boolean isMember(ObservationHandler handler) { - return MeterObservationHandler.class.isInstance(handler) || TracingObservationHandler.class.isInstance(handler); + return handler instanceof MeterObservationHandler || handler instanceof TracingObservationHandler; } @Override diff --git a/module/spring-boot-tomcat/src/main/java/org/springframework/boot/tomcat/autoconfigure/TomcatWebServerFactoryCustomizer.java b/module/spring-boot-tomcat/src/main/java/org/springframework/boot/tomcat/autoconfigure/TomcatWebServerFactoryCustomizer.java index e14b4b57c38..199b48f1e4d 100644 --- a/module/spring-boot-tomcat/src/main/java/org/springframework/boot/tomcat/autoconfigure/TomcatWebServerFactoryCustomizer.java +++ b/module/spring-boot-tomcat/src/main/java/org/springframework/boot/tomcat/autoconfigure/TomcatWebServerFactoryCustomizer.java @@ -320,7 +320,7 @@ public class TomcatWebServerFactoryCustomizer Class type, ObjIntConsumer consumer) { factory.addConnectorCustomizers((connector) -> { ProtocolHandler handler = connector.getProtocolHandler(); - if (type.isAssignableFrom(handler.getClass())) { + if (type.isInstance(handler)) { consumer.accept(type.cast(handler), value); } });