|
|
|
@ -433,10 +433,16 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut |
|
|
|
// Note: AspectJ is only going to take Method.getDeclaringClass() into account.
|
|
|
|
// Note: AspectJ is only going to take Method.getDeclaringClass() into account.
|
|
|
|
Set<Class<?>> ifcs = ClassUtils.getAllInterfacesForClassAsSet(targetClass); |
|
|
|
Set<Class<?>> ifcs = ClassUtils.getAllInterfacesForClassAsSet(targetClass); |
|
|
|
if (ifcs.size() > 1) { |
|
|
|
if (ifcs.size() > 1) { |
|
|
|
|
|
|
|
try { |
|
|
|
Class<?> compositeInterface = ClassUtils.createCompositeInterface( |
|
|
|
Class<?> compositeInterface = ClassUtils.createCompositeInterface( |
|
|
|
ClassUtils.toClassArray(ifcs), targetClass.getClassLoader()); |
|
|
|
ClassUtils.toClassArray(ifcs), targetClass.getClassLoader()); |
|
|
|
targetMethod = ClassUtils.getMostSpecificMethod(targetMethod, compositeInterface); |
|
|
|
targetMethod = ClassUtils.getMostSpecificMethod(targetMethod, compositeInterface); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
catch (IllegalArgumentException ex) { |
|
|
|
|
|
|
|
// Implemented interfaces probably expose conflicting method signatures...
|
|
|
|
|
|
|
|
// Proceed with original target method.
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return getShadowMatch(targetMethod, method); |
|
|
|
return getShadowMatch(targetMethod, method); |
|
|
|
} |
|
|
|
} |
|
|
|
|