diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/AbstractAspectJAdvice.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/AbstractAspectJAdvice.java index 22a46e9456..b4fe180068 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/AbstractAspectJAdvice.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/AbstractAspectJAdvice.java @@ -268,18 +268,16 @@ public abstract class AbstractAspectJAdvice implements Advice, AspectJPrecedence this.argumentNames[i] + "' that is not a valid Java identifier"); } } - if (this.argumentNames != null) { - if (this.aspectJAdviceMethod.getParameterCount() == this.argumentNames.length + 1) { - // May need to add implicit join point arg name... - Class firstArgType = this.aspectJAdviceMethod.getParameterTypes()[0]; - if (firstArgType == JoinPoint.class || - firstArgType == ProceedingJoinPoint.class || - firstArgType == JoinPoint.StaticPart.class) { - String[] oldNames = this.argumentNames; - this.argumentNames = new String[oldNames.length + 1]; - this.argumentNames[0] = "THIS_JOIN_POINT"; - System.arraycopy(oldNames, 0, this.argumentNames, 1, oldNames.length); - } + if (this.aspectJAdviceMethod.getParameterCount() == this.argumentNames.length + 1) { + // May need to add implicit join point arg name... + Class firstArgType = this.aspectJAdviceMethod.getParameterTypes()[0]; + if (firstArgType == JoinPoint.class || + firstArgType == ProceedingJoinPoint.class || + firstArgType == JoinPoint.StaticPart.class) { + String[] oldNames = this.argumentNames; + this.argumentNames = new String[oldNames.length + 1]; + this.argumentNames[0] = "THIS_JOIN_POINT"; + System.arraycopy(oldNames, 0, this.argumentNames, 1, oldNames.length); } } } diff --git a/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java b/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java index b23dcf3d90..7a739508e2 100644 --- a/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java +++ b/spring-aop/src/main/java/org/springframework/aop/config/ConfigBeanDefinitionParser.java @@ -108,14 +108,10 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser { List childElts = DomUtils.getChildElements(element); for (Element elt: childElts) { String localName = parserContext.getDelegate().getLocalName(elt); - if (POINTCUT.equals(localName)) { - parsePointcut(elt, parserContext); - } - else if (ADVISOR.equals(localName)) { - parseAdvisor(elt, parserContext); - } - else if (ASPECT.equals(localName)) { - parseAspect(elt, parserContext); + switch (localName) { + case POINTCUT -> parsePointcut(elt, parserContext); + case ADVISOR -> parseAdvisor(elt, parserContext); + case ASPECT -> parseAspect(elt, parserContext); } } diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/AopProxyUtils.java b/spring-aop/src/main/java/org/springframework/aop/framework/AopProxyUtils.java index d133c5d9a7..fd529c41bf 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/AopProxyUtils.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/AopProxyUtils.java @@ -257,23 +257,21 @@ public abstract class AopProxyUtils { if (ObjectUtils.isEmpty(arguments)) { return new Object[0]; } - if (method.isVarArgs()) { - if (method.getParameterCount() == arguments.length) { - Class[] paramTypes = method.getParameterTypes(); - int varargIndex = paramTypes.length - 1; - Class varargType = paramTypes[varargIndex]; - if (varargType.isArray()) { - Object varargArray = arguments[varargIndex]; - if (varargArray instanceof Object[] && !varargType.isInstance(varargArray)) { - Object[] newArguments = new Object[arguments.length]; - System.arraycopy(arguments, 0, newArguments, 0, varargIndex); - Class targetElementType = varargType.getComponentType(); - int varargLength = Array.getLength(varargArray); - Object newVarargArray = Array.newInstance(targetElementType, varargLength); - System.arraycopy(varargArray, 0, newVarargArray, 0, varargLength); - newArguments[varargIndex] = newVarargArray; - return newArguments; - } + if (method.isVarArgs() && (method.getParameterCount() == arguments.length)) { + Class[] paramTypes = method.getParameterTypes(); + int varargIndex = paramTypes.length - 1; + Class varargType = paramTypes[varargIndex]; + if (varargType.isArray()) { + Object varargArray = arguments[varargIndex]; + if (varargArray instanceof Object[] && !varargType.isInstance(varargArray)) { + Object[] newArguments = new Object[arguments.length]; + System.arraycopy(arguments, 0, newArguments, 0, varargIndex); + Class targetElementType = varargType.getComponentType(); + int varargLength = Array.getLength(varargArray); + Object newVarargArray = Array.newInstance(targetElementType, varargLength); + System.arraycopy(varargArray, 0, newVarargArray, 0, varargLength); + newArguments[varargIndex] = newVarargArray; + return newArguments; } } } diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java b/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java index d8a190298c..c3aee6e805 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java @@ -251,11 +251,10 @@ class CglibAopProxy implements AopProxy, Serializable { private void validateClassIfNecessary(Class proxySuperClass, @Nullable ClassLoader proxyClassLoader) { if (!this.advised.isOptimize() && logger.isInfoEnabled()) { synchronized (validatedClasses) { - if (!validatedClasses.containsKey(proxySuperClass)) { - doValidateClass(proxySuperClass, proxyClassLoader, - ClassUtils.getAllInterfacesForClassAsSet(proxySuperClass)); - validatedClasses.put(proxySuperClass, Boolean.TRUE); - } + validatedClasses.computeIfAbsent(proxySuperClass, clazz -> { + doValidateClass(clazz, proxyClassLoader, ClassUtils.getAllInterfacesForClassAsSet(clazz)); + return Boolean.TRUE; + }); } } } @@ -702,8 +701,7 @@ class CglibAopProxy implements AopProxy, Serializable { // We need to create a method invocation... retVal = new CglibMethodInvocation(proxy, target, method, args, targetClass, chain, methodProxy).proceed(); } - retVal = processReturnType(proxy, target, method, retVal); - return retVal; + return processReturnType(proxy, target, method, retVal); } finally { if (target != null && !targetSource.isStatic()) { diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/DefaultAdvisorChainFactory.java b/spring-aop/src/main/java/org/springframework/aop/framework/DefaultAdvisorChainFactory.java index c313ad570e..92c5492ac8 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/DefaultAdvisorChainFactory.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/DefaultAdvisorChainFactory.java @@ -109,10 +109,8 @@ public class DefaultAdvisorChainFactory implements AdvisorChainFactory, Serializ */ private static boolean hasMatchingIntroductions(Advisor[] advisors, Class actualClass) { for (Advisor advisor : advisors) { - if (advisor instanceof IntroductionAdvisor ia) { - if (ia.getClassFilter().matches(actualClass)) { - return true; - } + if (advisor instanceof IntroductionAdvisor ia && ia.getClassFilter().matches(actualClass)) { + return true; } } return false;