From e4fb72f6e3655b7af43650b3a0e4bc1a5d900e76 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 11 Dec 2013 12:34:59 +0100 Subject: [PATCH] Fixed CGLIB class validation to not raising warning for static final methods Issue: SPR-11107 (cherry picked from commit 9fbb57c) --- .../aop/framework/CglibAopProxy.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) 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 b7b4f1cc96..34f4e102f5 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 @@ -25,27 +25,27 @@ import java.util.List; import java.util.Map; import java.util.WeakHashMap; -import org.springframework.cglib.core.CodeGenerationException; -import org.springframework.cglib.proxy.Callback; -import org.springframework.cglib.proxy.CallbackFilter; -import org.springframework.cglib.proxy.Dispatcher; -import org.springframework.cglib.proxy.Enhancer; -import org.springframework.cglib.proxy.Factory; -import org.springframework.cglib.proxy.MethodInterceptor; -import org.springframework.cglib.proxy.MethodProxy; -import org.springframework.cglib.proxy.NoOp; -import org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy; - import org.aopalliance.aop.Advice; import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + import org.springframework.aop.Advisor; import org.springframework.aop.AopInvocationException; import org.springframework.aop.PointcutAdvisor; import org.springframework.aop.RawTargetAccess; import org.springframework.aop.TargetSource; import org.springframework.aop.support.AopUtils; +import org.springframework.cglib.core.CodeGenerationException; +import org.springframework.cglib.proxy.Callback; +import org.springframework.cglib.proxy.CallbackFilter; +import org.springframework.cglib.proxy.Dispatcher; +import org.springframework.cglib.proxy.Enhancer; +import org.springframework.cglib.proxy.Factory; +import org.springframework.cglib.proxy.MethodInterceptor; +import org.springframework.cglib.proxy.MethodProxy; +import org.springframework.cglib.proxy.NoOp; +import org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy; import org.springframework.core.SmartClassLoader; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -253,11 +253,14 @@ final class CglibAopProxy implements AopProxy, Serializable { * for each one found. */ private void doValidateClass(Class proxySuperClass) { - Method[] methods = proxySuperClass.getMethods(); - for (Method method : methods) { - if (!Object.class.equals(method.getDeclaringClass()) && Modifier.isFinal(method.getModifiers())) { - logger.warn("Unable to proxy method [" + method + "] because it is final: " + - "All calls to this method via a proxy will be routed directly to the proxy."); + if (logger.isWarnEnabled()) { + Method[] methods = proxySuperClass.getMethods(); + for (Method method : methods) { + if (!Object.class.equals(method.getDeclaringClass()) && !Modifier.isStatic(method.getModifiers()) && + Modifier.isFinal(method.getModifiers())) { + logger.warn("Unable to proxy method [" + method + "] because it is final: " + + "All calls to this method via a proxy will be routed directly to the proxy."); + } } } } -- GitLab