1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.annotation;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.junit.bct.BctAssertions.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import org.apache.juneau.*;
24 import org.junit.jupiter.api.*;
25
26 class BeanIgnoreAnnotation_Test extends TestBase {
27
28 private static final String CNAME = BeanIgnoreAnnotation_Test.class.getName();
29
30 private static class X1 {}
31
32
33
34
35
36 BeanIgnore a1 = BeanIgnoreAnnotation.create()
37 .description("a")
38 .on("b")
39 .onClass(X1.class)
40 .build();
41
42 BeanIgnore a2 = BeanIgnoreAnnotation.create()
43 .description("a")
44 .on("b")
45 .onClass(X1.class)
46 .build();
47
48 @Test void a01_basic() {
49 assertBean(a1, "description,on,onClass", "[a],[b],[X1]");
50 }
51
52 @Test void a02_testEquivalency() {
53 assertEquals(a2, a1);
54 assertNotEquals(0, a2.hashCode());
55 assertNotEquals(-1, a2.hashCode());
56 assertEquals(a1.hashCode(), a2.hashCode());
57 }
58
59
60
61
62
63 @Test void b01_testEquivalencyInPropertyStores() {
64 var bc1 = BeanContext.create().annotations(a1).build();
65 var bc2 = BeanContext.create().annotations(a2).build();
66 assertSame(bc1, bc2);
67 }
68
69
70
71
72
73 public static class C1 {
74 public int f1;
75 public void m1() {}
76 }
77 public static class C2 {
78 public int f2;
79 public void m2() {}
80 }
81
82 @Test void c01_otherMethods() throws Exception {
83 var c1 = BeanIgnoreAnnotation.create(C1.class).on(C2.class).build();
84 var c2 = BeanIgnoreAnnotation.create("a").on("b").build();
85 var c3 = BeanIgnoreAnnotation.create().on(C1.class.getField("f1")).on(C2.class.getField("f2")).build();
86 var c4 = BeanIgnoreAnnotation.create().on(C1.class.getMethod("m1")).on(C2.class.getMethod("m2")).build();
87 var c5 = BeanIgnoreAnnotation.create().on(C1.class.getConstructor()).on(C2.class.getConstructor()).build();
88
89 assertBean(c1, "on", "["+CNAME+"$C1,"+CNAME+"$C2]");
90 assertBean(c2, "on", "[a,b]");
91 assertBean(c3, "on", "["+CNAME+"$C1.f1,"+CNAME+"$C2.f2]");
92 assertBean(c4, "on", "["+CNAME+"$C1.m1(),"+CNAME+"$C2.m2()]");
93 assertBean(c5, "on", "["+CNAME+"$C1(),"+CNAME+"$C2()]");
94 }
95
96
97
98
99
100 @BeanIgnore(
101 description={ "a" },
102 on="b",
103 onClass=X1.class
104 )
105 public static class D1 {}
106 BeanIgnore d1 = D1.class.getAnnotationsByType(BeanIgnore.class)[0];
107
108 @BeanIgnore(
109 description={ "a" },
110 on="b",
111 onClass=X1.class
112 )
113 public static class D2 {}
114 BeanIgnore d2 = D2.class.getAnnotationsByType(BeanIgnore.class)[0];
115
116 @Test void d01_comparisonWithDeclarativeAnnotations() {
117 assertEqualsAll(a1, d1, d2);
118 assertNotEqualsAny(a1.hashCode(), 0, -1);
119 assertEqualsAll(a1.hashCode(), d1.hashCode(), d2.hashCode());
120 }
121 }