1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau;
18
19 import static org.apache.juneau.commons.reflect.Visibility.*;
20 import static org.junit.jupiter.api.Assertions.*;
21
22 import org.apache.juneau.a.*;
23 import org.apache.juneau.commons.reflect.*;
24 import org.apache.juneau.json.*;
25 import org.junit.jupiter.api.*;
26
27 class Visibility_Test extends TestBase {
28
29
30
31
32 @Test void a01_classDefault() throws Exception {
33 var s1 = JsonSerializer.create().json5().sortProperties().disableBeansRequireSomeProperties();
34 var s2 = JsonSerializer.create().json5().sortProperties().disableBeansRequireSomeProperties().beanClassVisibility(PROTECTED);
35 var s3 = JsonSerializer.create().json5().sortProperties().disableBeansRequireSomeProperties().beanClassVisibility(Visibility.DEFAULT);
36 var s4 = JsonSerializer.create().json5().sortProperties().disableBeansRequireSomeProperties().beanClassVisibility(PRIVATE);
37
38 var a1 = A1.create();
39
40 s1.beanFieldVisibility(NONE);
41 s2.beanFieldVisibility(NONE);
42 s3.beanFieldVisibility(NONE);
43 s4.beanFieldVisibility(NONE);
44
45 var r = s1.build().serialize(a1);
46 assertEquals("{f5:5}", r);
47
48 r = s2.build().serialize(a1);
49 assertEquals("{f5:5}", r);
50
51 r = s3.build().serialize(a1);
52 assertEquals("{f5:5}", r);
53
54 r = s4.build().serialize(a1);
55 assertEquals("{f5:5}", r);
56
57 s1.beanFieldVisibility(PUBLIC);
58 s2.beanFieldVisibility(PUBLIC);
59 s3.beanFieldVisibility(PUBLIC);
60 s4.beanFieldVisibility(PUBLIC);
61
62 r = s1.build().serialize(a1);
63 assertEquals("{f1:1,f5:5,g2:{f1:1,f5:5},g3:'A3',g4:'A4',g5:'A5'}", r);
64
65 r = s2.build().serialize(a1);
66 assertEquals("{f1:1,f5:5,g2:{f1:1,f5:5},g3:{f1:1,f5:5},g4:'A4',g5:'A5'}", r);
67
68 r = s3.build().serialize(a1);
69 assertEquals("{f1:1,f5:5,g2:{f1:1,f5:5},g3:{f1:1,f5:5},g4:{f1:1,f5:5},g5:'A5'}", r);
70
71 r = s4.build().serialize(a1);
72 assertEquals("{f1:1,f5:5,g2:{f1:1,f5:5},g3:{f1:1,f5:5},g4:{f1:1,f5:5},g5:{f1:1,f5:5}}", r);
73
74 s1.beanFieldVisibility(PROTECTED);
75 s2.beanFieldVisibility(PROTECTED);
76 s3.beanFieldVisibility(PROTECTED);
77 s4.beanFieldVisibility(PROTECTED);
78
79 r = s1.build().serialize(a1);
80 assertEquals("{f1:1,f2:2,f5:5,g2:{f1:1,f2:2,f5:5},g3:'A3',g4:'A4',g5:'A5'}", r);
81
82 r = s2.build().serialize(a1);
83 assertEquals("{f1:1,f2:2,f5:5,g2:{f1:1,f2:2,f5:5},g3:{f1:1,f2:2,f5:5},g4:'A4',g5:'A5'}", r);
84
85 r = s3.build().serialize(a1);
86 assertEquals("{f1:1,f2:2,f5:5,g2:{f1:1,f2:2,f5:5},g3:{f1:1,f2:2,f5:5},g4:{f1:1,f2:2,f5:5},g5:'A5'}", r);
87
88 r = s4.build().serialize(a1);
89 assertEquals("{f1:1,f2:2,f5:5,g2:{f1:1,f2:2,f5:5},g3:{f1:1,f2:2,f5:5},g4:{f1:1,f2:2,f5:5},g5:{f1:1,f2:2,f5:5}}", r);
90
91 s1.beanFieldVisibility(Visibility.DEFAULT);
92 s2.beanFieldVisibility(Visibility.DEFAULT);
93 s3.beanFieldVisibility(Visibility.DEFAULT);
94 s4.beanFieldVisibility(Visibility.DEFAULT);
95
96 r = s1.build().serialize(a1);
97 assertEquals("{f1:1,f2:2,f3:3,f5:5,g2:{f1:1,f2:2,f3:3,f5:5},g3:'A3',g4:'A4',g5:'A5'}", r);
98
99 r = s2.build().serialize(a1);
100 assertEquals("{f1:1,f2:2,f3:3,f5:5,g2:{f1:1,f2:2,f3:3,f5:5},g3:{f1:1,f2:2,f3:3,f5:5},g4:'A4',g5:'A5'}", r);
101
102 r = s3.build().serialize(a1);
103 assertEquals("{f1:1,f2:2,f3:3,f5:5,g2:{f1:1,f2:2,f3:3,f5:5},g3:{f1:1,f2:2,f3:3,f5:5},g4:{f1:1,f2:2,f3:3,f5:5},g5:'A5'}", r);
104
105 r = s4.build().serialize(a1);
106 assertEquals("{f1:1,f2:2,f3:3,f5:5,g2:{f1:1,f2:2,f3:3,f5:5},g3:{f1:1,f2:2,f3:3,f5:5},g4:{f1:1,f2:2,f3:3,f5:5},g5:{f1:1,f2:2,f3:3,f5:5}}", r);
107
108 s1.beanFieldVisibility(PRIVATE);
109 s2.beanFieldVisibility(PRIVATE);
110 s3.beanFieldVisibility(PRIVATE);
111 s4.beanFieldVisibility(PRIVATE);
112
113 r = s1.build().serialize(a1);
114 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,g2:{f1:1,f2:2,f3:3,f4:4,f5:5},g3:'A3',g4:'A4',g5:'A5'}", r);
115
116 r = s2.build().serialize(a1);
117 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,g2:{f1:1,f2:2,f3:3,f4:4,f5:5},g3:{f1:1,f2:2,f3:3,f4:4,f5:5},g4:'A4',g5:'A5'}", r);
118
119 r = s3.build().serialize(a1);
120 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,g2:{f1:1,f2:2,f3:3,f4:4,f5:5},g3:{f1:1,f2:2,f3:3,f4:4,f5:5},g4:{f1:1,f2:2,f3:3,f4:4,f5:5},g5:'A5'}", r);
121
122 r = s4.build().serialize(a1);
123 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,g2:{f1:1,f2:2,f3:3,f4:4,f5:5},g3:{f1:1,f2:2,f3:3,f4:4,f5:5},g4:{f1:1,f2:2,f3:3,f4:4,f5:5},g5:{f1:1,f2:2,f3:3,f4:4,f5:5}}", r);
124
125 s1.beanMethodVisibility(NONE);
126 s2.beanMethodVisibility(NONE);
127 s3.beanMethodVisibility(NONE);
128 s4.beanMethodVisibility(NONE);
129
130 r = s1.build().serialize(a1);
131 assertEquals("{f1:1,f2:2,f3:3,f4:4,g2:{f1:1,f2:2,f3:3,f4:4},g3:'A3',g4:'A4',g5:'A5'}", r);
132
133 r = s2.build().serialize(a1);
134 assertEquals("{f1:1,f2:2,f3:3,f4:4,g2:{f1:1,f2:2,f3:3,f4:4},g3:{f1:1,f2:2,f3:3,f4:4},g4:'A4',g5:'A5'}", r);
135
136 r = s3.build().serialize(a1);
137 assertEquals("{f1:1,f2:2,f3:3,f4:4,g2:{f1:1,f2:2,f3:3,f4:4},g3:{f1:1,f2:2,f3:3,f4:4},g4:{f1:1,f2:2,f3:3,f4:4},g5:'A5'}", r);
138
139 r = s4.build().serialize(a1);
140 assertEquals("{f1:1,f2:2,f3:3,f4:4,g2:{f1:1,f2:2,f3:3,f4:4},g3:{f1:1,f2:2,f3:3,f4:4},g4:{f1:1,f2:2,f3:3,f4:4},g5:{f1:1,f2:2,f3:3,f4:4}}", r);
141
142 s1.beanMethodVisibility(PROTECTED);
143 s2.beanMethodVisibility(PROTECTED);
144 s3.beanMethodVisibility(PROTECTED);
145 s4.beanMethodVisibility(PROTECTED);
146
147 r = s1.build().serialize(a1);
148 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6,g2:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g3:'A3',g4:'A4',g5:'A5'}", r);
149
150 r = s2.build().serialize(a1);
151 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6,g2:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g3:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g4:'A4',g5:'A5'}", r);
152
153 r = s3.build().serialize(a1);
154 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6,g2:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g3:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g4:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g5:'A5'}", r);
155
156 r = s4.build().serialize(a1);
157 assertEquals("{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6,g2:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g3:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g4:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6},g5:{f1:1,f2:2,f3:3,f4:4,f5:5,f6:6}}", r);
158
159 }
160
161 static class A {
162 public int f1;
163 public A(){}
164
165 static A create() {
166 var x = new A();
167 x.f1 = 1;
168 return x;
169 }
170 }
171 }