From e0f60dc09d9515809963f066cdfdacebd66b0042 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sun, 29 Jan 2023 14:20:30 +0100 Subject: [PATCH] Apply "instanceof pattern matching" in spring-context and polishing See gh-29222 --- .../cache/interceptor/SimpleKey.java | 6 +-- .../cache/support/NoOpCacheManager.java | 1 - .../AnnotationBeanNameGenerator.java | 2 +- .../context/annotation/BeanMethod.java | 8 ++-- .../annotation/ConditionEvaluator.java | 12 +++--- .../annotation/ConfigurationClass.java | 6 +-- .../annotation/ConfigurationClassParser.java | 38 +++++++++---------- 7 files changed, 36 insertions(+), 37 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKey.java b/spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKey.java index 886fd097e9..5685ee3416 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKey.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKey.java @@ -61,9 +61,9 @@ public class SimpleKey implements Serializable { @Override - public boolean equals(@Nullable Object other) { - return (this == other || - (other instanceof SimpleKey simpleKey && Arrays.deepEquals(this.params, simpleKey.params))); + public boolean equals(@Nullable Object obj) { + return (this == obj || + (obj instanceof SimpleKey that && Arrays.deepEquals(this.params, that.params))); } @Override diff --git a/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java b/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java index 6aa07f052c..0e12963fac 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java +++ b/spring-context/src/main/java/org/springframework/cache/support/NoOpCacheManager.java @@ -60,7 +60,6 @@ public class NoOpCacheManager implements CacheManager { this.cacheNames.add(name); } } - return this.caches.get(name); } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java index 86ee28e1b9..51452b0f81 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java @@ -107,7 +107,7 @@ public class AnnotationBeanNameGenerator implements BeanNameGenerator { }); if (isStereotypeWithNameValue(type, metaTypes, attributes)) { Object value = attributes.get("value"); - if (value instanceof String strVal && StringUtils.hasLength(strVal)) { + if (value instanceof String strVal && !strVal.isEmpty()) { if (beanName != null && !strVal.equals(beanName)) { throw new IllegalStateException("Stereotype annotations suggest inconsistent " + "component names: '" + beanName + "' versus '" + strVal + "'"); 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 ff4887c5c5..8b1378c3fc 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 @@ -56,8 +56,8 @@ final class BeanMethod extends ConfigurationMethod { @Override public boolean equals(@Nullable Object obj) { - return ((this == obj) || ((obj instanceof BeanMethod beanMethod) && - this.metadata.equals((beanMethod).metadata))); + return (this == obj || + (obj instanceof BeanMethod that && this.metadata.equals(that.metadata))); } @Override @@ -73,8 +73,8 @@ final class BeanMethod extends ConfigurationMethod { private class NonOverridableMethodError extends Problem { NonOverridableMethodError() { - super(String.format("@Bean method '%s' must not be private or final; change the method's modifiers to continue", - getMetadata().getMethodName()), getResourceLocation()); + super("@Bean method '%s' must not be private or final; change the method's modifiers to continue." + .formatted(getMetadata().getMethodName()), getResourceLocation()); } } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java b/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java index 8091a1de98..4c81376869 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConditionEvaluator.java @@ -155,7 +155,7 @@ class ConditionEvaluator { } @Nullable - private ConfigurableListableBeanFactory deduceBeanFactory(@Nullable BeanDefinitionRegistry source) { + private static ConfigurableListableBeanFactory deduceBeanFactory(@Nullable BeanDefinitionRegistry source) { if (source instanceof ConfigurableListableBeanFactory configurableListableBeanFactory) { return configurableListableBeanFactory; } @@ -165,22 +165,22 @@ class ConditionEvaluator { return null; } - private Environment deduceEnvironment(@Nullable BeanDefinitionRegistry source) { + private static Environment deduceEnvironment(@Nullable BeanDefinitionRegistry source) { if (source instanceof EnvironmentCapable environmentCapable) { return environmentCapable.getEnvironment(); } return new StandardEnvironment(); } - private ResourceLoader deduceResourceLoader(@Nullable BeanDefinitionRegistry source) { - if (source instanceof ResourceLoader resourceLoaderSource) { - return resourceLoaderSource; + private static ResourceLoader deduceResourceLoader(@Nullable BeanDefinitionRegistry source) { + if (source instanceof ResourceLoader resourceLoader) { + return resourceLoader; } return new DefaultResourceLoader(); } @Nullable - private ClassLoader deduceClassLoader(@Nullable ResourceLoader resourceLoader, + private static ClassLoader deduceClassLoader(@Nullable ResourceLoader resourceLoader, @Nullable ConfigurableListableBeanFactory beanFactory) { if (resourceLoader != null) { 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 378118a067..653f3db75e 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 @@ -237,9 +237,9 @@ final class ConfigurationClass { } @Override - public boolean equals(@Nullable Object other) { - return (this == other || (other instanceof ConfigurationClass configurationClass && - getMetadata().getClassName().equals(configurationClass.getMetadata().getClassName()))); + public boolean equals(@Nullable Object obj) { + return (this == obj || (obj instanceof ConfigurationClass that && + getMetadata().getClassName().equals(that.getMetadata().getClassName()))); } @Override diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index 42f7cf9086..f44e6a9eb1 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -160,11 +160,11 @@ class ConfigurationClassParser { for (BeanDefinitionHolder holder : configCandidates) { BeanDefinition bd = holder.getBeanDefinition(); try { - if (bd instanceof AnnotatedBeanDefinition annotatedBeanDefinition) { - parse(annotatedBeanDefinition.getMetadata(), holder.getBeanName()); + if (bd instanceof AnnotatedBeanDefinition annotatedBeanDef) { + parse(annotatedBeanDef.getMetadata(), holder.getBeanName()); } - else if (bd instanceof AbstractBeanDefinition abstractBeanDefinition && abstractBeanDefinition.hasBeanClass()) { - parse(abstractBeanDefinition.getBeanClass(), holder.getBeanName()); + else if (bd instanceof AbstractBeanDefinition abstractBeanDef && abstractBeanDef.hasBeanClass()) { + parse(abstractBeanDef.getBeanClass(), holder.getBeanName()); } else { parse(bd.getBeanClassName(), holder.getBeanName()); @@ -839,8 +839,8 @@ class ConfigurationClassParser { public SourceClass(Object source) { this.source = source; - if (source instanceof Class) { - this.metadata = AnnotationMetadata.introspect((Class) source); + if (source instanceof Class sourceClass) { + this.metadata = AnnotationMetadata.introspect(sourceClass); } else { this.metadata = ((MetadataReader) source).getAnnotationMetadata(); @@ -858,23 +858,23 @@ class ConfigurationClassParser { } public Class loadClass() throws ClassNotFoundException { - if (this.source instanceof Class) { - return (Class) this.source; + if (this.source instanceof Class sourceClass) { + return sourceClass; } String className = ((MetadataReader) this.source).getClassMetadata().getClassName(); return ClassUtils.forName(className, resourceLoader.getClassLoader()); } public boolean isAssignable(Class clazz) throws IOException { - if (this.source instanceof Class) { - return clazz.isAssignableFrom((Class) this.source); + if (this.source instanceof Class sourceClass) { + return clazz.isAssignableFrom(sourceClass); } return new AssignableTypeFilter(clazz).match((MetadataReader) this.source, metadataReaderFactory); } public ConfigurationClass asConfigClass(ConfigurationClass importedBy) { - if (this.source instanceof Class) { - return new ConfigurationClass((Class) this.source, importedBy); + if (this.source instanceof Class sourceClass) { + return new ConfigurationClass(sourceClass, importedBy); } return new ConfigurationClass((MetadataReader) this.source, importedBy); } @@ -917,8 +917,8 @@ class ConfigurationClassParser { } public SourceClass getSuperClass() throws IOException { - if (this.source instanceof Class) { - return asSourceClass(((Class) this.source).getSuperclass(), DEFAULT_EXCLUSION_FILTER); + if (this.source instanceof Class sourceClass) { + return asSourceClass(sourceClass.getSuperclass(), DEFAULT_EXCLUSION_FILTER); } return asSourceClass( ((MetadataReader) this.source).getClassMetadata().getSuperClassName(), DEFAULT_EXCLUSION_FILTER); @@ -985,9 +985,9 @@ class ConfigurationClassParser { } private SourceClass getRelated(String className) throws IOException { - if (this.source instanceof Class) { + if (this.source instanceof Class sourceClass) { try { - Class clazz = ClassUtils.forName(className, ((Class) this.source).getClassLoader()); + Class clazz = ClassUtils.forName(className, sourceClass.getClassLoader()); return asSourceClass(clazz, DEFAULT_EXCLUSION_FILTER); } catch (ClassNotFoundException ex) { @@ -1002,9 +1002,9 @@ class ConfigurationClassParser { } @Override - public boolean equals(@Nullable Object other) { - return (this == other || (other instanceof SourceClass sourceClass && - this.metadata.getClassName().equals(sourceClass.metadata.getClassName()))); + public boolean equals(@Nullable Object obj) { + return (this == obj || (obj instanceof SourceClass that && + this.metadata.getClassName().equals(that.metadata.getClassName()))); } @Override