From c34f1fb02c9dbc6e9027b67426271ea2ab3af7ec Mon Sep 17 00:00:00 2001 From: Ladislav Thon Date: Mon, 17 Jul 2023 12:36:50 +0200 Subject: [PATCH] Add tests for InvocationContext.getInterceptorBindings() --- .../contract/invocationContext/Binding11.java | 21 ++++++++ .../contract/invocationContext/Binding12.java | 21 ++++++++ .../contract/invocationContext/Binding13.java | 33 ++++++++++++ .../contract/invocationContext/Binding14.java | 35 +++++++++++++ .../invocationContext/Interceptor11.java | 16 ++++++ .../invocationContext/Interceptor12.java | 52 +++++++++++++++++++ .../invocationContext/Interceptor13.java | 16 ++++++ .../invocationContext/Interceptor14.java | 16 ++++++ .../InvocationContextTest.java | 16 ++++++ .../invocationContext/SimpleBean.java | 8 +++ .../invocationContext/SimplePCBinding.java | 3 ++ impl/src/main/resources/tck-audit-int.xml | 13 +++++ pom.xml | 25 ++++++++- web/src/main/resources/tck-audit-int.xml | 13 +++++ 14 files changed, 287 insertions(+), 1 deletion(-) create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding11.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding12.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding13.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding14.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor11.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor12.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor13.java create mode 100644 impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor14.java diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding11.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding11.java new file mode 100644 index 0000000000..df64f1ca49 --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding11.java @@ -0,0 +1,21 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.enterprise.util.AnnotationLiteral; +import jakarta.interceptor.InterceptorBinding; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@InterceptorBinding +@Inherited +@Target({ TYPE, METHOD }) +@Retention(RUNTIME) +public @interface Binding11 { + class Literal extends AnnotationLiteral implements Binding11 { + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding12.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding12.java new file mode 100644 index 0000000000..1036542947 --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding12.java @@ -0,0 +1,21 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.enterprise.util.AnnotationLiteral; +import jakarta.interceptor.InterceptorBinding; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@InterceptorBinding +@Inherited +@Target({ TYPE, METHOD }) +@Retention(RUNTIME) +public @interface Binding12 { + class Literal extends AnnotationLiteral implements Binding12 { + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding13.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding13.java new file mode 100644 index 0000000000..6f098f15dd --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding13.java @@ -0,0 +1,33 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.enterprise.util.AnnotationLiteral; +import jakarta.interceptor.InterceptorBinding; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@InterceptorBinding +@Inherited +@Target({ TYPE, METHOD }) +@Retention(RUNTIME) +public @interface Binding13 { + String value(); + + class Literal extends AnnotationLiteral implements Binding13 { + private final String value; + + public Literal(String value) { + this.value = value; + } + + @Override + public String value() { + return value; + } + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding14.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding14.java new file mode 100644 index 0000000000..c30920477f --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Binding14.java @@ -0,0 +1,35 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.enterprise.util.AnnotationLiteral; +import jakarta.enterprise.util.Nonbinding; +import jakarta.interceptor.InterceptorBinding; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@InterceptorBinding +@Inherited +@Target({ TYPE, METHOD }) +@Retention(RUNTIME) +public @interface Binding14 { + @Nonbinding + String value(); + + class Literal extends AnnotationLiteral implements Binding14 { + private final String value; + + public Literal(String value) { + this.value = value; + } + + @Override + public String value() { + return value; + } + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor11.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor11.java new file mode 100644 index 0000000000..671235a41d --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor11.java @@ -0,0 +1,16 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.annotation.Priority; +import jakarta.interceptor.AroundInvoke; +import jakarta.interceptor.Interceptor; +import jakarta.interceptor.InvocationContext; + +@Interceptor +@Binding11 +@Priority(1100) +public class Interceptor11 { + @AroundInvoke + public Object intercept(InvocationContext ctx) throws Exception { + return ctx.proceed(); + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor12.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor12.java new file mode 100644 index 0000000000..39a16e37e5 --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor12.java @@ -0,0 +1,52 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.annotation.Priority; +import jakarta.interceptor.AroundInvoke; +import jakarta.interceptor.Interceptor; +import jakarta.interceptor.InvocationContext; + +import java.lang.annotation.Annotation; +import java.util.Set; + +@Interceptor +@Binding12 +@Priority(1200) +public class Interceptor12 { + private static Set allBindings; + + private static Set binding12s; // must be non-empty + private static Binding12 binding12; // must be non-null + + private static Set binding5s; // must be empty + private static Binding6 binding6; // must be null + + @AroundInvoke + public Object intercept(InvocationContext ctx) throws Exception { + allBindings = ctx.getInterceptorBindings(); + binding12s = ctx.getInterceptorBindings(Binding12.class); + binding12 = ctx.getInterceptorBinding(Binding12.class); + binding5s = ctx.getInterceptorBindings(Binding5.class); + binding6 = ctx.getInterceptorBinding(Binding6.class); + return ctx.proceed(); + } + + public static Set getAllBindings() { + return allBindings; + } + + public static Set getBinding12s() { + return binding12s; + } + + public static Binding12 getBinding12() { + return binding12; + } + + public static Set getBinding5s() { + return binding5s; + } + + public static Binding6 getBinding6() { + return binding6; + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor13.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor13.java new file mode 100644 index 0000000000..71d72671b6 --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor13.java @@ -0,0 +1,16 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.annotation.Priority; +import jakarta.interceptor.AroundInvoke; +import jakarta.interceptor.Interceptor; +import jakarta.interceptor.InvocationContext; + +@Interceptor +@Binding13("ok") +@Priority(1300) +public class Interceptor13 { + @AroundInvoke + public Object intercept(InvocationContext ctx) throws Exception { + return ctx.proceed(); + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor14.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor14.java new file mode 100644 index 0000000000..bf30407aa5 --- /dev/null +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/Interceptor14.java @@ -0,0 +1,16 @@ +package org.jboss.cdi.tck.interceptors.tests.contract.invocationContext; + +import jakarta.annotation.Priority; +import jakarta.interceptor.AroundInvoke; +import jakarta.interceptor.Interceptor; +import jakarta.interceptor.InvocationContext; + +@Interceptor +@Binding14("") +@Priority(1400) +public class Interceptor14 { + @AroundInvoke + public Object intercept(InvocationContext ctx) throws Exception { + return ctx.proceed(); + } +} diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/InvocationContextTest.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/InvocationContextTest.java index 2c2f62d2ba..f0c07102e6 100644 --- a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/InvocationContextTest.java +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/InvocationContextTest.java @@ -20,6 +20,7 @@ import static org.jboss.cdi.tck.interceptors.InterceptorsSections.INVOCATIONCONTEXT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNull; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; @@ -31,6 +32,8 @@ import org.jboss.test.audit.annotations.SpecVersion; import org.testng.annotations.Test; +import java.util.Set; + /** * Tests for the InvocationContext implementation * @@ -122,4 +125,17 @@ public void testBusinessMethodNotCalledWithoutProceedInvocation() { assertEquals(getContextualReference(SimpleBean.class).echo("foo"), "foo"); assertFalse(SimpleBean.isEchoCalled()); } + + @Test + @SpecAssertion(section = INVOCATIONCONTEXT, id = "n") + @SpecAssertion(section = INVOCATIONCONTEXT, id = "o") + public void testGetInterceptorBindings() { + assertTrue(getContextualReference(SimpleBean.class).bindings()); + assertEquals(Interceptor12.getAllBindings(), Set.of(new SimplePCBinding.Literal(), new Binding11.Literal(), + new Binding12.Literal(), new Binding13.Literal("ko"), new Binding14.Literal("foobar"))); + assertEquals(Interceptor12.getBinding12s(), Set.of(new Binding12.Literal())); + assertEquals(Interceptor12.getBinding12(), new Binding12.Literal()); + assertEquals(Interceptor12.getBinding5s(), Set.of()); + assertNull(Interceptor12.getBinding6()); + } } diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimpleBean.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimpleBean.java index 5bfb576dd2..9fce15dc9a 100644 --- a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimpleBean.java +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimpleBean.java @@ -72,6 +72,14 @@ public String echo(String s) { return s; } + @Binding11 + @Binding12 + @Binding13("ko") // does not associate `Interceptor13` with this bean due to different annotation member + @Binding14("foobar") + public boolean bindings() { + return true; + } + public static boolean isEchoCalled() { return echoCalled; } diff --git a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimplePCBinding.java b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimplePCBinding.java index 2309bc9e32..7d95787acb 100644 --- a/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimplePCBinding.java +++ b/impl/src/main/java/org/jboss/cdi/tck/interceptors/tests/contract/invocationContext/SimplePCBinding.java @@ -4,6 +4,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; +import jakarta.enterprise.util.AnnotationLiteral; import jakarta.interceptor.InterceptorBinding; import static java.lang.annotation.ElementType.METHOD; @@ -15,4 +16,6 @@ @Target({ TYPE }) @Retention(RUNTIME) public @interface SimplePCBinding { + class Literal extends AnnotationLiteral implements SimplePCBinding { + } } diff --git a/impl/src/main/resources/tck-audit-int.xml b/impl/src/main/resources/tck-audit-int.xml index e498a9d997..d2eeecf742 100644 --- a/impl/src/main/resources/tck-audit-int.xml +++ b/impl/src/main/resources/tck-audit-int.xml @@ -332,6 +332,19 @@ Unclear meaning of validation. + + + The |getInterceptorBindings| method returns the set of interceptor binding annotations + that were used to associate interceptors with the target instance that is being intercepted. + + + + + + The |getInterceptorBinding| method returns the single interceptor binding annotation of given type + that was used to associate interceptors with the target instance that is being intercepted. + +
diff --git a/pom.xml b/pom.xml index a68c7d49d7..81a9be1b1c 100644 --- a/pom.xml +++ b/pom.xml @@ -101,7 +101,7 @@ 11 2.1.0 - 2.1.0 + 2.2.0-RC1 2.0.1 5.0.0 @@ -361,6 +361,29 @@ + + + jakarta-ossrh-staging + + + jakarta-ossrh-staging + !false + + + + + jakarta-ossrh-staging + https://jakarta.oss.sonatype.org/content/groups/staging + + true + + + false + + + + + jboss-public-repository diff --git a/web/src/main/resources/tck-audit-int.xml b/web/src/main/resources/tck-audit-int.xml index e498a9d997..d2eeecf742 100644 --- a/web/src/main/resources/tck-audit-int.xml +++ b/web/src/main/resources/tck-audit-int.xml @@ -332,6 +332,19 @@ Unclear meaning of validation. + + + The |getInterceptorBindings| method returns the set of interceptor binding annotations + that were used to associate interceptors with the target instance that is being intercepted. + + + + + + The |getInterceptorBinding| method returns the single interceptor binding annotation of given type + that was used to associate interceptors with the target instance that is being intercepted. + +