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