|
|
|
@ -261,6 +261,10 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut |
|
|
|
catch (BCException ex) { |
|
|
|
catch (BCException ex) { |
|
|
|
logger.debug("PointcutExpression matching rejected target class", ex); |
|
|
|
logger.debug("PointcutExpression matching rejected target class", ex); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
catch (IllegalStateException ex) { |
|
|
|
|
|
|
|
// AspectJ 1.8.10: encountered invalid signature
|
|
|
|
|
|
|
|
logger.debug("PointcutExpression matching rejected target class", ex); |
|
|
|
|
|
|
|
} |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -413,39 +417,46 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut |
|
|
|
shadowMatch = this.shadowMatchCache.get(targetMethod); |
|
|
|
shadowMatch = this.shadowMatchCache.get(targetMethod); |
|
|
|
if (shadowMatch == null) { |
|
|
|
if (shadowMatch == null) { |
|
|
|
try { |
|
|
|
try { |
|
|
|
shadowMatch = this.pointcutExpression.matchesMethodExecution(methodToMatch); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (ReflectionWorldException ex) { |
|
|
|
|
|
|
|
// Failed to introspect target method, probably because it has been loaded
|
|
|
|
|
|
|
|
// in a special ClassLoader. Let's try the declaring ClassLoader instead...
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
fallbackExpression = getFallbackPointcutExpression(methodToMatch.getDeclaringClass()); |
|
|
|
|
|
|
|
if (fallbackExpression != null) { |
|
|
|
|
|
|
|
shadowMatch = fallbackExpression.matchesMethodExecution(methodToMatch); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (ReflectionWorldException ex2) { |
|
|
|
|
|
|
|
fallbackExpression = null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (shadowMatch == null && targetMethod != originalMethod) { |
|
|
|
|
|
|
|
methodToMatch = originalMethod; |
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
shadowMatch = this.pointcutExpression.matchesMethodExecution(methodToMatch); |
|
|
|
shadowMatch = this.pointcutExpression.matchesMethodExecution(methodToMatch); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (ReflectionWorldException ex3) { |
|
|
|
catch (ReflectionWorldException ex) { |
|
|
|
// Could neither introspect the target class nor the proxy class ->
|
|
|
|
// Failed to introspect target method, probably because it has been loaded
|
|
|
|
// let's try the original method's declaring class before we give up...
|
|
|
|
// in a special ClassLoader. Let's try the declaring ClassLoader instead...
|
|
|
|
try { |
|
|
|
try { |
|
|
|
fallbackExpression = getFallbackPointcutExpression(methodToMatch.getDeclaringClass()); |
|
|
|
fallbackExpression = getFallbackPointcutExpression(methodToMatch.getDeclaringClass()); |
|
|
|
if (fallbackExpression != null) { |
|
|
|
if (fallbackExpression != null) { |
|
|
|
shadowMatch = fallbackExpression.matchesMethodExecution(methodToMatch); |
|
|
|
shadowMatch = fallbackExpression.matchesMethodExecution(methodToMatch); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
catch (ReflectionWorldException ex4) { |
|
|
|
catch (ReflectionWorldException ex2) { |
|
|
|
fallbackExpression = null; |
|
|
|
fallbackExpression = null; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (shadowMatch == null && targetMethod != originalMethod) { |
|
|
|
|
|
|
|
methodToMatch = originalMethod; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
shadowMatch = this.pointcutExpression.matchesMethodExecution(methodToMatch); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (ReflectionWorldException ex3) { |
|
|
|
|
|
|
|
// Could neither introspect the target class nor the proxy class ->
|
|
|
|
|
|
|
|
// let's try the original method's declaring class before we give up...
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
fallbackExpression = getFallbackPointcutExpression(methodToMatch.getDeclaringClass()); |
|
|
|
|
|
|
|
if (fallbackExpression != null) { |
|
|
|
|
|
|
|
shadowMatch = fallbackExpression.matchesMethodExecution(methodToMatch); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (ReflectionWorldException ex4) { |
|
|
|
|
|
|
|
fallbackExpression = null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (IllegalStateException ex) { |
|
|
|
|
|
|
|
// AspectJ 1.8.10: encountered invalid signature
|
|
|
|
|
|
|
|
logger.debug("PointcutExpression matching rejected target method", ex); |
|
|
|
|
|
|
|
fallbackExpression = null; |
|
|
|
} |
|
|
|
} |
|
|
|
if (shadowMatch == null) { |
|
|
|
if (shadowMatch == null) { |
|
|
|
shadowMatch = new ShadowMatchImpl(org.aspectj.util.FuzzyBoolean.NO, null, null, null); |
|
|
|
shadowMatch = new ShadowMatchImpl(org.aspectj.util.FuzzyBoolean.NO, null, null, null); |
|
|
|
|