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