From 8e2eeb53640de3cbb81c54bfb8bbad8b0f9bffcd Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Fri, 27 Jan 2023 17:53:53 +0100 Subject: [PATCH] Apply "instanceof pattern matching" in spring-beans --- .../beans/ExtendedBeanInfo.java | 18 ++++----- .../beans/MutablePropertyValues.java | 6 +-- .../springframework/beans/PropertyValue.java | 4 +- .../beans/TypeConverterDelegate.java | 39 ++++++++----------- .../beans/factory/BeanCreationException.java | 3 +- .../AutowiredAnnotationBeanPostProcessor.java | 4 +- .../factory/annotation/InjectionMetadata.java | 8 ++-- ...erAnnotationAutowireCandidateResolver.java | 2 +- .../factory/aot/BeanInstanceSupplier.java | 4 +- .../factory/config/AbstractFactoryBean.java | 4 +- .../factory/config/BeanDefinitionVisitor.java | 28 ++++++------- .../factory/config/CustomScopeConfigurer.java | 8 ++-- .../factory/config/MethodInvokingBean.java | 12 +++--- .../config/PropertyPathFactoryBean.java | 4 +- .../config/ServiceLocatorFactoryBean.java | 4 +- .../factory/config/YamlMapFactoryBean.java | 7 ++-- .../beans/factory/config/YamlProcessor.java | 14 +++---- .../groovy/GroovyBeanDefinitionReader.java | 4 +- .../groovy/GroovyBeanDefinitionWrapper.java | 16 ++++---- .../parsing/BeanComponentDefinition.java | 12 +++--- .../AbstractAutowireCapableBeanFactory.java | 4 +- .../support/AbstractBeanDefinitionReader.java | 12 +++--- .../factory/support/AbstractBeanFactory.java | 4 +- .../beans/factory/support/AutowireUtils.java | 8 ++-- .../support/BeanDefinitionResource.java | 6 +-- ...CglibSubclassingInstantiationStrategy.java | 4 +- .../factory/support/ConstructorResolver.java | 8 ++-- .../support/FactoryBeanRegistrySupport.java | 4 +- ...ricTypeAwareAutowireCandidateResolver.java | 8 ++-- .../factory/support/ManagedProperties.java | 4 +- .../factory/support/RootBeanDefinition.java | 8 ++-- .../factory/wiring/BeanConfigurerSupport.java | 7 ++-- .../xml/BeanDefinitionParserDelegate.java | 12 +++--- .../xml/DefaultNamespaceHandlerResolver.java | 4 +- .../xml/XmlBeanDefinitionStoreException.java | 4 +- .../propertyeditors/CustomNumberEditor.java | 4 +- .../propertyeditors/PropertiesEditor.java | 4 +- .../ArgumentConvertingMethodInvoker.java | 4 +- .../beans/support/PropertyComparator.java | 6 +-- .../support/ResourceEditorRegistrar.java | 10 ++--- 40 files changed, 157 insertions(+), 169 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfo.java b/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfo.java index d0ef5af79fe..abdcf1605b4 100644 --- a/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfo.java +++ b/spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfo.java @@ -100,8 +100,8 @@ class ExtendedBeanInfo implements BeanInfo { this.delegate = delegate; for (PropertyDescriptor pd : delegate.getPropertyDescriptors()) { try { - this.propertyDescriptors.add(pd instanceof IndexedPropertyDescriptor ? - new SimpleIndexedPropertyDescriptor((IndexedPropertyDescriptor) pd) : + this.propertyDescriptors.add(pd instanceof IndexedPropertyDescriptor indexedPd ? + new SimpleIndexedPropertyDescriptor(indexedPd) : new SimplePropertyDescriptor(pd)); } catch (IntrospectionException ex) { @@ -170,8 +170,8 @@ class ExtendedBeanInfo implements BeanInfo { this.propertyDescriptors.add( new SimpleIndexedPropertyDescriptor(propertyName, null, null, null, method)); } - else if (existingPd instanceof IndexedPropertyDescriptor) { - ((IndexedPropertyDescriptor) existingPd).setIndexedWriteMethod(method); + else if (existingPd instanceof IndexedPropertyDescriptor indexedPd) { + indexedPd.setIndexedWriteMethod(method); } else { this.propertyDescriptors.remove(existingPd); @@ -189,8 +189,8 @@ class ExtendedBeanInfo implements BeanInfo { for (PropertyDescriptor pd : this.propertyDescriptors) { final Class candidateType; final String candidateName = pd.getName(); - if (pd instanceof IndexedPropertyDescriptor ipd) { - candidateType = ipd.getIndexedPropertyType(); + if (pd instanceof IndexedPropertyDescriptor indexedPd) { + candidateType = indexedPd.getIndexedPropertyType(); if (candidateName.equals(propertyName) && (candidateType.equals(propertyType) || candidateType.equals(propertyType.getComponentType()))) { return pd; @@ -338,9 +338,9 @@ class ExtendedBeanInfo implements BeanInfo { } @Override - public boolean equals(@Nullable Object other) { - return (this == other || (other instanceof PropertyDescriptor && - PropertyDescriptorUtils.equals(this, (PropertyDescriptor) other))); + public boolean equals(@Nullable Object obj) { + return (this == obj || (obj instanceof PropertyDescriptor that && + PropertyDescriptorUtils.equals(this, that))); } @Override diff --git a/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java b/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java index 25ed0bc7da2..a4490cbb90e 100644 --- a/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java +++ b/spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java @@ -366,9 +366,9 @@ public class MutablePropertyValues implements PropertyValues, Serializable { @Override - public boolean equals(@Nullable Object other) { - return (this == other || (other instanceof MutablePropertyValues && - this.propertyValueList.equals(((MutablePropertyValues) other).propertyValueList))); + public boolean equals(@Nullable Object obj) { + return (this == obj || (obj instanceof MutablePropertyValues that && + this.propertyValueList.equals(that.propertyValueList))); } @Override diff --git a/spring-beans/src/main/java/org/springframework/beans/PropertyValue.java b/spring-beans/src/main/java/org/springframework/beans/PropertyValue.java index 93b97042b01..fecd0db6099 100644 --- a/spring-beans/src/main/java/org/springframework/beans/PropertyValue.java +++ b/spring-beans/src/main/java/org/springframework/beans/PropertyValue.java @@ -135,8 +135,8 @@ public class PropertyValue extends BeanMetadataAttributeAccessor implements Seri public PropertyValue getOriginalPropertyValue() { PropertyValue original = this; Object source = getSource(); - while (source instanceof PropertyValue && source != original) { - original = (PropertyValue) source; + while (source instanceof PropertyValue pv && source != original) { + original = pv; source = original.getSource(); } return original; diff --git a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 2c419b1c109..1f8fb61cd8b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2023 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. @@ -140,12 +140,12 @@ class TypeConverterDelegate { // Value not of required type? if (editor != null || (requiredType != null && !ClassUtils.isAssignableValue(requiredType, convertedValue))) { if (typeDescriptor != null && requiredType != null && Collection.class.isAssignableFrom(requiredType) && - convertedValue instanceof String) { + convertedValue instanceof String text) { TypeDescriptor elementTypeDesc = typeDescriptor.getElementTypeDescriptor(); if (elementTypeDesc != null) { Class elementType = elementTypeDesc.getType(); if (Class.class == elementType || Enum.class.isAssignableFrom(elementType)) { - convertedValue = StringUtils.commaDelimitedListToStringArray((String) convertedValue); + convertedValue = StringUtils.commaDelimitedListToStringArray(text); } } } @@ -166,21 +166,19 @@ class TypeConverterDelegate { } else if (requiredType.isArray()) { // Array required -> apply appropriate conversion of elements. - if (convertedValue instanceof String && Enum.class.isAssignableFrom(requiredType.getComponentType())) { - convertedValue = StringUtils.commaDelimitedListToStringArray((String) convertedValue); + if (convertedValue instanceof String text && Enum.class.isAssignableFrom(requiredType.getComponentType())) { + convertedValue = StringUtils.commaDelimitedListToStringArray(text); } return (T) convertToTypedArray(convertedValue, propertyName, requiredType.getComponentType()); } - else if (convertedValue instanceof Collection) { + else if (convertedValue instanceof Collection coll) { // Convert elements to target type, if determined. - convertedValue = convertToTypedCollection( - (Collection) convertedValue, propertyName, requiredType, typeDescriptor); + convertedValue = convertToTypedCollection(coll, propertyName, requiredType, typeDescriptor); standardConversion = true; } - else if (convertedValue instanceof Map) { + else if (convertedValue instanceof Map map) { // Convert keys and values to respective target type, if determined. - convertedValue = convertToTypedMap( - (Map) convertedValue, propertyName, requiredType, typeDescriptor); + convertedValue = convertToTypedMap(map, propertyName, requiredType, typeDescriptor); standardConversion = true; } if (convertedValue.getClass().isArray() && Array.getLength(convertedValue) == 1) { @@ -191,7 +189,7 @@ class TypeConverterDelegate { // We can stringify any primitive value... return (T) convertedValue.toString(); } - else if (convertedValue instanceof String && !requiredType.isInstance(convertedValue)) { + else if (convertedValue instanceof String text && !requiredType.isInstance(convertedValue)) { if (conversionAttemptEx == null && !requiredType.isInterface() && !requiredType.isEnum()) { try { Constructor strCtor = requiredType.getConstructor(String.class); @@ -209,7 +207,7 @@ class TypeConverterDelegate { } } } - String trimmedValue = ((String) convertedValue).trim(); + String trimmedValue = text.trim(); if (requiredType.isEnum() && trimmedValue.isEmpty()) { // It's an empty enum identifier: reset the enum value to null. return null; @@ -217,9 +215,8 @@ class TypeConverterDelegate { convertedValue = attemptToConvertStringToEnum(requiredType, trimmedValue, convertedValue); standardConversion = true; } - else if (convertedValue instanceof Number && Number.class.isAssignableFrom(requiredType)) { - convertedValue = NumberUtils.convertNumberToTargetClass( - (Number) convertedValue, (Class) requiredType); + else if (convertedValue instanceof Number num && Number.class.isAssignableFrom(requiredType)) { + convertedValue = NumberUtils.convertNumberToTargetClass(num, (Class) requiredType); standardConversion = true; } } @@ -382,23 +379,22 @@ class TypeConverterDelegate { Object returnValue = convertedValue; - if (requiredType != null && !requiredType.isArray() && convertedValue instanceof String[]) { + if (requiredType != null && !requiredType.isArray() && convertedValue instanceof String[] array) { // Convert String array to a comma-separated String. // Only applies if no PropertyEditor converted the String array before. // The CSV String will be passed into a PropertyEditor's setAsText method, if any. if (logger.isTraceEnabled()) { logger.trace("Converting String array to comma-delimited String [" + convertedValue + "]"); } - convertedValue = StringUtils.arrayToCommaDelimitedString((String[]) convertedValue); + convertedValue = StringUtils.arrayToCommaDelimitedString(array); } - if (convertedValue instanceof String) { + if (convertedValue instanceof String newTextValue) { if (editor != null) { // Use PropertyEditor's setAsText in case of a String value. if (logger.isTraceEnabled()) { logger.trace("Converting String to [" + requiredType + "] using property editor [" + editor + "]"); } - String newTextValue = (String) convertedValue; return doConvertTextValue(oldValue, newTextValue, editor); } else if (String.class == requiredType) { @@ -431,9 +427,8 @@ class TypeConverterDelegate { } private Object convertToTypedArray(Object input, @Nullable String propertyName, Class componentType) { - if (input instanceof Collection) { + if (input instanceof Collection coll) { // Convert Collection elements to array elements. - Collection coll = (Collection) input; Object result = Array.newInstance(componentType, coll.size()); int i = 0; for (Iterator it = coll.iterator(); it.hasNext(); i++) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/BeanCreationException.java b/spring-beans/src/main/java/org/springframework/beans/factory/BeanCreationException.java index 7e7d62d21c8..1660738a8c5 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/BeanCreationException.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/BeanCreationException.java @@ -204,8 +204,7 @@ public class BeanCreationException extends FatalBeanException { } if (this.relatedCauses != null) { for (Throwable relatedCause : this.relatedCauses) { - if (relatedCause instanceof NestedRuntimeException && - ((NestedRuntimeException) relatedCause).contains(exClass)) { + if (relatedCause instanceof NestedRuntimeException nested && nested.contains(exClass)) { return true; } } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index f59e60ea30c..b302fd1c4f0 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -266,11 +266,11 @@ public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationA @Override public void setBeanFactory(BeanFactory beanFactory) { - if (!(beanFactory instanceof ConfigurableListableBeanFactory)) { + if (!(beanFactory instanceof ConfigurableListableBeanFactory clbf)) { throw new IllegalArgumentException( "AutowiredAnnotationBeanPostProcessor requires a ConfigurableListableBeanFactory: " + beanFactory); } - this.beanFactory = (ConfigurableListableBeanFactory) beanFactory; + this.beanFactory = clbf; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InjectionMetadata.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InjectionMetadata.java index c3e7dd8ecdc..dbb2fc8ad03 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InjectionMetadata.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InjectionMetadata.java @@ -281,8 +281,8 @@ public class InjectionMetadata { this.skip = true; return true; } - else if (pvs instanceof MutablePropertyValues) { - ((MutablePropertyValues) pvs).registerProcessedProperty(this.pd.getName()); + else if (pvs instanceof MutablePropertyValues mpvs) { + mpvs.registerProcessedProperty(this.pd.getName()); } } this.skip = false; @@ -299,8 +299,8 @@ public class InjectionMetadata { return; } synchronized (pvs) { - if (Boolean.FALSE.equals(this.skip) && this.pd != null && pvs instanceof MutablePropertyValues) { - ((MutablePropertyValues) pvs).clearProcessedProperty(this.pd.getName()); + if (Boolean.FALSE.equals(this.skip) && this.pd != null && pvs instanceof MutablePropertyValues mpvs) { + mpvs.clearProcessedProperty(this.pd.getName()); } } } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java index c2f34a45889..cdf80d8f158 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java @@ -279,7 +279,7 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa actualValue = bd.getAttribute(attributeName); } if (actualValue == null && attributeName.equals(AutowireCandidateQualifier.VALUE_KEY) && - expectedValue instanceof String && bdHolder.matchesName((String) expectedValue)) { + expectedValue instanceof String name && bdHolder.matchesName(name)) { // Fall back on bean name (or alias) match continue; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java index ae9441e0bcd..bdda6f724e2 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java @@ -212,11 +212,11 @@ public final class BeanInstanceSupplier extends AutowiredElementResolver impl } private T invokeBeanSupplier(Executable executable, ThrowingSupplier beanSupplier) { - if (!(executable instanceof Method)) { + if (!(executable instanceof Method method)) { return beanSupplier.get(); } try { - SimpleInstantiationStrategy.setCurrentlyInvokedFactoryMethod((Method) executable); + SimpleInstantiationStrategy.setCurrentlyInvokedFactoryMethod(method); return beanSupplier.get(); } finally { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java index b72baf50158..aa5dc407b7f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java @@ -124,8 +124,8 @@ public abstract class AbstractFactoryBean */ protected TypeConverter getBeanTypeConverter() { BeanFactory beanFactory = getBeanFactory(); - if (beanFactory instanceof ConfigurableBeanFactory) { - return ((ConfigurableBeanFactory) beanFactory).getTypeConverter(); + if (beanFactory instanceof ConfigurableBeanFactory cbf) { + return cbf.getTypeConverter(); } else { return new SimpleTypeConverter(); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionVisitor.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionVisitor.java index d3d83c71ca9..528cd95500b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionVisitor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionVisitor.java @@ -172,11 +172,11 @@ public class BeanDefinitionVisitor { @SuppressWarnings("rawtypes") @Nullable protected Object resolveValue(@Nullable Object value) { - if (value instanceof BeanDefinition) { - visitBeanDefinition((BeanDefinition) value); + if (value instanceof BeanDefinition beanDef) { + visitBeanDefinition(beanDef); } - else if (value instanceof BeanDefinitionHolder) { - visitBeanDefinition(((BeanDefinitionHolder) value).getBeanDefinition()); + else if (value instanceof BeanDefinitionHolder beanDefHolder) { + visitBeanDefinition(beanDefHolder.getBeanDefinition()); } else if (value instanceof RuntimeBeanReference ref) { String newBeanName = resolveStringValue(ref.getBeanName()); @@ -196,17 +196,17 @@ public class BeanDefinitionVisitor { return new RuntimeBeanNameReference(newBeanName); } } - else if (value instanceof Object[]) { - visitArray((Object[]) value); + else if (value instanceof Object[] array) { + visitArray(array); } - else if (value instanceof List) { - visitList((List) value); + else if (value instanceof List list) { + visitList(list); } - else if (value instanceof Set) { - visitSet((Set) value); + else if (value instanceof Set set) { + visitSet(set); } - else if (value instanceof Map) { - visitMap((Map) value); + else if (value instanceof Map map) { + visitMap(map); } else if (value instanceof TypedStringValue typedStringValue) { String stringValue = typedStringValue.getValue(); @@ -215,8 +215,8 @@ public class BeanDefinitionVisitor { typedStringValue.setValue(visitedString); } } - else if (value instanceof String) { - return resolveStringValue((String) value); + else if (value instanceof String strValue) { + return resolveStringValue(strValue); } return value; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java index 92702225d42..7b9c6d167a8 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java @@ -98,15 +98,15 @@ public class CustomScopeConfigurer implements BeanFactoryPostProcessor, BeanClas public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { if (this.scopes != null) { this.scopes.forEach((scopeKey, value) -> { - if (value instanceof Scope) { - beanFactory.registerScope(scopeKey, (Scope) value); + if (value instanceof Scope scope) { + beanFactory.registerScope(scopeKey, scope); } else if (value instanceof Class scopeClass) { Assert.isAssignable(Scope.class, scopeClass, "Invalid scope class"); beanFactory.registerScope(scopeKey, (Scope) BeanUtils.instantiateClass(scopeClass)); } - else if (value instanceof String) { - Class scopeClass = ClassUtils.resolveClassName((String) value, this.beanClassLoader); + else if (value instanceof String scopeClassName) { + Class scopeClass = ClassUtils.resolveClassName(scopeClassName, this.beanClassLoader); Assert.isAssignable(Scope.class, scopeClass, "Invalid scope class"); beanFactory.registerScope(scopeKey, (Scope) BeanUtils.instantiateClass(scopeClass)); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingBean.java index 57fa7ab222c..f2ba63a91e3 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/MethodInvokingBean.java @@ -86,8 +86,8 @@ public class MethodInvokingBean extends ArgumentConvertingMethodInvoker @Override public void setBeanFactory(BeanFactory beanFactory) { - if (beanFactory instanceof ConfigurableBeanFactory) { - this.beanFactory = (ConfigurableBeanFactory) beanFactory; + if (beanFactory instanceof ConfigurableBeanFactory cbf) { + this.beanFactory = cbf; } } @@ -123,11 +123,11 @@ public class MethodInvokingBean extends ArgumentConvertingMethodInvoker return invoke(); } catch (InvocationTargetException ex) { - if (ex.getTargetException() instanceof Exception) { - throw (Exception) ex.getTargetException(); + if (ex.getTargetException() instanceof Exception exception) { + throw exception; } - if (ex.getTargetException() instanceof Error) { - throw (Error) ex.getTargetException(); + if (ex.getTargetException() instanceof Error error) { + throw error; } throw ex; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java index 97e9b4f906f..77311c1ad7a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/PropertyPathFactoryBean.java @@ -206,8 +206,8 @@ public class PropertyPathFactoryBean implements FactoryBean, BeanNameAwa BeanWrapper target = this.targetBeanWrapper; if (target != null) { if (logger.isWarnEnabled() && this.targetBeanName != null && - this.beanFactory instanceof ConfigurableBeanFactory && - ((ConfigurableBeanFactory) this.beanFactory).isCurrentlyInCreation(this.targetBeanName)) { + this.beanFactory instanceof ConfigurableBeanFactory cbf && + cbf.isCurrentlyInCreation(this.targetBeanName)) { logger.warn("Target bean '" + this.targetBeanName + "' is still in creation due to a circular " + "reference - obtained value for property '" + this.propertyPath + "' may be outdated!"); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java index 272e97f5b74..5e48f215f16 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/ServiceLocatorFactoryBean.java @@ -250,11 +250,11 @@ public class ServiceLocatorFactoryBean implements FactoryBean, BeanFacto @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { - if (!(beanFactory instanceof ListableBeanFactory)) { + if (!(beanFactory instanceof ListableBeanFactory lbf)) { throw new FatalBeanException( "ServiceLocatorFactoryBean needs to run in a BeanFactory that is a ListableBeanFactory"); } - this.beanFactory = (ListableBeanFactory) beanFactory; + this.beanFactory = lbf; } @Override diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java index bc77a9f7c13..e69a93191e3 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlMapFactoryBean.java @@ -129,10 +129,9 @@ public class YamlMapFactoryBean extends YamlProcessor implements FactoryBean output, Map map) { map.forEach((key, value) -> { Object existing = output.get(key); - if (value instanceof Map && existing instanceof Map) { - // Inner cast required by Eclipse IDE. - Map result = new LinkedHashMap<>((Map) existing); - merge(result, (Map) value); + if (value instanceof Map valueMap && existing instanceof Map existingMap) { + Map result = new LinkedHashMap<>(existingMap); + merge(result, valueMap); output.put(key, result); } else { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java index 01a3ddcde57..54f52da422a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java @@ -226,17 +226,16 @@ public abstract class YamlProcessor { } } - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) private Map asMap(Object object) { // YAML can have numbers as keys Map result = new LinkedHashMap<>(); - if (!(object instanceof Map)) { + if (!(object instanceof Map map)) { // A document can be a text literal result.put("document", object); return result; } - Map map = (Map) object; map.forEach((key, value) -> { if (value instanceof Map) { value = asMap(value); @@ -306,6 +305,7 @@ public abstract class YamlProcessor { return result; } + @SuppressWarnings({ "rawtypes", "unchecked" }) private void buildFlattenedMap(Map result, Map source, @Nullable String path) { source.forEach((key, value) -> { if (StringUtils.hasText(path)) { @@ -319,16 +319,12 @@ public abstract class YamlProcessor { if (value instanceof String) { result.put(key, value); } - else if (value instanceof Map) { + else if (value instanceof Map map) { // Need a compound key - @SuppressWarnings("unchecked") - Map map = (Map) value; buildFlattenedMap(result, map, key); } - else if (value instanceof Collection) { + else if (value instanceof Collection collection) { // Need a compound key - @SuppressWarnings("unchecked") - Collection collection = (Collection) value; if (collection.isEmpty()) { result.put(key, ""); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java b/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java index 383e3c6d712..6a236bbfd3d 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java @@ -318,8 +318,8 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp if (!ObjectUtils.isEmpty(args)) { int index = args.length; Object lastArg = args[index - 1]; - if (lastArg instanceof Closure) { - callable = (Closure) lastArg; + if (lastArg instanceof Closure closure) { + callable = closure; index--; } constructorArgs = resolveConstructorArguments(args, 0, index); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionWrapper.java b/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionWrapper.java index 322c41429f2..9cd6709221c 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionWrapper.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionWrapper.java @@ -139,22 +139,22 @@ class GroovyBeanDefinitionWrapper extends GroovyObjectSupport { if (obj == null) { throw new IllegalArgumentException("Parent bean cannot be set to a null runtime bean reference!"); } - if (obj instanceof String) { - this.parentName = (String) obj; + if (obj instanceof String name) { + this.parentName = name; } - else if (obj instanceof RuntimeBeanReference) { - this.parentName = ((RuntimeBeanReference) obj).getBeanName(); + else if (obj instanceof RuntimeBeanReference runtimeBeanReference) { + this.parentName = runtimeBeanReference.getBeanName(); } - else if (obj instanceof GroovyBeanDefinitionWrapper) { - this.parentName = ((GroovyBeanDefinitionWrapper) obj).getBeanName(); + else if (obj instanceof GroovyBeanDefinitionWrapper wrapper) { + this.parentName = wrapper.getBeanName(); } getBeanDefinition().setParentName(this.parentName); getBeanDefinition().setAbstract(false); } public GroovyBeanDefinitionWrapper addProperty(String propertyName, Object propertyValue) { - if (propertyValue instanceof GroovyBeanDefinitionWrapper) { - propertyValue = ((GroovyBeanDefinitionWrapper) propertyValue).getBeanDefinition(); + if (propertyValue instanceof GroovyBeanDefinitionWrapper wrapper) { + propertyValue = wrapper.getBeanDefinition(); } getBeanDefinition().getPropertyValues().add(propertyName, propertyValue); return this; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/parsing/BeanComponentDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/parsing/BeanComponentDefinition.java index b21c12a9a28..93537ed25ef 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/parsing/BeanComponentDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/parsing/BeanComponentDefinition.java @@ -73,14 +73,14 @@ public class BeanComponentDefinition extends BeanDefinitionHolder implements Com PropertyValues propertyValues = beanDefinitionHolder.getBeanDefinition().getPropertyValues(); for (PropertyValue propertyValue : propertyValues.getPropertyValues()) { Object value = propertyValue.getValue(); - if (value instanceof BeanDefinitionHolder) { - innerBeans.add(((BeanDefinitionHolder) value).getBeanDefinition()); + if (value instanceof BeanDefinitionHolder beanDefHolder) { + innerBeans.add(beanDefHolder.getBeanDefinition()); } - else if (value instanceof BeanDefinition) { - innerBeans.add((BeanDefinition) value); + else if (value instanceof BeanDefinition beanDef) { + innerBeans.add(beanDef); } - else if (value instanceof BeanReference) { - references.add((BeanReference) value); + else if (value instanceof BeanReference beanRef) { + references.add(beanRef); } } this.innerBeanDefinitions = innerBeans.toArray(new BeanDefinition[0]); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java index 50838d83409..e4e8d74ea05 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java @@ -1619,8 +1619,8 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac MutablePropertyValues mpvs = null; List original; - if (pvs instanceof MutablePropertyValues) { - mpvs = (MutablePropertyValues) pvs; + if (pvs instanceof MutablePropertyValues _mpvs) { + mpvs = _mpvs; if (mpvs.isConverted()) { // Shortcut: use the pre-converted values as-is. try { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinitionReader.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinitionReader.java index 3c23aecf46e..9ca39095fa2 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinitionReader.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinitionReader.java @@ -86,16 +86,16 @@ public abstract class AbstractBeanDefinitionReader implements BeanDefinitionRead this.registry = registry; // Determine ResourceLoader to use. - if (this.registry instanceof ResourceLoader) { - this.resourceLoader = (ResourceLoader) this.registry; + if (this.registry instanceof ResourceLoader _resourceLoader) { + this.resourceLoader = _resourceLoader; } else { this.resourceLoader = new PathMatchingResourcePatternResolver(); } // Inherit Environment if possible - if (this.registry instanceof EnvironmentCapable) { - this.environment = ((EnvironmentCapable) this.registry).getEnvironment(); + if (this.registry instanceof EnvironmentCapable environmentCapable) { + this.environment = environmentCapable.getEnvironment(); } else { this.environment = new StandardEnvironment(); @@ -213,10 +213,10 @@ public abstract class AbstractBeanDefinitionReader implements BeanDefinitionRead "Cannot load bean definitions from location [" + location + "]: no ResourceLoader available"); } - if (resourceLoader instanceof ResourcePatternResolver) { + if (resourceLoader instanceof ResourcePatternResolver resourcePatternResolver) { // Resource pattern matching available. try { - Resource[] resources = ((ResourcePatternResolver) resourceLoader).getResources(location); + Resource[] resources = resourcePatternResolver.getResources(location); int count = loadBeanDefinitions(resources); if (actualResources != null) { Collections.addAll(actualResources, resources); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java index a8bcb4a09db..103769cd893 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java @@ -1540,8 +1540,8 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp if (evaluated instanceof Class clazz) { return clazz; } - else if (evaluated instanceof String str) { - className = str; + else if (evaluated instanceof String name) { + className = name; freshResolve = true; } else { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java index c95f68bbfdb..b085f760c02 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java @@ -222,13 +222,13 @@ abstract class AutowireUtils { Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); for (Type typeArg : actualTypeArguments) { if (typeArg.equals(genericReturnType)) { - if (arg instanceof Class) { - return (Class) arg; + if (arg instanceof Class clazz) { + return clazz; } else { String className = null; - if (arg instanceof String) { - className = (String) arg; + if (arg instanceof String name) { + className = name; } else if (arg instanceof TypedStringValue typedValue) { String targetTypeName = typedValue.getTargetTypeName(); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionResource.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionResource.java index 3a243bfa078..5929e934e47 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionResource.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionResource.java @@ -81,9 +81,9 @@ class BeanDefinitionResource extends AbstractResource { * This implementation compares the underlying BeanDefinition. */ @Override - public boolean equals(@Nullable Object other) { - return (this == other || (other instanceof BeanDefinitionResource && - ((BeanDefinitionResource) other).beanDefinition.equals(this.beanDefinition))); + public boolean equals(@Nullable Object obj) { + return (this == obj || (obj instanceof BeanDefinitionResource that && + this.beanDefinition.equals(that.beanDefinition))); } /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java index 39d7c180c5a..dec3f7de0cc 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java @@ -154,8 +154,8 @@ public class CglibSubclassingInstantiationStrategy extends SimpleInstantiationSt enhancer.setSuperclass(beanDefinition.getBeanClass()); enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE); enhancer.setAttemptLoad(true); - if (this.owner instanceof ConfigurableBeanFactory) { - ClassLoader cl = ((ConfigurableBeanFactory) this.owner).getBeanClassLoader(); + if (this.owner instanceof ConfigurableBeanFactory cbf) { + ClassLoader cl = cbf.getBeanClassLoader(); enhancer.setStrategy(new ClassLoaderAwareGeneratorStrategy(cl)); } enhancer.setCallbackFilter(new MethodOverrideCallbackFilter(beanDefinition)); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java index e5b364630ff..64c8827113e 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java @@ -766,8 +766,8 @@ class ConstructorResolver { "] to required type [" + paramType.getName() + "]: " + ex.getMessage()); } Object sourceHolder = valueHolder.getSource(); - if (sourceHolder instanceof ConstructorArgumentValues.ValueHolder) { - Object sourceValue = ((ConstructorArgumentValues.ValueHolder) sourceHolder).getValue(); + if (sourceHolder instanceof ConstructorArgumentValues.ValueHolder constructorValueHolder) { + Object sourceValue = constructorValueHolder.getValue(); args.resolveNecessary = true; args.preparedArguments[paramIndex] = sourceValue; } @@ -834,8 +834,8 @@ class ConstructorResolver { else if (argValue instanceof BeanMetadataElement) { argValue = valueResolver.resolveValueIfNecessary("constructor argument", argValue); } - else if (argValue instanceof String) { - argValue = this.beanFactory.evaluateBeanDefinitionString((String) argValue, mbd); + else if (argValue instanceof String text) { + argValue = this.beanFactory.evaluateBeanDefinitionString(text, mbd); } Class paramType = paramTypes[argIndex]; try { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java index 6750414847c..555b1ecd08f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java @@ -188,11 +188,11 @@ public abstract class FactoryBeanRegistrySupport extends DefaultSingletonBeanReg * @throws BeansException if the given bean cannot be exposed as a FactoryBean */ protected FactoryBean getFactoryBean(String beanName, Object beanInstance) throws BeansException { - if (!(beanInstance instanceof FactoryBean)) { + if (!(beanInstance instanceof FactoryBean factoryBean)) { throw new BeanCreationException(beanName, "Bean instance of type [" + beanInstance.getClass() + "] is not a FactoryBean"); } - return (FactoryBean) beanInstance; + return factoryBean; } /** diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java index 960f86b7fdb..37b1e86d3c7 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java @@ -83,8 +83,8 @@ public class GenericTypeAwareAutowireCandidateResolver extends SimpleAutowireCan ResolvableType targetType = null; boolean cacheType = false; RootBeanDefinition rbd = null; - if (bdHolder.getBeanDefinition() instanceof RootBeanDefinition) { - rbd = (RootBeanDefinition) bdHolder.getBeanDefinition(); + if (bdHolder.getBeanDefinition() instanceof RootBeanDefinition rootBeanDef) { + rbd = rootBeanDef; } if (rbd != null) { targetType = rbd.targetType; @@ -161,8 +161,8 @@ public class GenericTypeAwareAutowireCandidateResolver extends SimpleAutowireCan if (decDef != null && this.beanFactory instanceof ConfigurableListableBeanFactory clbf) { if (clbf.containsBeanDefinition(decDef.getBeanName())) { BeanDefinition dbd = clbf.getMergedBeanDefinition(decDef.getBeanName()); - if (dbd instanceof RootBeanDefinition) { - return (RootBeanDefinition) dbd; + if (dbd instanceof RootBeanDefinition rootBeanDef) { + return rootBeanDef; } } } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/ManagedProperties.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/ManagedProperties.java index d4d5f03d0b1..9a180e10a2f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/ManagedProperties.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/ManagedProperties.java @@ -75,11 +75,11 @@ public class ManagedProperties extends Properties implements Mergeable, BeanMeta if (parent == null) { return this; } - if (!(parent instanceof Properties)) { + if (!(parent instanceof Properties properties)) { throw new IllegalArgumentException("Cannot merge with object of type [" + parent.getClass() + "]"); } Properties merged = new ManagedProperties(); - merged.putAll((Properties) parent); + merged.putAll(properties); merged.putAll(this); return merged; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java index 8dd6a0efbe3..d7f7a128d3a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java @@ -433,10 +433,10 @@ public class RootBeanDefinition extends AbstractBeanDefinition { } @Override - public void setInstanceSupplier(@Nullable Supplier instanceSupplier) { - super.setInstanceSupplier(instanceSupplier); - Method factoryMethod = (instanceSupplier instanceof InstanceSupplier ? - ((InstanceSupplier) instanceSupplier).getFactoryMethod() : null); + public void setInstanceSupplier(@Nullable Supplier supplier) { + super.setInstanceSupplier(supplier); + Method factoryMethod = (supplier instanceof InstanceSupplier instanceSupplier ? + instanceSupplier.getFactoryMethod() : null); if (factoryMethod != null) { setResolvedFactoryMethod(factoryMethod); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/wiring/BeanConfigurerSupport.java b/spring-beans/src/main/java/org/springframework/beans/factory/wiring/BeanConfigurerSupport.java index 3d505684c01..980fecac0cd 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/wiring/BeanConfigurerSupport.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/wiring/BeanConfigurerSupport.java @@ -76,11 +76,11 @@ public class BeanConfigurerSupport implements BeanFactoryAware, InitializingBean */ @Override public void setBeanFactory(BeanFactory beanFactory) { - if (!(beanFactory instanceof ConfigurableListableBeanFactory)) { + if (!(beanFactory instanceof ConfigurableListableBeanFactory clbf)) { throw new IllegalArgumentException( "Bean configurer aspect needs to run in a ConfigurableListableBeanFactory: " + beanFactory); } - this.beanFactory = (ConfigurableListableBeanFactory) beanFactory; + this.beanFactory = clbf; if (this.beanWiringInfoResolver == null) { this.beanWiringInfoResolver = createDefaultBeanWiringInfoResolver(); } @@ -158,8 +158,7 @@ public class BeanConfigurerSupport implements BeanFactoryAware, InitializingBean } catch (BeanCreationException ex) { Throwable rootCause = ex.getMostSpecificCause(); - if (rootCause instanceof BeanCurrentlyInCreationException) { - BeanCreationException bce = (BeanCreationException) rootCause; + if (rootCause instanceof BeanCurrentlyInCreationException bce) { String bceBeanName = bce.getBeanName(); if (bceBeanName != null && beanFactory.isCurrentlyInCreation(bceBeanName)) { if (logger.isDebugEnabled()) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java index 57d0037139d..ff003bc862a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java @@ -916,14 +916,14 @@ public class BeanDefinitionParserDelegate { Element subElement = null; for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); - if (node instanceof Element && !nodeNameEquals(node, DESCRIPTION_ELEMENT) && + if (node instanceof Element currentElement && !nodeNameEquals(node, DESCRIPTION_ELEMENT) && !nodeNameEquals(node, META_ELEMENT)) { // Child element is what we're looking for. if (subElement != null) { error(elementName + " must not contain more than one sub-element", ele); } else { - subElement = (Element) node; + subElement = currentElement; } } } @@ -1158,8 +1158,8 @@ public class BeanDefinitionParserDelegate { for (int i = 0; i < elementNodes.getLength(); i++) { Node node = elementNodes.item(i); - if (node instanceof Element && !nodeNameEquals(node, DESCRIPTION_ELEMENT)) { - target.add(parsePropertySubElement((Element) node, bd, defaultElementType)); + if (node instanceof Element currentElement && !nodeNameEquals(node, DESCRIPTION_ELEMENT)) { + target.add(parsePropertySubElement(currentElement, bd, defaultElementType)); } } } @@ -1309,13 +1309,13 @@ public class BeanDefinitionParserDelegate { Element subElement = null; for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); - if (node instanceof Element) { + if (node instanceof Element currentElement) { // Child element is what we're looking for. if (subElement != null) { error(" element must not contain more than one value sub-element", keyEle); } else { - subElement = (Element) node; + subElement = currentElement; } } } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java index 815e0f59b5f..49c80c96961 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java @@ -120,8 +120,8 @@ public class DefaultNamespaceHandlerResolver implements NamespaceHandlerResolver if (handlerOrClassName == null) { return null; } - else if (handlerOrClassName instanceof NamespaceHandler) { - return (NamespaceHandler) handlerOrClassName; + else if (handlerOrClassName instanceof NamespaceHandler namespaceHandler) { + return namespaceHandler; } else { String className = (String) handlerOrClassName; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionStoreException.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionStoreException.java index 9f55693a9f6..679990791a2 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionStoreException.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionStoreException.java @@ -52,8 +52,8 @@ public class XmlBeanDefinitionStoreException extends BeanDefinitionStoreExceptio */ public int getLineNumber() { Throwable cause = getCause(); - if (cause instanceof SAXParseException) { - return ((SAXParseException) cause).getLineNumber(); + if (cause instanceof SAXParseException parseEx) { + return parseEx.getLineNumber(); } return -1; } diff --git a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/CustomNumberEditor.java b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/CustomNumberEditor.java index 2d72d46037b..59bda5473bb 100644 --- a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/CustomNumberEditor.java +++ b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/CustomNumberEditor.java @@ -121,8 +121,8 @@ public class CustomNumberEditor extends PropertyEditorSupport { */ @Override public void setValue(@Nullable Object value) { - if (value instanceof Number) { - super.setValue(NumberUtils.convertNumberToTargetClass((Number) value, this.numberClass)); + if (value instanceof Number num) { + super.setValue(NumberUtils.convertNumberToTargetClass(num, this.numberClass)); } else { super.setValue(value); diff --git a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/PropertiesEditor.java b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/PropertiesEditor.java index 048193bde9f..d796c6366d3 100644 --- a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/PropertiesEditor.java +++ b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/PropertiesEditor.java @@ -68,9 +68,9 @@ public class PropertiesEditor extends PropertyEditorSupport { */ @Override public void setValue(Object value) { - if (!(value instanceof Properties) && value instanceof Map) { + if (!(value instanceof Properties) && value instanceof Map map) { Properties props = new Properties(); - props.putAll((Map) value); + props.putAll(map); super.setValue(props); } else { diff --git a/spring-beans/src/main/java/org/springframework/beans/support/ArgumentConvertingMethodInvoker.java b/spring-beans/src/main/java/org/springframework/beans/support/ArgumentConvertingMethodInvoker.java index bdd72f24d38..7ae1514b615 100644 --- a/spring-beans/src/main/java/org/springframework/beans/support/ArgumentConvertingMethodInvoker.java +++ b/spring-beans/src/main/java/org/springframework/beans/support/ArgumentConvertingMethodInvoker.java @@ -98,11 +98,11 @@ public class ArgumentConvertingMethodInvoker extends MethodInvoker { */ public void registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) { TypeConverter converter = getTypeConverter(); - if (!(converter instanceof PropertyEditorRegistry)) { + if (!(converter instanceof PropertyEditorRegistry registry)) { throw new IllegalStateException( "TypeConverter does not implement PropertyEditorRegistry interface: " + converter); } - ((PropertyEditorRegistry) converter).registerCustomEditor(requiredType, propertyEditor); + registry.registerCustomEditor(requiredType, propertyEditor); } diff --git a/spring-beans/src/main/java/org/springframework/beans/support/PropertyComparator.java b/spring-beans/src/main/java/org/springframework/beans/support/PropertyComparator.java index 519ead57987..c079af2f8e0 100644 --- a/spring-beans/src/main/java/org/springframework/beans/support/PropertyComparator.java +++ b/spring-beans/src/main/java/org/springframework/beans/support/PropertyComparator.java @@ -76,9 +76,9 @@ public class PropertyComparator implements Comparator { public int compare(T o1, T o2) { Object v1 = getPropertyValue(o1); Object v2 = getPropertyValue(o2); - if (this.sortDefinition.isIgnoreCase() && (v1 instanceof String) && (v2 instanceof String)) { - v1 = ((String) v1).toLowerCase(); - v2 = ((String) v2).toLowerCase(); + if (this.sortDefinition.isIgnoreCase() && (v1 instanceof String text1) && (v2 instanceof String text2)) { + v1 = text1.toLowerCase(); + v2 = text2.toLowerCase(); } int result; diff --git a/spring-beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java b/spring-beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java index 784cdf1b717..f5c93121769 100644 --- a/spring-beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java +++ b/spring-beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 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. @@ -116,9 +116,9 @@ public class ResourceEditorRegistrar implements PropertyEditorRegistrar { doRegisterEditor(registry, Class.class, new ClassEditor(classLoader)); doRegisterEditor(registry, Class[].class, new ClassArrayEditor(classLoader)); - if (this.resourceLoader instanceof ResourcePatternResolver) { + if (this.resourceLoader instanceof ResourcePatternResolver resourcePatternResolver) { doRegisterEditor(registry, Resource[].class, - new ResourceArrayPropertyEditor((ResourcePatternResolver) this.resourceLoader, this.propertyResolver)); + new ResourceArrayPropertyEditor(resourcePatternResolver, this.propertyResolver)); } } @@ -127,8 +127,8 @@ public class ResourceEditorRegistrar implements PropertyEditorRegistrar { * otherwise register as a custom editor. */ private void doRegisterEditor(PropertyEditorRegistry registry, Class requiredType, PropertyEditor editor) { - if (registry instanceof PropertyEditorRegistrySupport) { - ((PropertyEditorRegistrySupport) registry).overrideDefaultEditor(requiredType, editor); + if (registry instanceof PropertyEditorRegistrySupport registrySupport) { + registrySupport.overrideDefaultEditor(requiredType, editor); } else { registry.registerCustomEditor(requiredType, editor);