From 1bc236785c94aa57e278edcbfb7b79755fee222c Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Wed, 23 Jun 2021 12:18:53 +0200 Subject: [PATCH] Polishing --- .../context/annotation/BeanMethod.java | 4 +- .../annotation/ConfigurationClass.java | 42 +++++++++---------- .../BeanMethodPolymorphismTests.java | 6 +-- .../core/type/StandardAnnotationMetadata.java | 6 +-- ...AbstractClassMetadataMemberClassTests.java | 38 ++++++++--------- ...AnnotationMetadataReadingVisitorTests.java | 4 +- 6 files changed, 48 insertions(+), 52 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java b/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java index 128a4a827f..ca7d034ca6 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/BeanMethod.java @@ -33,7 +33,7 @@ import org.springframework.core.type.MethodMetadata; */ final class BeanMethod extends ConfigurationMethod { - public BeanMethod(MethodMetadata metadata, ConfigurationClass configurationClass) { + BeanMethod(MethodMetadata metadata, ConfigurationClass configurationClass) { super(metadata, configurationClass); } @@ -55,7 +55,7 @@ final class BeanMethod extends ConfigurationMethod { private class NonOverridableMethodError extends Problem { - public NonOverridableMethodError() { + NonOverridableMethodError() { super(String.format("@Bean method '%s' must not be private or final; change the method's modifiers to continue", getMetadata().getMethodName()), getResourceLocation()); } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java index 0b02ead88a..b6155f6d7b 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -36,7 +36,7 @@ import org.springframework.util.ClassUtils; /** * Represents a user-defined {@link Configuration @Configuration} class. - * Includes a set of {@link Bean} methods, including all such methods + *

Includes a set of {@link Bean} methods, including all such methods * defined in the ancestry of the class, in a 'flattened-out' manner. * * @author Chris Beams @@ -74,7 +74,7 @@ final class ConfigurationClass { * @param beanName must not be {@code null} * @see ConfigurationClass#ConfigurationClass(Class, ConfigurationClass) */ - public ConfigurationClass(MetadataReader metadataReader, String beanName) { + ConfigurationClass(MetadataReader metadataReader, String beanName) { Assert.notNull(beanName, "Bean name must not be null"); this.metadata = metadataReader.getAnnotationMetadata(); this.resource = metadataReader.getResource(); @@ -89,7 +89,7 @@ final class ConfigurationClass { * @param importedBy the configuration class importing this one or {@code null} * @since 3.1.1 */ - public ConfigurationClass(MetadataReader metadataReader, @Nullable ConfigurationClass importedBy) { + ConfigurationClass(MetadataReader metadataReader, @Nullable ConfigurationClass importedBy) { this.metadata = metadataReader.getAnnotationMetadata(); this.resource = metadataReader.getResource(); this.importedBy.add(importedBy); @@ -101,7 +101,7 @@ final class ConfigurationClass { * @param beanName name of the {@code @Configuration} class bean * @see ConfigurationClass#ConfigurationClass(Class, ConfigurationClass) */ - public ConfigurationClass(Class clazz, String beanName) { + ConfigurationClass(Class clazz, String beanName) { Assert.notNull(beanName, "Bean name must not be null"); this.metadata = AnnotationMetadata.introspect(clazz); this.resource = new DescriptiveResource(clazz.getName()); @@ -116,7 +116,7 @@ final class ConfigurationClass { * @param importedBy the configuration class importing this one (or {@code null}) * @since 3.1.1 */ - public ConfigurationClass(Class clazz, @Nullable ConfigurationClass importedBy) { + ConfigurationClass(Class clazz, @Nullable ConfigurationClass importedBy) { this.metadata = AnnotationMetadata.introspect(clazz); this.resource = new DescriptiveResource(clazz.getName()); this.importedBy.add(importedBy); @@ -128,7 +128,7 @@ final class ConfigurationClass { * @param beanName name of the {@code @Configuration} class bean * @see ConfigurationClass#ConfigurationClass(Class, ConfigurationClass) */ - public ConfigurationClass(AnnotationMetadata metadata, String beanName) { + ConfigurationClass(AnnotationMetadata metadata, String beanName) { Assert.notNull(beanName, "Bean name must not be null"); this.metadata = metadata; this.resource = new DescriptiveResource(metadata.getClassName()); @@ -136,19 +136,19 @@ final class ConfigurationClass { } - public AnnotationMetadata getMetadata() { + AnnotationMetadata getMetadata() { return this.metadata; } - public Resource getResource() { + Resource getResource() { return this.resource; } - public String getSimpleName() { + String getSimpleName() { return ClassUtils.getShortName(getMetadata().getClassName()); } - public void setBeanName(String beanName) { + void setBeanName(String beanName) { this.beanName = beanName; } @@ -171,7 +171,7 @@ final class ConfigurationClass { * Merge the imported-by declarations from the given configuration class into this one. * @since 4.0.5 */ - public void mergeImportedBy(ConfigurationClass otherConfigClass) { + void mergeImportedBy(ConfigurationClass otherConfigClass) { this.importedBy.addAll(otherConfigClass.importedBy); } @@ -181,35 +181,35 @@ final class ConfigurationClass { * @since 4.0.5 * @see #isImported() */ - public Set getImportedBy() { + Set getImportedBy() { return this.importedBy; } - public void addBeanMethod(BeanMethod method) { + void addBeanMethod(BeanMethod method) { this.beanMethods.add(method); } - public Set getBeanMethods() { + Set getBeanMethods() { return this.beanMethods; } - public void addImportedResource(String importedResource, Class readerClass) { + void addImportedResource(String importedResource, Class readerClass) { this.importedResources.put(importedResource, readerClass); } - public void addImportBeanDefinitionRegistrar(ImportBeanDefinitionRegistrar registrar, AnnotationMetadata importingClassMetadata) { + void addImportBeanDefinitionRegistrar(ImportBeanDefinitionRegistrar registrar, AnnotationMetadata importingClassMetadata) { this.importBeanDefinitionRegistrars.put(registrar, importingClassMetadata); } - public Map getImportBeanDefinitionRegistrars() { + Map getImportBeanDefinitionRegistrars() { return this.importBeanDefinitionRegistrars; } - public Map> getImportedResources() { + Map> getImportedResources() { return this.importedResources; } - public void validate(ProblemReporter problemReporter) { + void validate(ProblemReporter problemReporter) { // A configuration class may not be final (CGLIB limitation) unless it declares proxyBeanMethods=false Map attributes = this.metadata.getAnnotationAttributes(Configuration.class.getName()); if (attributes != null && (Boolean) attributes.get("proxyBeanMethods")) { @@ -244,7 +244,7 @@ final class ConfigurationClass { */ private class FinalConfigurationProblem extends Problem { - public FinalConfigurationProblem() { + FinalConfigurationProblem() { super(String.format("@Configuration class '%s' may not be final. Remove the final modifier to continue.", getSimpleName()), new Location(getResource(), getMetadata())); } diff --git a/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java b/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java index 61e5868f6d..170a02cc96 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/BeanMethodPolymorphismTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -29,7 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** * Tests regarding overloading and overriding of bean methods. - * Related to SPR-6618. + *

Related to SPR-6618. * * @author Chris Beams * @author Phillip Webb @@ -41,7 +41,7 @@ public class BeanMethodPolymorphismTests { @Test public void beanMethodDetectedOnSuperClass() { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class); - ctx.getBean("testBean", TestBean.class); + assertThat(ctx.getBean("testBean", TestBean.class)).isNotNull(); } @Test diff --git a/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java b/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java index 2c5347f6a3..60f0a26ff4 100644 --- a/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java +++ b/spring-core/src/main/java/org/springframework/core/type/StandardAnnotationMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -165,12 +165,12 @@ public class StandardAnnotationMetadata extends StandardClassMetadata implements return annotatedMethods != null ? annotatedMethods : Collections.emptySet(); } - private boolean isAnnotatedMethod(Method method, String annotationName) { + + private static boolean isAnnotatedMethod(Method method, String annotationName) { return !method.isBridge() && method.getAnnotations().length > 0 && AnnotatedElementUtils.isAnnotated(method, annotationName); } - static AnnotationMetadata from(Class introspectedClass) { return new StandardAnnotationMetadata(introspectedClass, true); } diff --git a/spring-core/src/test/java/org/springframework/core/type/AbstractClassMetadataMemberClassTests.java b/spring-core/src/test/java/org/springframework/core/type/AbstractClassMetadataMemberClassTests.java index 7c520f9db9..7b2c69aa46 100644 --- a/spring-core/src/test/java/org/springframework/core/type/AbstractClassMetadataMemberClassTests.java +++ b/spring-core/src/test/java/org/springframework/core/type/AbstractClassMetadataMemberClassTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -20,7 +20,6 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; - /** * Abstract base class for testing implementations of * {@link ClassMetadata#getMemberClassNames()}. @@ -30,48 +29,45 @@ import static org.assertj.core.api.Assertions.assertThat; */ public abstract class AbstractClassMetadataMemberClassTests { - public abstract ClassMetadata getClassMetadataFor(Class clazz); + protected abstract ClassMetadata getClassMetadataFor(Class clazz); @Test void withNoMemberClasses() { ClassMetadata metadata = getClassMetadataFor(L0_a.class); String[] nestedClasses = metadata.getMemberClassNames(); - assertThat(nestedClasses).isEqualTo(new String[]{}); - } - - public static class L0_a { + assertThat(nestedClasses).isEmpty(); } - @Test void withPublicMemberClasses() { ClassMetadata metadata = getClassMetadataFor(L0_b.class); String[] nestedClasses = metadata.getMemberClassNames(); - assertThat(nestedClasses).isEqualTo(new String[]{L0_b.L1.class.getName()}); + assertThat(nestedClasses).containsOnly(L0_b.L1.class.getName()); } - public static class L0_b { - public static class L1 { } - } - - @Test void withNonPublicMemberClasses() { ClassMetadata metadata = getClassMetadataFor(L0_c.class); String[] nestedClasses = metadata.getMemberClassNames(); - assertThat(nestedClasses).isEqualTo(new String[]{L0_c.L1.class.getName()}); - } - - public static class L0_c { - private static class L1 { } + assertThat(nestedClasses).containsOnly(L0_c.L1.class.getName()); } - @Test void againstMemberClass() { ClassMetadata metadata = getClassMetadataFor(L0_b.L1.class); String[] nestedClasses = metadata.getMemberClassNames(); - assertThat(nestedClasses).isEqualTo(new String[]{}); + assertThat(nestedClasses).isEmpty(); + } + + public static class L0_a { + } + + public static class L0_b { + public static class L1 { } + } + + public static class L0_c { + private static class L1 { } } } diff --git a/spring-core/src/test/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitorTests.java b/spring-core/src/test/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitorTests.java index fc340761cd..54672cfd4e 100644 --- a/spring-core/src/test/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitorTests.java +++ b/spring-core/src/test/java/org/springframework/core/type/classreading/AnnotationMetadataReadingVisitorTests.java @@ -65,8 +65,8 @@ class AnnotationMetadataReadingVisitorTests extends AbstractAnnotationMetadataTe @Override @Test public void getAnnotationsReturnsDirectAnnotations() { - assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy( - super::getAnnotationsReturnsDirectAnnotations); + assertThatExceptionOfType(UnsupportedOperationException.class) + .isThrownBy(super::getAnnotationsReturnsDirectAnnotations); } }