1
1
package org .javawebstack .abstractdata ;
2
2
3
3
import org .javawebstack .abstractdata .collector .AbstractArrayCollector ;
4
+ import org .javawebstack .abstractdata .exception .AbstractCoercingException ;
4
5
5
6
import java .util .*;
6
7
import java .util .function .Function ;
@@ -15,109 +16,118 @@ public boolean isArray() {
15
16
return true ;
16
17
}
17
18
18
- public AbstractArray array () {
19
+ public AbstractArray array (boolean strict ) throws AbstractCoercingException {
19
20
return this ;
20
21
}
21
22
22
- public AbstractObject object (String key ) {
23
+ public AbstractObject object (boolean strict ) throws AbstractCoercingException {
24
+ if (strict )
25
+ throw new AbstractCoercingException (Type .OBJECT , Type .ARRAY );
26
+ AbstractObject object = new AbstractObject ();
27
+ for (int i =0 ; i < elements .size (); i ++)
28
+ object .set (String .valueOf (i ), elements .get (i ));
29
+ return object ;
30
+ }
31
+
32
+ public AbstractObject object (String key ) throws AbstractCoercingException {
23
33
return query (key ).object ();
24
34
}
25
35
26
- public AbstractArray array (String key ) {
36
+ public AbstractArray array (String key ) throws AbstractCoercingException {
27
37
return query (key ).array ();
28
38
}
29
39
30
- public AbstractPrimitive primitive (String key ) {
40
+ public AbstractPrimitive primitive (String key ) throws AbstractCoercingException {
31
41
return query (key ).primitive ();
32
42
}
33
43
34
- public String string (String key ) {
44
+ public String string (String key ) throws AbstractCoercingException {
35
45
return query (key ).string ();
36
46
}
37
47
38
- public Boolean bool (String key ) {
48
+ public Boolean bool (String key ) throws AbstractCoercingException {
39
49
return query (key ).bool ();
40
50
}
41
51
42
- public Number number (String key ) {
52
+ public Number number (String key ) throws AbstractCoercingException {
43
53
return query (key ).number ();
44
54
}
45
55
46
- public AbstractObject object (String key , AbstractObject orElse ) {
56
+ public AbstractObject object (String key , AbstractObject orElse ) throws AbstractCoercingException {
47
57
return query (key , orElse ).object ();
48
58
}
49
59
50
- public AbstractArray array (String key , AbstractArray orElse ) {
60
+ public AbstractArray array (String key , AbstractArray orElse ) throws AbstractCoercingException {
51
61
return query (key , orElse ).array ();
52
62
}
53
63
54
- public AbstractPrimitive primitive (String key , AbstractPrimitive orElse ) {
64
+ public AbstractPrimitive primitive (String key , AbstractPrimitive orElse ) throws AbstractCoercingException {
55
65
return query (key , orElse ).primitive ();
56
66
}
57
67
58
- public String string (String key , String orElse ) {
68
+ public String string (String key , String orElse ) throws AbstractCoercingException {
59
69
return query (key , new AbstractPrimitive (orElse )).string ();
60
70
}
61
71
62
- public Boolean bool (String key , Boolean orElse ) {
72
+ public Boolean bool (String key , Boolean orElse ) throws AbstractCoercingException {
63
73
return query (key , new AbstractPrimitive (orElse )).bool ();
64
74
}
65
75
66
- public Number number (String key , Number orElse ) {
76
+ public Number number (String key , Number orElse ) throws AbstractCoercingException {
67
77
return query (key , new AbstractPrimitive (orElse )).number ();
68
78
}
69
79
70
- public AbstractObject object (int index ) {
80
+ public AbstractObject object (int index ) throws AbstractCoercingException {
71
81
return get (index ).object ();
72
82
}
73
83
74
- public AbstractArray array (int index ) {
84
+ public AbstractArray array (int index ) throws AbstractCoercingException {
75
85
return get (index ).array ();
76
86
}
77
87
78
- public AbstractPrimitive primitive (int index ) {
88
+ public AbstractPrimitive primitive (int index ) throws AbstractCoercingException {
79
89
return get (index ).primitive ();
80
90
}
81
91
82
- public String string (int index ) {
92
+ public String string (int index ) throws AbstractCoercingException {
83
93
return get (index ).string ();
84
94
}
85
95
86
- public Boolean bool (int index ) {
96
+ public Boolean bool (int index ) throws AbstractCoercingException {
87
97
return get (index ).bool ();
88
98
}
89
99
90
- public Number number (int index ) {
100
+ public Number number (int index ) throws AbstractCoercingException {
91
101
return get (index ).number ();
92
102
}
93
103
94
- public AbstractObject object (int index , AbstractObject orElse ) {
104
+ public AbstractObject object (int index , AbstractObject orElse ) throws AbstractCoercingException {
95
105
return get (index , orElse ).object ();
96
106
}
97
107
98
- public AbstractArray array (int index , AbstractArray orElse ) {
108
+ public AbstractArray array (int index , AbstractArray orElse ) throws AbstractCoercingException {
99
109
return get (index , orElse ).array ();
100
110
}
101
111
102
- public AbstractPrimitive primitive (int index , AbstractPrimitive orElse ) {
112
+ public AbstractPrimitive primitive (int index , AbstractPrimitive orElse ) throws AbstractCoercingException {
103
113
return get (index , orElse ).primitive ();
104
114
}
105
115
106
- public String string (int index , String orElse ) {
116
+ public String string (int index , String orElse ) throws AbstractCoercingException {
107
117
return get (index , new AbstractPrimitive (orElse )).string ();
108
118
}
109
119
110
- public Boolean bool (int index , Boolean orElse ) {
120
+ public Boolean bool (int index , Boolean orElse ) throws AbstractCoercingException {
111
121
return get (index , new AbstractPrimitive (orElse )).bool ();
112
122
}
113
123
114
- public Number number (int index , Number orElse ) {
124
+ public Number number (int index , Number orElse ) throws AbstractCoercingException {
115
125
return get (index , new AbstractPrimitive (orElse )).number ();
116
126
}
117
127
118
128
public AbstractArray add (AbstractElement element ) {
119
129
if (element == null )
120
- element = AbstractNull .INSTANCE ;
130
+ element = AbstractNull .VALUE ;
121
131
elements .add (element );
122
132
return this ;
123
133
}
@@ -141,7 +151,7 @@ public AbstractArray(Collection<Object> abstractElements) {
141
151
}
142
152
143
153
public AbstractArray addNull () {
144
- return add (AbstractNull .INSTANCE );
154
+ return add (AbstractNull .VALUE );
145
155
}
146
156
147
157
public AbstractArray add (Number value ) {
@@ -163,7 +173,7 @@ public AbstractArray add(String value) {
163
173
}
164
174
165
175
public AbstractArray setNull (int i ) {
166
- return set (i , AbstractNull .INSTANCE );
176
+ return set (i , AbstractNull .VALUE );
167
177
}
168
178
169
179
public AbstractArray set (int i , AbstractElement element ) {
@@ -264,6 +274,28 @@ public Object toObject() {
264
274
return list ;
265
275
}
266
276
277
+ public List <String > toStringList () {
278
+ return toStringList (false );
279
+ }
280
+
281
+ public List <String > toStringList (boolean strict ) {
282
+ List <String > list = new ArrayList <>();
283
+ for (AbstractElement e : elements )
284
+ list .add (e .string (strict ));
285
+ return list ;
286
+ }
287
+
288
+ public List <AbstractObject > toObjectList () {
289
+ return toObjectList (false );
290
+ }
291
+
292
+ public List <AbstractObject > toObjectList (boolean strict ) {
293
+ List <AbstractObject > list = new ArrayList <>();
294
+ for (AbstractElement e : elements )
295
+ list .add (e .object (strict ));
296
+ return list ;
297
+ }
298
+
267
299
public static AbstractArray fromArray (Object [] objects ) {
268
300
return new AbstractArray (objects );
269
301
}
0 commit comments