FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
JSON-java/stream/StructureCollector.java at writeable · run2000/JSON-java · GitHub
run2000
/
JSON-java
Public
forked from
stleary/JSON-java
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
JSON-java
/
stream
/
StructureCollector.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
130 lines (113 loc) · 4.77 KB
Breadcrumbs
JSON-java
/
stream
/
StructureCollector.java
Copy path
File metadata and controls
130 lines (113 loc) · 4.77 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package
org
.
json
.
stream
;
/*
Copyright (c) 2002 JSON.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Software shall be used for Good, not Evil.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import
org
.
json
.
JSONException
;
/**
* Allows {@code JSONLimitBuilder} to parameterize the creation and population
* of object and array structures, {@code null} values, and creation of
* a "finished" result type. Similar to {@code Collector} in Java 8's stream
* package.
* <p>
* For instance, structures may be created as {@code JSONObject} and
* {@code JSONArray}, with {@code JSONObject.NULL} for JSON null. Another
* collector may create structures as {@code HashMap} and {@code ArrayList}, and
* Java's {@code null} value for JSON null.
* </p>
* @param <OA> the JSON object accumulator type
* @param <AA> the JSON array accumulator type
* @param <OR> the JSON object result type
* @param <AR> the JSON array result type
* @author JSON.org
* @version 2016-09-05
*/
public
interface
StructureCollector
<
OA
,
AA
,
OR
,
AR
> {
/**
* Create an instance of an object into which JSON object entries are
* added.
*
* @return a new object instance
*/
OA
createObjectAccumulator
();
/**
* Adds the given entry to the given JSON object.
*
* @param object the JSON object accumulator to which the entry will be added
* @param key the key of the entry
* @param value the value of the entry
* @throws JSONException may be thrown if a duplicate key is encountered
*/
void
addValue
(
OA
object
,
String
key
,
Object
value
)
throws
JSONException
;
/**
* Adds a JSON null entry to the given JSON object. Implementations may
* choose to add a sentinel value, or omit the entry entirely.
*
* @param object the JSON object accumulator to which the entry will be added
* @param key the key of the entry
* @throws JSONException may be thrown if a duplicate key is encountered
*/
void
addNull
(
OA
object
,
String
key
)
throws
JSONException
;
/**
* Finish the given JSON object accumulator, returning the object result.
* This gives the collector an opportunity to create an immutable result.
*
* @param accumulator the JSON object accumulator to be finished
* @return the finished object result
* @throws JSONException there was a problem finishing the object
*/
OR
finishObject
(
OA
accumulator
)
throws
JSONException
;
/**
* Create an instance of an object into which JSON array entries are
* added.
*
* @return a new array instance
*/
AA
createArrayAccumulator
();
/**
* Adds the given value to the given JSON array accumulator.
*
* @param array the JSON array accumulator to which the value will be added
* @param value the value to be added
*/
void
addValue
(
AA
array
,
Object
value
)
throws
JSONException
;
/**
* Adds a JSON null value to the given JSON array accumulator.
* Implementations can choose the sentinel value to be added.
*
* @param array the JSON array accumulator to which the null value
* will be added
*/
void
addNull
(
AA
array
)
throws
JSONException
;
/**
* Finish the given JSON array accumulator, returning the array result.
* This gives the collector an opportunity to create an immutable result.
*
* @param accumulator the JSON array accumulator to be finished
* @return the finished array result
* @throws JSONException there was a problem finishing the array
*/
AR
finishArray
(
AA
accumulator
)
throws
JSONException
;
/**
* Provide a null value for circumstances where JSON null is the complete
* result of a JSON parse.
*
* @return a JSON null value
*/
Object
nullValue
();
}
Back
|
FazBrowse Home
|
New Git URL