/** * Check whether the given object is a CGLIB proxy. * @param object the object to check * @see #isCglibProxyClass(Class) * @see org.springframework.aop.support.AopUtils#isCglibProxy(Object) */ public static boolean isCglibProxy(Object object) { return isCglibProxyClass(object.getClass()); }
/** * Check whether the given object is a JDK dynamic proxy or a CGLIB proxy. * <p>This method additionally checks if the given object is an instance * of {@link SpringProxy}. * @param object the object to check * @see #isJdkDynamicProxy * @see #isCglibProxy */ public static boolean isAopProxy(@Nullable Object object) { return (object instanceof SpringProxy && (Proxy.isProxyClass(object.getClass()) || ClassUtils.isCglibProxyClass(object.getClass()))); }
/** * Check whether the given object is a CGLIB proxy. * @param object the object to check * @see #isCglibProxyClass(Class) * @see org.springframework.aop.support.AopUtils#isCglibProxy(Object) */ public static boolean isCglibProxy(Object object) { return isCglibProxyClass(object.getClass()); }
public Method findFactoryMethod(String beanName) { if (!this.beansFactoryMetadata.containsKey(beanName)) { return null; } AtomicReference<Method> found = new AtomicReference<>(null); FactoryMetadata metadata = this.beansFactoryMetadata.get(beanName); Class<?> factoryType = this.beanFactory.getType(metadata.getBean()); String factoryMethod = metadata.getMethod(); if (ClassUtils.isCglibProxyClass(factoryType)) { factoryType = factoryType.getSuperclass(); } ReflectionUtils.doWithMethods(factoryType, (method) -> { if (method.getName().equals(factoryMethod)) { found.compareAndSet(null, method); } }); return found.get(); }
if (ClassUtils.isCglibProxyClass(rootClass)) { proxySuperClass = rootClass.getSuperclass(); Class<?>[] additionalInterfaces = rootClass.getInterfaces();
/** * @since 3.2.8 and 4.0.2 * @see <a href="https://jira.spring.io/browse/SPR-10785">SPR-10785</a> and <a * href="https://jira.spring.io/browse/SPR-11420">SPR-11420</a> */ @Test public void methodInjectedBeanMustBeOfSameEnhancedCglibSubclassTypeAcrossBeanFactories() { Class<?> firstClass = null; for (int i = 0; i < 10; i++) { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(bf).loadBeanDefinitions(OVERRIDES_CONTEXT); final Class<?> currentClass = bf.getBean("overrideOneMethod").getClass(); assertTrue("Method injected bean class [" + currentClass + "] must be a CGLIB enhanced subclass.", ClassUtils.isCglibProxyClass(currentClass)); if (firstClass == null) { firstClass = currentClass; } else { assertEquals(firstClass, currentClass); } } }
/** * 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()); }
private static Class<?> getTargetClass(Object targetObject) { Class<?> targetClass = targetObject.getClass(); if (AopUtils.isAopProxy(targetObject)) { targetClass = AopUtils.getTargetClass(targetObject); } else if (ClassUtils.isCglibProxyClass(targetClass)) { Class<?> superClass = targetObject.getClass().getSuperclass(); if (!Object.class.equals(superClass)) { targetClass = superClass; } } return targetClass; }
private Class<?> getTargetClass(Object targetObject) { Class<?> targetClass = targetObject.getClass(); if (AopUtils.isAopProxy(targetObject)) { targetClass = AopUtils.getTargetClass(targetObject); if (targetClass == targetObject.getClass()) { try { // Maybe a proxy with no target - e.g. gateway Class<?>[] interfaces = ((Advised) targetObject).getProxiedInterfaces(); if (interfaces.length == 1) { targetClass = interfaces[0]; } } catch (Exception e) { logger.debug("Exception trying to extract interface", e); } } } else if (org.springframework.util.ClassUtils.isCglibProxyClass(targetClass) || targetClass.getSimpleName().contains("$MockitoMock$")) { Class<?> superClass = targetObject.getClass().getSuperclass(); if (!Object.class.equals(superClass)) { targetClass = superClass; } } return targetClass; }
/** * Check whether the given object is a CGLIB proxy. * @param object the object to check * @see #isCglibProxyClass(Class) * @see org.springframework.aop.support.AopUtils#isCglibProxy(Object) */ public static boolean isCglibProxy(Object object) { return isCglibProxyClass(object.getClass()); }
if (fbDef instanceof AbstractBeanDefinition) { Class<?> fbClass = ((AbstractBeanDefinition)fbDef).getBeanClass(); if (ClassUtils.isCglibProxyClass(fbClass)) {
/** * Check whether the given object is a CGLIB proxy. * @param object the object to check * @see #isCglibProxyClass(Class) * @see org.springframework.aop.support.AopUtils#isCglibProxy(Object) */ public static boolean isCglibProxy(Object object) { return isCglibProxyClass(object.getClass()); }
/** * Check whether the given object is a JDK dynamic proxy or a CGLIB proxy. * <p>This method additionally checks if the given object is an instance * of {@link SpringProxy}. * @param object the object to check * @see #isJdkDynamicProxy * @see #isCglibProxy */ public static boolean isAopProxy(Object object) { return (object instanceof SpringProxy && (Proxy.isProxyClass(object.getClass()) || ClassUtils.isCglibProxyClass(object.getClass()))); }
/** * Check whether the given object is a JDK dynamic proxy or a CGLIB proxy. * <p>This method additionally checks if the given object is an instance * of {@link SpringProxy}. * @param object the object to check * @see #isJdkDynamicProxy * @see #isCglibProxy */ public static boolean isAopProxy(@Nullable Object object) { return (object instanceof SpringProxy && (Proxy.isProxyClass(object.getClass()) || ClassUtils.isCglibProxyClass(object.getClass()))); }
private static boolean isAopProxy(Object object) { return Proxy.isProxyClass(object.getClass()) || ClassUtils.isCglibProxyClass(object.getClass()); }
protected Class<?> getRealClassFromClassInternal(Class<?> cls) { if (ClassUtils.isCglibProxyClass(cls)) { return getRealClassFromClassInternal(cls.getSuperclass()); } return cls; } protected Object getRealObjectInternal(Object o) {
protected Class<?> getRealClassFromClassInternal(Class<?> cls) { if (ClassUtils.isCglibProxyClass(cls)) { return getRealClassFromClassInternal(cls.getSuperclass()); } return cls; } protected Object getRealObjectInternal(Object o) {
@Override public boolean matches(Method method, Class targetClass) { return !ClassUtils.isCglibProxyClass(targetClass) && isMonitoredAnnotationOnClassOrMethod(method, targetClass); }
/** {@inheritDoc} */ @Override protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass, String beanName, TargetSource targetSource) { // Do not used any AOP here as still working with classes and not objects if (!beanClass.isInterface()) { Class<?>[] interfaces; if (ClassUtils.isCglibProxyClass(beanClass)) { interfaces = beanClass.getSuperclass().getInterfaces(); } else { interfaces = beanClass.getInterfaces(); } if (interfaces != null) { for (Class<?> currentInterface: interfaces) { Object[] r = scanInterface(currentInterface); if (r != null) { return r; } } } } return DO_NOT_PROXY; }
private static Class<?> getTargetClass(Object targetObject) { Class<?> targetClass = targetObject.getClass(); if (AopUtils.isAopProxy(targetObject)) { targetClass = AopUtils.getTargetClass(targetObject); } else if (ClassUtils.isCglibProxyClass(targetClass)) { Class<?> superClass = targetObject.getClass().getSuperclass(); if (!Object.class.equals(superClass)) { targetClass = superClass; } } return targetClass; }