Deprecate/move CGLIB methods AopUtils=>ClassUtils
isCglibProxy* methods in AopUtils are useful in lower-level modules, i.e. those that cannot depend on .aop. Therefore copied these methods to ClassUtils; deprecated the existing ones in AopUtils and now delegating to the new location; switched all usage of AopUtils#isCglibProxy* within the framework to use ClassUtils#isCglibProxy* instead.
This commit is contained in:
parent
78b60947ad
commit
7c25c84ee2
|
@ -35,11 +35,11 @@ import net.sf.cglib.proxy.MethodInterceptor;
|
|||
import net.sf.cglib.proxy.MethodProxy;
|
||||
import net.sf.cglib.proxy.NoOp;
|
||||
import net.sf.cglib.transform.impl.UndeclaredThrowableStrategy;
|
||||
|
||||
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.PointcutAdvisor;
|
||||
import org.springframework.aop.RawTargetAccess;
|
||||
|
@ -47,6 +47,7 @@ import org.springframework.aop.TargetSource;
|
|||
import org.springframework.aop.support.AopUtils;
|
||||
import org.springframework.core.SmartClassLoader;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
|
@ -155,7 +156,7 @@ final class Cglib2AopProxy implements AopProxy, Serializable {
|
|||
Assert.state(rootClass != null, "Target class must be available for creating a CGLIB proxy");
|
||||
|
||||
Class proxySuperClass = rootClass;
|
||||
if (AopUtils.isCglibProxyClass(rootClass)) {
|
||||
if (ClassUtils.isCglibProxyClass(rootClass)) {
|
||||
proxySuperClass = rootClass.getSuperclass();
|
||||
Class[] additionalInterfaces = rootClass.getInterfaces();
|
||||
for (Class additionalInterface : additionalInterfaces) {
|
||||
|
|
|
@ -63,7 +63,7 @@ public abstract class AopUtils {
|
|||
*/
|
||||
public static boolean isAopProxy(Object object) {
|
||||
return (object instanceof SpringProxy &&
|
||||
(Proxy.isProxyClass(object.getClass()) || isCglibProxyClass(object.getClass())));
|
||||
(Proxy.isProxyClass(object.getClass()) || ClassUtils.isCglibProxyClass(object.getClass())));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,27 +76,34 @@ public abstract class AopUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* Check whether the given object is a CGLIB proxy.
|
||||
* Check whether the given object is a CGLIB proxy. Goes beyond the implementation
|
||||
* in {@link ClassUtils#isCglibProxy(Object)} by checking also to see if the given
|
||||
* object is an instance of {@link SpringProxy}.
|
||||
* @param object the object to check
|
||||
* @see ClassUtils#isCglibProxy(Object)
|
||||
*/
|
||||
public static boolean isCglibProxy(Object object) {
|
||||
return (object instanceof SpringProxy && isCglibProxyClass(object.getClass()));
|
||||
return (object instanceof SpringProxy && ClassUtils.isCglibProxy(object));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the specified class is a CGLIB-generated class.
|
||||
* @param clazz the class to check
|
||||
* @deprecated as of Spring 3.1 in favor of {@link ClassUtils#isCglibProxyClass(Class)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean isCglibProxyClass(Class<?> clazz) {
|
||||
return (clazz != null && isCglibProxyClassName(clazz.getName()));
|
||||
return ClassUtils.isCglibProxyClass(clazz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the specified class name is a CGLIB-generated class.
|
||||
* @param className the class name to check
|
||||
* @deprecated as of Spring 3.1 in favor of {@link ClassUtils#isCglibProxyClassName(String)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean isCglibProxyClassName(String className) {
|
||||
return (className != null && className.contains(ClassUtils.CGLIB_CLASS_SEPARATOR));
|
||||
return ClassUtils.isCglibProxyClassName(className);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -21,7 +21,6 @@ import static org.junit.Assert.assertThat;
|
|||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.aop.support.AopUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
@ -29,6 +28,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext
|
|||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import test.beans.TestBean;
|
||||
|
||||
|
@ -54,7 +54,7 @@ public class ImportedConfigurationClassEnhancementTests {
|
|||
ApplicationContext ctx = new AnnotationConfigApplicationContext(configClasses);
|
||||
Config config = ctx.getBean(Config.class);
|
||||
assertTrue("autowired config class has not been enhanced",
|
||||
AopUtils.isCglibProxyClass(config.autowiredConfig.getClass()));
|
||||
ClassUtils.isCglibProxy(config.autowiredConfig));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
|
||||
package org.springframework.context.annotation.configuration;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.Test;
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.springframework.aop.support.AopUtils;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
|
@ -29,6 +29,7 @@ import org.springframework.context.ConfigurableApplicationContext;
|
|||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
public class Spr7167Tests {
|
||||
@Test
|
||||
|
@ -40,7 +41,7 @@ public class Spr7167Tests {
|
|||
equalTo("post processed by MyPostProcessor"));
|
||||
|
||||
MyConfig config = ctx.getBean(MyConfig.class);
|
||||
assertTrue("Config class was not enhanced", AopUtils.isCglibProxyClass(config.getClass()));
|
||||
assertTrue("Config class was not enhanced", ClassUtils.isCglibProxy(config));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1083,4 +1083,30 @@ public abstract class ClassUtils {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the given object is a CGLIB proxy.
|
||||
* @param object the object to check
|
||||
* @see org.springframework.aop.support.AopUtils#isCglibProxy(Object)
|
||||
*/
|
||||
public static boolean isCglibProxy(Object object) {
|
||||
return ClassUtils.isCglibProxyClass(object.getClass());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the specified class is a CGLIB-generated class.
|
||||
* @param clazz the class to check
|
||||
*/
|
||||
public static boolean isCglibProxyClass(Class<?> clazz) {
|
||||
return (clazz != null && isCglibProxyClassName(clazz.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the specified class name is a CGLIB-generated class.
|
||||
* @param className the class name to check
|
||||
*/
|
||||
public static boolean isCglibProxyClassName(String className) {
|
||||
return (className != null && className.contains(CGLIB_CLASS_SEPARATOR));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue