From b437b7be3463dc60e3fa49a648d85743182d6f74 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Mon, 20 Feb 2023 16:48:12 +0100 Subject: [PATCH] Introduce test for perthis with @Aspect and shared pointcut This commit modifies PerThisAspect (which is used indirectly in AspectJAutoProxyCreatorTests.perThisAspect()) so that it uses a shared @Pointcut for both the @Aspect and @Around declarations, in order to refute claims made in gh-29998 that the documentation in the reference manual is incorrect. --- .../java/test/aspect/CommonPointcuts.java | 30 +++++++++++++++++++ .../test/java/test/aspect/PerThisAspect.java | 10 +++---- 2 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 spring-context/src/test/java/test/aspect/CommonPointcuts.java diff --git a/spring-context/src/test/java/test/aspect/CommonPointcuts.java b/spring-context/src/test/java/test/aspect/CommonPointcuts.java new file mode 100644 index 00000000000..c7dfd107ff5 --- /dev/null +++ b/spring-context/src/test/java/test/aspect/CommonPointcuts.java @@ -0,0 +1,30 @@ +/* + * Copyright 2002-2023 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package test.aspect; + +import org.aspectj.lang.annotation.Pointcut; + +/** + * @author Sam Brannen + * @since 6.0.6 + */ +public class CommonPointcuts { + + @Pointcut("execution(* getAge())") + public void getAgeExecution() {} + +} diff --git a/spring-context/src/test/java/test/aspect/PerThisAspect.java b/spring-context/src/test/java/test/aspect/PerThisAspect.java index d70c8e731c1..e4e8e02b3d5 100644 --- a/spring-context/src/test/java/test/aspect/PerThisAspect.java +++ b/spring-context/src/test/java/test/aspect/PerThisAspect.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2005 the original author or authors. + * Copyright 2002-2023 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. @@ -20,7 +20,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; -@Aspect("perthis(execution(* getAge()))") +@Aspect("perthis(test.aspect.CommonPointcuts.getAgeExecution())") public class PerThisAspect { private int invocations = 0; @@ -29,9 +29,9 @@ public class PerThisAspect { return this.invocations; } - @Around("execution(* getAge())") - public int changeAge(ProceedingJoinPoint pjp) throws Throwable { - return invocations++; + @Around("test.aspect.CommonPointcuts.getAgeExecution()") + public int changeAge(ProceedingJoinPoint pjp) { + return this.invocations++; } }