From 65e423219e52531a29a3aeb59ad8f27afa91c945 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 20 Jul 2018 00:41:35 +0200 Subject: [PATCH] Polishing --- .../java/org/springframework/aop/MethodMatcher.java | 11 ++++++----- .../aop/support/AbstractRegexpMethodPointcut.java | 7 ++++--- .../aop/support/DynamicMethodMatcher.java | 4 +++- .../springframework/aop/support/RootClassFilter.java | 7 ++++--- .../aop/support/StaticMethodMatcher.java | 4 +++- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/spring-aop/src/main/java/org/springframework/aop/MethodMatcher.java b/spring-aop/src/main/java/org/springframework/aop/MethodMatcher.java index 7cba7648cf4..8b528021882 100644 --- a/spring-aop/src/main/java/org/springframework/aop/MethodMatcher.java +++ b/spring-aop/src/main/java/org/springframework/aop/MethodMatcher.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,10 +48,11 @@ import java.lang.reflect.Method; public interface MethodMatcher { /** - * Perform static checking whether the given method matches. If this - * returns {@code false} or if the {@link #isRuntime()} method - * returns {@code false}, no runtime check (i.e. no. - * {@link #matches(java.lang.reflect.Method, Class, Object[])} call) will be made. + * Perform static checking whether the given method matches. + *

If this returns {@code false} or if the {@link #isRuntime()} + * method returns {@code false}, no runtime check (i.e. no + * {@link #matches(java.lang.reflect.Method, Class, Object[])} call) + * will be made. * @param method the candidate method * @param targetClass the target class (may be {@code null}, in which case * the candidate class must be taken to be the method's declaring class) diff --git a/spring-aop/src/main/java/org/springframework/aop/support/AbstractRegexpMethodPointcut.java b/spring-aop/src/main/java/org/springframework/aop/support/AbstractRegexpMethodPointcut.java index 537969b8ef2..aa666cba09c 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/AbstractRegexpMethodPointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/AbstractRegexpMethodPointcut.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -130,8 +130,9 @@ public abstract class AbstractRegexpMethodPointcut extends StaticMethodMatcherPo */ @Override public boolean matches(Method method, Class targetClass) { - return ((targetClass != null && matchesPattern(ClassUtils.getQualifiedMethodName(method, targetClass))) || - matchesPattern(ClassUtils.getQualifiedMethodName(method))); + return ((targetClass != null && targetClass != method.getDeclaringClass() && + matchesPattern(ClassUtils.getQualifiedMethodName(method, targetClass))) || + matchesPattern(ClassUtils.getQualifiedMethodName(method, method.getDeclaringClass()))); } /** diff --git a/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcher.java b/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcher.java index 78b230d8f02..1f7dc974841 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcher.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcher.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,8 @@ import org.springframework.aop.MethodMatcher; /** * Convenient abstract superclass for dynamic method matchers, * which do care about arguments at runtime. + * + * @author Rod Johnson */ public abstract class DynamicMethodMatcher implements MethodMatcher { diff --git a/spring-aop/src/main/java/org/springframework/aop/support/RootClassFilter.java b/spring-aop/src/main/java/org/springframework/aop/support/RootClassFilter.java index 364ff6282ec..6b8073d69a2 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/RootClassFilter.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/RootClassFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,8 @@ import java.io.Serializable; import org.springframework.aop.ClassFilter; /** - * Simple ClassFilter implementation that passes classes (and optionally subclasses) + * Simple ClassFilter implementation that passes classes (and optionally subclasses). + * * @author Rod Johnson */ @SuppressWarnings("serial") @@ -37,7 +38,7 @@ public class RootClassFilter implements ClassFilter, Serializable { @Override public boolean matches(Class candidate) { - return clazz.isAssignableFrom(candidate); + return this.clazz.isAssignableFrom(candidate); } } diff --git a/spring-aop/src/main/java/org/springframework/aop/support/StaticMethodMatcher.java b/spring-aop/src/main/java/org/springframework/aop/support/StaticMethodMatcher.java index 0627248ee97..923daaf94d0 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/StaticMethodMatcher.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/StaticMethodMatcher.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,8 @@ import org.springframework.aop.MethodMatcher; /** * Convenient abstract superclass for static method matchers, which don't care * about arguments at runtime. + * + * @author Rod Johnson */ public abstract class StaticMethodMatcher implements MethodMatcher {