🔨 cleanup
This commit is contained in:
parent
9d6b3731b9
commit
92f7295063
10 changed files with 34 additions and 995 deletions
|
@ -1,275 +0,0 @@
|
||||||
{
|
|
||||||
"data3":"ColreUHAtuYoUOx1N4ZloouQt2o6ugnUT6eYtS10gu7niM8i0vEiNufpk1RlMQXaHXlIwQBDsMFDFUQcFeg2vW5eD259Xm",
|
|
||||||
"data4":"zCxriJhL726WNNTdJJzurgSA8vKT6rHA0cFCb9koZcLUMXg4rmoXVPqIHWYaCV0ovl2t6xm7I1Hm36jXpLlXEb8fRfbwBeTW2V0OAsVqYH8eAT",
|
|
||||||
"data0":"9EVqHm5ARqcEB5jq2D14U2bCJPyBY0JWDr1Tjh8gTB0sWUNjqYiWDxFzlx6S",
|
|
||||||
"data7":"Bi1ujcgEvfADfBeyZudE7nwxc3Ik8qpYjsJIfKmwOMEbV2L3Bi0x2tcRpGuf4fiyvIbypDvJN1PPdQtfQW1Gv6zccXHwwZwKzUq6",
|
|
||||||
"data5":{
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
275045,
|
|
||||||
703447,
|
|
||||||
50156,
|
|
||||||
685803,
|
|
||||||
147958,
|
|
||||||
941747,
|
|
||||||
905651,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
],
|
|
||||||
"float1":76.572,
|
|
||||||
"float2":83.5299,
|
|
||||||
"nested1":{
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
275045,
|
|
||||||
703447,
|
|
||||||
50156,
|
|
||||||
685803,
|
|
||||||
147958,
|
|
||||||
941747,
|
|
||||||
905651,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
],
|
|
||||||
"floats":[
|
|
||||||
43121609.5543,
|
|
||||||
99454976.3019,
|
|
||||||
32945584.756,
|
|
||||||
18122905.9212,
|
|
||||||
45893183.44,
|
|
||||||
63052200.6225,
|
|
||||||
69032152.6897,
|
|
||||||
3748217.6946,
|
|
||||||
75449850.474,
|
|
||||||
37111527.415,
|
|
||||||
84852536.859,
|
|
||||||
32906366.487,
|
|
||||||
27027600.417,
|
|
||||||
63874310.5614,
|
|
||||||
39440408.51,
|
|
||||||
97176857.1716,
|
|
||||||
97438252.1171,
|
|
||||||
49728043.5056,
|
|
||||||
40818570.245,
|
|
||||||
41415831.8949,
|
|
||||||
24796297.4251,
|
|
||||||
2819085.3449,
|
|
||||||
84263963.4848,
|
|
||||||
74503228.6878,
|
|
||||||
67925677.403,
|
|
||||||
4758851.9417,
|
|
||||||
75227407.9214,
|
|
||||||
76946667.8403,
|
|
||||||
72518275.9469,
|
|
||||||
94167085.9588,
|
|
||||||
75883067.8321,
|
|
||||||
27389831.6101,
|
|
||||||
57987075.5053,
|
|
||||||
1298995.2674,
|
|
||||||
14590614.6939,
|
|
||||||
45292214.2242,
|
|
||||||
3332166.364,
|
|
||||||
53784167.729,
|
|
||||||
25193846.1867,
|
|
||||||
81456965.477,
|
|
||||||
68532032.39,
|
|
||||||
73820009.7952,
|
|
||||||
57736110.5717,
|
|
||||||
37304166.7363,
|
|
||||||
20054244.864,
|
|
||||||
29746392.7397,
|
|
||||||
86467624.6,
|
|
||||||
45192685.8793,
|
|
||||||
44008816.5186,
|
|
||||||
1861872.8736,
|
|
||||||
14595859.467,
|
|
||||||
87795257.6703,
|
|
||||||
57768720.8303,
|
|
||||||
18290154.3126,
|
|
||||||
45893183.44,
|
|
||||||
63052200.6225,
|
|
||||||
69032152.6897,
|
|
||||||
3748217.6946,
|
|
||||||
75449850.474,
|
|
||||||
37111527.415,
|
|
||||||
84852536.859,
|
|
||||||
32906366.487,
|
|
||||||
27027600.417,
|
|
||||||
63874310.5614,
|
|
||||||
39440408.51,
|
|
||||||
97176857.1716,
|
|
||||||
97438252.1171,
|
|
||||||
49728043.5056,
|
|
||||||
40818570.245,
|
|
||||||
41415831.8949,
|
|
||||||
24796297.4251,
|
|
||||||
2819085.3449,
|
|
||||||
84263963.4848,
|
|
||||||
74503228.6878,
|
|
||||||
67925677.403,
|
|
||||||
4758851.9417,
|
|
||||||
75227407.9214,
|
|
||||||
76946667.8403,
|
|
||||||
72518275.9469,
|
|
||||||
94167085.9588,
|
|
||||||
75883067.8321,
|
|
||||||
27389831.6101,
|
|
||||||
57987075.5053,
|
|
||||||
1298995.2674,
|
|
||||||
80858801.2712,
|
|
||||||
98262252.4656,
|
|
||||||
51612877.944,
|
|
||||||
33397812.7835,
|
|
||||||
36089655.3049,
|
|
||||||
50164685.8153,
|
|
||||||
16852105.5192,
|
|
||||||
61171929.752,
|
|
||||||
86376339.7175,
|
|
||||||
73009014.5521,
|
|
||||||
7397302.331,
|
|
||||||
34345128.9589,
|
|
||||||
98343269.4418,
|
|
||||||
95039116.9058,
|
|
||||||
44833102.5752,
|
|
||||||
51052997.8873,
|
|
||||||
22719195.6783,
|
|
||||||
64883244.8699
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"nested2":{
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
275045,
|
|
||||||
703447,
|
|
||||||
50156,
|
|
||||||
685803,
|
|
||||||
147958,
|
|
||||||
941747,
|
|
||||||
905651,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
],
|
|
||||||
"float1":76.572,
|
|
||||||
"float2":83.5299
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"strings":[
|
|
||||||
"edx5XzRkPVeEW2MBQzQMcUSuMI4FntjhlJ9VGhQaBHKPEazAaT",
|
|
||||||
"2fQUbzRUax4A",
|
|
||||||
"jURcBZ0vrJcmf2roZUMzZJQoTsKZDIdj7KhO7itskKvM80jBU9",
|
|
||||||
"8jKLmo3N2zYdKyTyfTczfr2x6bPaarorlnTNJ7r8lIkiZyBvrP",
|
|
||||||
"jbUeAVOdBSPzYmYhH0sabUHUH39O5e",
|
|
||||||
"I8yAQKZsyZhMfpzWjArQU9pQ6PfU6b14q2eWvQjtCUdgAUxFjg",
|
|
||||||
"97N8ZmGcxRZO4ZabzRRcY4KVHqxJwQ8qY",
|
|
||||||
"0DtY1aWXmUfJENt9rYW9",
|
|
||||||
"DtpBUEppPwMnWexi8eIIxlXRO3GUpPgeNFG9ONpWJYvk8xBkVj",
|
|
||||||
"YsX8V2xOrTw6LhNIMMhO4F4VXFyXUXFr66L3sTkLWgFA9NZuBV",
|
|
||||||
"fKYYthv8iFvaYoFoYZyB",
|
|
||||||
"zGuLsPXoJqMbO4PcePteZfDMYFXdWtvNF8WvaplXypsd6"
|
|
||||||
],
|
|
||||||
"data1":"9EVqHm5ARqcEB5jq21v2g0jVcG9CXB0Abk7uAF4NHYyTzeF3TnHhpZBECD14U2bCJPyBY0JWDr1Tjh8gTB0sWUNjqYiWDxFzlx6S",
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
275045,
|
|
||||||
703447,
|
|
||||||
50156,
|
|
||||||
685803,
|
|
||||||
147958,
|
|
||||||
941747,
|
|
||||||
905651,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
],
|
|
||||||
"more_nested":{
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
275045,
|
|
||||||
703447,
|
|
||||||
50156,
|
|
||||||
685803,
|
|
||||||
147958,
|
|
||||||
941747,
|
|
||||||
905651,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
],
|
|
||||||
"float1":76.572,
|
|
||||||
"float2":83.5299,
|
|
||||||
"nested1":{
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
275045,
|
|
||||||
703447,
|
|
||||||
50156,
|
|
||||||
685803,
|
|
||||||
147958,
|
|
||||||
941747,
|
|
||||||
905651,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"nested2":{
|
|
||||||
"strings":[
|
|
||||||
"2fQUbzRUax4A",
|
|
||||||
"jURcBZ0vrJcmf2roZUMzZJQoTsKZDIdj7KhO7itskKvM80jBU9",
|
|
||||||
"8jKLmo3N2zYdKyTyfTczfr2x6bPaarorlnTNJ7r8lIkiZyBvrP",
|
|
||||||
"jbUeAVOdBSPzYmYhH0sabUHUH39O5e",
|
|
||||||
"I8yAQKZsyZhMfpzWjArQU9pQ6PfU6b14q2eWvQjtCUdgAUxFjg",
|
|
||||||
"97N8ZmGcxRZO4ZabzRRcY4KVHqxJwQ8qY",
|
|
||||||
"0DtY1aWXmUfJENt9rYW9",
|
|
||||||
"DtpBUEppPwMnWexi8eIIxlXRO3GUpPgeNFG9ONpWJYvk8xBkVj",
|
|
||||||
"YsX8V2xOrTw6LhNIMMhO4F4VXFyXUXFr66L3sTkLWgFA9NZuBV",
|
|
||||||
"fKYYthv8iFvaYoFoYZyB",
|
|
||||||
"zGuLsPXoJqMbO4PcePteZfDMYFXdWtvNF8WvaplXypsd6"
|
|
||||||
],
|
|
||||||
"integers":[
|
|
||||||
756509,
|
|
||||||
116117,
|
|
||||||
776378,
|
|
||||||
57367,
|
|
||||||
530248,
|
|
||||||
312888,
|
|
||||||
740951,
|
|
||||||
988947,
|
|
||||||
450154
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,202 +0,0 @@
|
||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
"Media":{
|
|
||||||
"uri":"http://javaone.com/keynote.mpg",
|
|
||||||
"title":"Javaone Keynote",
|
|
||||||
"width":640,
|
|
||||||
"height":480,
|
|
||||||
"format":"video/mpg4",
|
|
||||||
"duration":18000000,
|
|
||||||
"size":58982400,
|
|
||||||
"bitrate":262144,
|
|
||||||
"persons":[
|
|
||||||
"Bill Gates",
|
|
||||||
"Steve Jobs"
|
|
||||||
],
|
|
||||||
"player":"JAVA",
|
|
||||||
"copyright":null
|
|
||||||
},
|
|
||||||
"Images":[
|
|
||||||
{
|
|
||||||
"uri":"http://javaone.com/keynote_large.jpg",
|
|
||||||
"title":"Javaone Keynote",
|
|
||||||
"width":1024,
|
|
||||||
"height":768,
|
|
||||||
"size":"LARGE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"uri":"http://javaone.com/keynote_small.jpg",
|
|
||||||
"title":"Javaone Keynote",
|
|
||||||
"width":320,
|
|
||||||
"height":240,
|
|
||||||
"size":"SMALL"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,357 +0,0 @@
|
||||||
Universal Binary JSON Java Library
|
|
||||||
http://ubjson.org
|
|
||||||
|
|
||||||
|
|
||||||
About this project...
|
|
||||||
---------------------
|
|
||||||
This code base is actively under development and implements the latest
|
|
||||||
specification of Universal Binary JSON (Draft 8).
|
|
||||||
|
|
||||||
I/O is handled through the following core classes:
|
|
||||||
|
|
||||||
* UBJOutputStream
|
|
||||||
* UBJInputStream
|
|
||||||
* UBJInputStreamParser
|
|
||||||
|
|
||||||
Additionally, if you are working with Java's NIO and need byte[]-based
|
|
||||||
results, you can wrap any of the above I/O classes around one of the highly
|
|
||||||
optimized custom byte[]-stream impls:
|
|
||||||
|
|
||||||
* ByteArrayInputStream (optimized for reuse, not from JDK)
|
|
||||||
* ByteArrayOutputStream (optimized for reuse, not from JDK)
|
|
||||||
|
|
||||||
If you are working with NIO and want maximum performance by using (and reusing)
|
|
||||||
direct ByteBuffers along with the UBJSON stream impls, take a look at the:
|
|
||||||
|
|
||||||
* ByteBufferInputStream
|
|
||||||
* ByteBufferOutputStream
|
|
||||||
|
|
||||||
classes. You can wrap any ByteBuffer source or destination with this stream type,
|
|
||||||
then wrap that stream type with a UBJSON stream impl and utilize the full
|
|
||||||
potential of Java's NIO with Universal Binary JSON without giving yourself an
|
|
||||||
ulcer.
|
|
||||||
|
|
||||||
This allows you to re-use the streams over and over again in a pool of reusable
|
|
||||||
streams for high-performance I/O with no object creation and garbage collection
|
|
||||||
overhead; a perfect match for high frequency NIO-based communication.
|
|
||||||
|
|
||||||
All of the core I/O classes have been stable for a while, with tweaks to make the
|
|
||||||
performance tighter and the error messages more informative over the last few
|
|
||||||
months.
|
|
||||||
|
|
||||||
More Java-convenient reflection-based I/O classes are available in the
|
|
||||||
org.ubjson.io.reflect package, but they are under active development.
|
|
||||||
|
|
||||||
There are other efforts (like utilities) in other sub portions of the source
|
|
||||||
tree. This project intends to eventually contain a multitude of UBJSON
|
|
||||||
abstraction layers, I/O methods and utilities.
|
|
||||||
|
|
||||||
|
|
||||||
Changelog
|
|
||||||
---------
|
|
||||||
02-10-12
|
|
||||||
* Added ByteBuffer input and output stream impls as compliments to the
|
|
||||||
re-usable byte[] stream impls.
|
|
||||||
|
|
||||||
Provides a fast translation layer between standard Java stream-IO and the
|
|
||||||
new Buffer-based I/O in NIO (including transparent support for using
|
|
||||||
ultra-fast direct ByteBuffers).
|
|
||||||
|
|
||||||
* Optimized some of the read/write methods by removing unnecessary bounds
|
|
||||||
checks that are done by subsequent Input or Output stream impls themselves.
|
|
||||||
|
|
||||||
02-09-12
|
|
||||||
* Fixed bug with readHugeAsBigInteger returning an invalid value and not
|
|
||||||
treating the underlying bytes as a string-encoded value.
|
|
||||||
|
|
||||||
* Removed implicit buffer.flip() at the end of StreamDecoder; there is no
|
|
||||||
way to know what the caller had planned for the buffer before reading all
|
|
||||||
the data back out. Also the flip was in the wrong place and in the case of
|
|
||||||
an empty decode request (length=0) the flip would not have been performed,
|
|
||||||
providing the caller with a "full" buffer of nothing.
|
|
||||||
|
|
||||||
* Rewrote all readHugeXXX method impls; now huge's can be read in as a
|
|
||||||
simple Number (BigInteger or BigDecimal) as well as raw bytes and even
|
|
||||||
decoded chars. Additionally the methods can even accept and use existing
|
|
||||||
buffers to write into to allow for tighter optimizations.
|
|
||||||
|
|
||||||
* Rewrote all readStringXXX methods using the same optimizations and
|
|
||||||
flexibility that readHuge methods now use.
|
|
||||||
|
|
||||||
02-07-12
|
|
||||||
More Memory and CPU optimizations across all the I/O impls.
|
|
||||||
|
|
||||||
* StreamDecoder was rewritten to no longer create a ByteBuffer on every
|
|
||||||
invocation and instead re-use the same one to decode from on every single call.
|
|
||||||
|
|
||||||
* StreamDecoder now requires the call to pass in a CharBuffer instance to hold
|
|
||||||
the result of the decode operation. This avoids the creation of a CharBuffer
|
|
||||||
and allows for large-scale optimization by re-using existing buffers between
|
|
||||||
calls.
|
|
||||||
|
|
||||||
* StreamEncoder was rewritten to no longer create a ByteBuffer on every
|
|
||||||
invocation either and now re-uses the same single instance over and over
|
|
||||||
again.
|
|
||||||
|
|
||||||
* UBJOutputStream writeHuge and writeString series of methods were all
|
|
||||||
rewritten to accept a CharBuffer in the rawest form (no longer char[]) to stop
|
|
||||||
hiding the fact that the underlying encode operation required one.
|
|
||||||
|
|
||||||
This gives the caller an opportunity to cache and re-use CharBuffers over
|
|
||||||
and over again if they can; otherwise this just pushes the CharBuffer.wrap()
|
|
||||||
call up to the caller instead of hiding it secretly in the method impl under
|
|
||||||
the guise of accepting a raw char[] (that it couldn't use directly).
|
|
||||||
|
|
||||||
For callers that can re-use buffers, this will lead to big performance gains
|
|
||||||
now that were previously impossible.
|
|
||||||
|
|
||||||
* UBJInputStream added readHuge and readString methods that accept an existing
|
|
||||||
CharBuffer argument to make use of the optimizations made in the Stream encoder
|
|
||||||
and decoder impls.
|
|
||||||
|
|
||||||
01-15-12
|
|
||||||
Huge performance boost for deserialization!
|
|
||||||
|
|
||||||
StreamDecoder previously used separate read and write buffers for decoding
|
|
||||||
bytes to chars including the resulting char[] that was returned to the caller.
|
|
||||||
This design required at least 1 full array copy before returning a result in
|
|
||||||
the best case and 2x full array copies before returning the result in the
|
|
||||||
worst case.
|
|
||||||
|
|
||||||
The rewrite removed the need for a write buffer entire as well as ALL array
|
|
||||||
copies; in the best OR worse case they never occur anymore.
|
|
||||||
|
|
||||||
Raw performance boost of roughly 25% in all UBJ I/O classes as a result.
|
|
||||||
|
|
||||||
12-01-11 through 01-24-12
|
|
||||||
A large amount of work has continued on the core I/O classes (stream impls)
|
|
||||||
to help make them not only faster and more robust, but also more helpful.
|
|
||||||
When errors are encountered in the streams, they are reported along with the
|
|
||||||
stream positions. This is critical for debugging problems with corrupt
|
|
||||||
formats.
|
|
||||||
|
|
||||||
Also provided ByteArray I/O stream classes that have the potential to provide
|
|
||||||
HUGE performance boosts for high frequency systems.
|
|
||||||
|
|
||||||
Both these classes (ByteArrayInputStream and ByteArrayOutputStream) are
|
|
||||||
reusable and when wrapped by a UBJInputStream or UBJOutputStream, the top
|
|
||||||
level UBJ streams implicitly become reusable as well.
|
|
||||||
|
|
||||||
Reusing the streams not only saves on object creation/GC cleanup but also
|
|
||||||
allows the caller to re-use the temporary byte[] used to translate to and
|
|
||||||
from the UBJ format, avoiding object churn entirely!
|
|
||||||
|
|
||||||
This optimized design was chosen to be intentionally performant when combined
|
|
||||||
with NIO implementations as the ByteBuffer's can be used to wrap() existing
|
|
||||||
outbound buffers (avoiding the most expensive part of a buffer) or use
|
|
||||||
array() to get access to the underlying buffer that needs to be written to
|
|
||||||
the stream.
|
|
||||||
|
|
||||||
In the case of direct ByteBuffers, there is no additional overhead added
|
|
||||||
because the calls to get or put are required anyway to pull or push the
|
|
||||||
values from the native memory location.
|
|
||||||
|
|
||||||
This approach allows the fastest implementation of Universal Binary JSON
|
|
||||||
I/O possible in the JVM whether you are using the standard IO (stream)
|
|
||||||
classes or the NIO (ByteBuffer) classes in the JDK.
|
|
||||||
|
|
||||||
Some ancillary work on UBJ-based command line utilities (viewers, converters,
|
|
||||||
etc.) has begun as well.
|
|
||||||
|
|
||||||
11-28-11
|
|
||||||
* Fixed UBJInputStreamParser implementation; nextType correctly implements
|
|
||||||
logic to skip existing element (if called back to back) as well as validate
|
|
||||||
the marker type it encounters before returning it to the caller.
|
|
||||||
|
|
||||||
* Modified IObjectReader contract; a Parser implementation is required to
|
|
||||||
make traversing the UBJ stream possible without knowing what type of element
|
|
||||||
is next.
|
|
||||||
|
|
||||||
11-27-11
|
|
||||||
* Streamlined ByteArrayOutputStream implementation to ensure the capacity
|
|
||||||
of the underlying byte[] is never grown unless absolutely necessary.
|
|
||||||
|
|
||||||
* Rewrote class Javadoc for ByteArrayOutputStream to include a code snippet
|
|
||||||
on how to use it.
|
|
||||||
|
|
||||||
11-26-11
|
|
||||||
* Fixed major bug in how 16, 32 and 64-bit integers are re-assembled when
|
|
||||||
read back from binary representations.
|
|
||||||
|
|
||||||
* Added a numeric test to specifically catch this error if it ever pops up
|
|
||||||
again.
|
|
||||||
|
|
||||||
* Optimized reading and writing of numeric values in Input and Output
|
|
||||||
stream implementations.
|
|
||||||
|
|
||||||
* Optimized ObjectWriter implementation by streamlining the numeric read/write
|
|
||||||
logic and removing the sub-optimal force-compression of on-disk storage.
|
|
||||||
|
|
||||||
* Fixed ObjectWriter to match exactly with the output written by
|
|
||||||
UBJOutputStream.
|
|
||||||
|
|
||||||
* Normalized all testing between I/O classes so they use the same classes
|
|
||||||
to ensure parity.
|
|
||||||
|
|
||||||
11-10-11
|
|
||||||
* DRAFT 8 Spec Support Added.
|
|
||||||
|
|
||||||
* Added support for the END marker (readEnd) to the InputStreams which is
|
|
||||||
required for proper unbounded-container support.
|
|
||||||
|
|
||||||
* Added support for the END marker (writeEnd) to UBJOutputStream.
|
|
||||||
|
|
||||||
UBJInputStreamParser must be used for properly support unbounded-containers
|
|
||||||
because you never know when the 'E' will be encountered marking the end;
|
|
||||||
so the caller needs to pay attention to the type marker that nextType()
|
|
||||||
returns and respond accordingly.
|
|
||||||
|
|
||||||
* Added readHugeAsBytes to InputStream implementations, allowing the bytes
|
|
||||||
used to represent a HUGE to be read in their raw form with no decoding.
|
|
||||||
|
|
||||||
This can save on processing as BigInteger and BigDecimal do their own decoding
|
|
||||||
of byte[] directly.
|
|
||||||
|
|
||||||
* Added readHugeAsChars to InputStream implementations, allowing a HUGE
|
|
||||||
value to be read in as a raw char[] without trying to decode it to a
|
|
||||||
BigInteger or BigDecimal.
|
|
||||||
|
|
||||||
* Added writeHuge(char[]) to support writing out HUGE values directly from
|
|
||||||
their raw char[] form without trying to decode from a BigInteger or
|
|
||||||
BigDecimal.
|
|
||||||
|
|
||||||
* readArrayLength and readObjectLenght were modified to return -1 when an
|
|
||||||
unbounded container length is encountered (255).
|
|
||||||
|
|
||||||
* Fixed UBJInputStreamParser.nextType to correctly skip past any NOOP
|
|
||||||
markers found in the underlying stream before returning a valid next type.
|
|
||||||
|
|
||||||
* Normalized all reading of "next byte" to the singular
|
|
||||||
UBJInputStream.nextMarker method -- correctly skips over NOOP until end of
|
|
||||||
stream OR until the next valid marker byte, then returns it.
|
|
||||||
|
|
||||||
* Modified readNull behavior to have no return type. It is already designed
|
|
||||||
to throw an exception when 'NULL' isn't found, no need for the additional
|
|
||||||
return type.
|
|
||||||
|
|
||||||
* Began work on a simple abstract representation of the UBJ data types as
|
|
||||||
objects that can be assembled into maps and lists and written/read easily
|
|
||||||
using the IO package.
|
|
||||||
|
|
||||||
This is intended to be a higher level of abstraction than the IO streams,
|
|
||||||
but lower level (and faster) than the reflection-based work that inspects
|
|
||||||
user-provided classes.
|
|
||||||
|
|
||||||
* Refactored StreamDecoder and StreamEncoder into the core IO package,
|
|
||||||
because they are part of core IO.
|
|
||||||
|
|
||||||
* Refactored StreamParser into the io.parser package to more clearly denote
|
|
||||||
its relationship to the core IO classes. It is a slightly higher level
|
|
||||||
abstraction ontop of the core IO, having it along side the core IO classes
|
|
||||||
while .reflect was a subpackage was confusing and suggested that
|
|
||||||
StreamParser was somehow intended as a swapable replacement for
|
|
||||||
UBJInputStream which is not how it is intended to be used.
|
|
||||||
|
|
||||||
* Refactored org.ubjson.reflect to org.ubjson.io.reflect to more correctly
|
|
||||||
communicate the relationship -- the reflection-based classes are built on
|
|
||||||
the core IO classes and are just a higher abstraction to interact with UBJSON
|
|
||||||
with.
|
|
||||||
|
|
||||||
* Renamed IDataType to IMarkerType to follow the naming convention for the
|
|
||||||
marker bytes set forth by the spec doc.
|
|
||||||
|
|
||||||
|
|
||||||
10-14-11
|
|
||||||
* ObjectWriter rewritten and works correctly. Tested with the example test
|
|
||||||
data and wrote out the compressed and uncompressed formats files correctly
|
|
||||||
from their original object representation.
|
|
||||||
|
|
||||||
* Added support for reading and writing huge values as BigInteger as well
|
|
||||||
as BigDecimal.
|
|
||||||
|
|
||||||
* Added automatic numeric storage compression support to ObjectWriter - based
|
|
||||||
on the numeric value (regardless of type) the value will be stored as the
|
|
||||||
smallest possible representation in the UBJ format if requested.
|
|
||||||
|
|
||||||
* Added mapping support for BigDecimal, BigInteger, AtomicInteger and
|
|
||||||
AtomicLong to ObjectWriter.
|
|
||||||
|
|
||||||
* Added readNull and readBoolean to the UBJInputStream and
|
|
||||||
UBJInputStreamParser implementations to make the API feel complete and feel
|
|
||||||
more natural to use.
|
|
||||||
|
|
||||||
10-10-11
|
|
||||||
* com.ubjson.io AND com.ubjson.io.charset are finalized against the
|
|
||||||
Draft 8 specification.
|
|
||||||
|
|
||||||
* The lowest level UBJInput/OuputStream classes were tightened up to run as
|
|
||||||
fast as possible showing an 800ns-per-op improvement in speed.
|
|
||||||
|
|
||||||
* Profiled core UBJInput/OuputStream classes using HPROF for a few million
|
|
||||||
iterations and found no memory leaks and no performance traps; everything at
|
|
||||||
that low level is as tight as it can be.
|
|
||||||
|
|
||||||
* Stream-parsing facilities were moved out of the overloaded UBJInputStream
|
|
||||||
class and into their own subclass called UBJInputStreamParser which operates
|
|
||||||
exactly like a pull-parsing scenario (calling nextType then switching on the
|
|
||||||
value and pulling the appropriate value out of the stream).
|
|
||||||
|
|
||||||
* More example testing/benchmarking data checked into /test/java/com/ubjson/data
|
|
||||||
|
|
||||||
Will begin reworking the Reflection based Object mapping in the
|
|
||||||
org.ubjson.reflect package now that the core IO classes are finalized.
|
|
||||||
|
|
||||||
* Removed all old scratch test files from the org.ubjson package, this was
|
|
||||||
confusing.
|
|
||||||
|
|
||||||
09-27-11
|
|
||||||
* Initial check-in of core IO classes to read/write spec.
|
|
||||||
|
|
||||||
|
|
||||||
Status
|
|
||||||
------
|
|
||||||
Using the standard UBJInputStream, UBJInputStreamParser and UBJOutputStream
|
|
||||||
implementations to manually read/write UBJ objects is stable and tuned for
|
|
||||||
optimal performance.
|
|
||||||
|
|
||||||
Automatic mapping of objects to/from UBJ format via the reflection-based
|
|
||||||
implementation is not tuned yet. Writing is implemented, but not tuned for
|
|
||||||
optimal performance and reading still has to be written.
|
|
||||||
|
|
||||||
* org.ubjson.io - STABLE
|
|
||||||
* org.ubjson.io.parser - STABLE
|
|
||||||
* org.ubjson.io.reflect - ALPHA
|
|
||||||
* org.ubjson.model - BETA
|
|
||||||
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
This library is released under the Apache 2 License. See LICENSE.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
This project represents (the official?) Java implementations of the
|
|
||||||
Universal Binary JSON specification: http://ubjson.org
|
|
||||||
|
|
||||||
|
|
||||||
Example
|
|
||||||
-------
|
|
||||||
Comming soon...
|
|
||||||
|
|
||||||
|
|
||||||
Performance
|
|
||||||
-----------
|
|
||||||
Comming soon...
|
|
||||||
|
|
||||||
|
|
||||||
Reference
|
|
||||||
---------
|
|
||||||
Universal Binary JSON Specification - http://ubjson.org
|
|
||||||
JSON Specification - http://json.org
|
|
||||||
|
|
||||||
|
|
||||||
Contact
|
|
||||||
-------
|
|
||||||
If you have questions, comments or bug reports for this software please contact
|
|
||||||
us at: software@thebuzzmedia.com
|
|
|
@ -1,80 +0,0 @@
|
||||||
{
|
|
||||||
"id_str":"121769183821312000",
|
|
||||||
"retweet_count":0,
|
|
||||||
"in_reply_to_screen_name":null,
|
|
||||||
"in_reply_to_user_id":null,
|
|
||||||
"truncated":false,
|
|
||||||
"retweeted":false,
|
|
||||||
"possibly_sensitive":false,
|
|
||||||
"in_reply_to_status_id_str":null,
|
|
||||||
"entities":{
|
|
||||||
"urls":[
|
|
||||||
{
|
|
||||||
"url":"http:\/\/t.co\/wtioKkFS",
|
|
||||||
"display_url":"dlvr.it\/pWQy2",
|
|
||||||
"indices":[
|
|
||||||
33,
|
|
||||||
53
|
|
||||||
],
|
|
||||||
"expanded_url":"http:\/\/dlvr.it\/pWQy2"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"hashtags":[
|
|
||||||
|
|
||||||
],
|
|
||||||
"user_mentions":[
|
|
||||||
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"geo":null,
|
|
||||||
"place":null,
|
|
||||||
"coordinates":null,
|
|
||||||
"created_at":"Thu Oct 06 02:10:10 +0000 2011",
|
|
||||||
"in_reply_to_user_id_str":null,
|
|
||||||
"user":{
|
|
||||||
"id_str":"77029015",
|
|
||||||
"profile_link_color":"009999",
|
|
||||||
"protected":false,
|
|
||||||
"url":"http:\/\/www.techday.co.nz\/",
|
|
||||||
"screen_name":"techdaynz",
|
|
||||||
"statuses_count":5144,
|
|
||||||
"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1479058408\/techday_48_normal.jpg",
|
|
||||||
"name":"TechDay",
|
|
||||||
"default_profile_image":false,
|
|
||||||
"default_profile":false,
|
|
||||||
"profile_background_color":"131516",
|
|
||||||
"lang":"en",
|
|
||||||
"profile_background_tile":false,
|
|
||||||
"utc_offset":43200,
|
|
||||||
"description":"",
|
|
||||||
"is_translator":false,
|
|
||||||
"show_all_inline_media":false,
|
|
||||||
"contributors_enabled":false,
|
|
||||||
"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/75893948\/Techday_Background.jpg",
|
|
||||||
"created_at":"Thu Sep 24 20:02:01 +0000 2009",
|
|
||||||
"profile_sidebar_fill_color":"efefef",
|
|
||||||
"follow_request_sent":false,
|
|
||||||
"friends_count":3215,
|
|
||||||
"followers_count":3149,
|
|
||||||
"time_zone":"Auckland",
|
|
||||||
"favourites_count":0,
|
|
||||||
"profile_sidebar_border_color":"eeeeee",
|
|
||||||
"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1479058408\/techday_48_normal.jpg",
|
|
||||||
"following":false,
|
|
||||||
"geo_enabled":false,
|
|
||||||
"notifications":false,
|
|
||||||
"profile_use_background_image":true,
|
|
||||||
"listed_count":151,
|
|
||||||
"verified":false,
|
|
||||||
"profile_text_color":"333333",
|
|
||||||
"location":"Ponsonby, Auckland, NZ",
|
|
||||||
"id":77029015,
|
|
||||||
"profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/75893948\/Techday_Background.jpg"
|
|
||||||
},
|
|
||||||
"contributors":null,
|
|
||||||
"source":"\u003Ca href=\"http:\/\/dlvr.it\" rel=\"nofollow\"\u003Edlvr.it\u003C\/a\u003E",
|
|
||||||
"in_reply_to_status_id":null,
|
|
||||||
"favorited":false,
|
|
||||||
"id":121769183821312000,
|
|
||||||
"text":"Apple CEO's message to employees http:\/\/t.co\/wtioKkFS"
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
https://github.com/ubjson/universal-binary-json-java/tree/master/src/test/resources/org/ubjson
|
|
|
@ -1165,13 +1165,6 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
SECTION("errors")
|
SECTION("errors")
|
||||||
{
|
{
|
||||||
SECTION("empty byte vector")
|
|
||||||
{
|
|
||||||
CHECK_THROWS_AS(json::from_ubjson(std::vector<uint8_t>()), json::parse_error&);
|
|
||||||
CHECK_THROWS_WITH(json::from_ubjson(std::vector<uint8_t>()),
|
|
||||||
"[json.exception.parse_error.110] parse error at 1: unexpected end of input");
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("strict mode")
|
SECTION("strict mode")
|
||||||
{
|
{
|
||||||
std::vector<uint8_t> vec = {'Z', 'Z'};
|
std::vector<uint8_t> vec = {'Z', 'Z'};
|
||||||
|
@ -1335,6 +1328,13 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
SECTION("parse errors")
|
SECTION("parse errors")
|
||||||
{
|
{
|
||||||
|
SECTION("empty byte vector")
|
||||||
|
{
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(std::vector<uint8_t>()), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(std::vector<uint8_t>()),
|
||||||
|
"[json.exception.parse_error.110] parse error at 1: unexpected end of input");
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("char")
|
SECTION("char")
|
||||||
{
|
{
|
||||||
SECTION("eof after C byte")
|
SECTION("eof after C byte")
|
||||||
|
@ -1477,8 +1477,9 @@ TEST_CASE("UBJSON")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// use this testcase outside [hide] to run it with Valgrind
|
// use this testcase outside [hide] to run it with Valgrind
|
||||||
TEST_CASE("single CBOR roundtrip")
|
TEST_CASE("single UBJSON roundtrip")
|
||||||
{
|
{
|
||||||
SECTION("sample.json")
|
SECTION("sample.json")
|
||||||
{
|
{
|
||||||
|
@ -1489,11 +1490,11 @@ TEST_CASE("single CBOR roundtrip")
|
||||||
json j1 = json::parse(f_json);
|
json j1 = json::parse(f_json);
|
||||||
|
|
||||||
// parse MessagePack file
|
// parse MessagePack file
|
||||||
std::ifstream f_cbor(filename + ".cbor", std::ios::binary);
|
std::ifstream f_ubjson(filename + ".ubj", std::ios::binary);
|
||||||
std::vector<uint8_t> packed((std::istreambuf_iterator<char>(f_cbor)),
|
std::vector<uint8_t> packed((std::istreambuf_iterator<char>(f_ubjson)),
|
||||||
std::istreambuf_iterator<char>());
|
std::istreambuf_iterator<char>());
|
||||||
json j2;
|
json j2;
|
||||||
CHECK_NOTHROW(j2 = json::from_cbor(packed));
|
CHECK_NOTHROW(j2 = json::from_ubjson(packed));
|
||||||
|
|
||||||
// compare parsed JSON values
|
// compare parsed JSON values
|
||||||
CHECK(j1 == j2);
|
CHECK(j1 == j2);
|
||||||
|
@ -1503,29 +1504,31 @@ TEST_CASE("single CBOR roundtrip")
|
||||||
SECTION("std::ostringstream")
|
SECTION("std::ostringstream")
|
||||||
{
|
{
|
||||||
std::ostringstream ss;
|
std::ostringstream ss;
|
||||||
json::to_cbor(j1, ss);
|
json::to_ubjson(j1, ss);
|
||||||
json j3 = json::from_cbor(ss.str());
|
json j3 = json::from_ubjson(ss.str());
|
||||||
CHECK(j1 == j3);
|
CHECK(j1 == j3);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("std::string")
|
SECTION("std::string")
|
||||||
{
|
{
|
||||||
std::string s;
|
std::string s;
|
||||||
json::to_cbor(j1, s);
|
json::to_ubjson(j1, s);
|
||||||
json j3 = json::from_cbor(s);
|
json j3 = json::from_ubjson(s);
|
||||||
CHECK(j1 == j3);
|
CHECK(j1 == j3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check with different start index
|
// check with different start index
|
||||||
packed.insert(packed.begin(), 5, 0xff);
|
// packed.insert(packed.begin(), 5, 0xff);
|
||||||
CHECK(j1 == json::from_cbor(packed.begin() + 5, packed.end()));
|
// CHECK(j1 == json::from_ubjson(packed.begin() + 5, packed.end()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
TEST_CASE("CBOR roundtrips", "[hide]")
|
/*
|
||||||
|
TEST_CASE("UBJSON roundtrips", "[hide]")
|
||||||
{
|
{
|
||||||
SECTION("input from flynn")
|
SECTION("input from py-ubjson")
|
||||||
{
|
{
|
||||||
for (std::string filename :
|
for (std::string filename :
|
||||||
{
|
{
|
||||||
|
@ -1684,13 +1687,13 @@ TEST_CASE("CBOR roundtrips", "[hide]")
|
||||||
|
|
||||||
SECTION("std::vector<uint8_t>")
|
SECTION("std::vector<uint8_t>")
|
||||||
{
|
{
|
||||||
// parse CBOR file
|
// parse UBJSON file
|
||||||
std::ifstream f_cbor(filename + ".cbor", std::ios::binary);
|
std::ifstream f_ubjson(filename + ".ubj", std::ios::binary);
|
||||||
std::vector<uint8_t> packed(
|
std::vector<uint8_t> packed(
|
||||||
(std::istreambuf_iterator<char>(f_cbor)),
|
(std::istreambuf_iterator<char>(f_ubjson)),
|
||||||
std::istreambuf_iterator<char>());
|
std::istreambuf_iterator<char>());
|
||||||
json j2;
|
json j2;
|
||||||
CHECK_NOTHROW(j2 = json::from_cbor(packed));
|
CHECK_NOTHROW(j2 = json::from_ubjson(packed));
|
||||||
|
|
||||||
// compare parsed JSON values
|
// compare parsed JSON values
|
||||||
CHECK(j1 == j2);
|
CHECK(j1 == j2);
|
||||||
|
@ -1698,10 +1701,10 @@ TEST_CASE("CBOR roundtrips", "[hide]")
|
||||||
|
|
||||||
SECTION("std::ifstream")
|
SECTION("std::ifstream")
|
||||||
{
|
{
|
||||||
// parse CBOR file
|
// parse UBJSON file
|
||||||
std::ifstream f_cbor(filename + ".cbor", std::ios::binary);
|
std::ifstream f_ubjson(filename + ".ubj", std::ios::binary);
|
||||||
json j2;
|
json j2;
|
||||||
CHECK_NOTHROW(j2 = json::from_cbor(f_cbor));
|
CHECK_NOTHROW(j2 = json::from_ubjson(f_ubjson));
|
||||||
|
|
||||||
// compare parsed JSON values
|
// compare parsed JSON values
|
||||||
CHECK(j1 == j2);
|
CHECK(j1 == j2);
|
||||||
|
@ -1709,36 +1712,21 @@ TEST_CASE("CBOR roundtrips", "[hide]")
|
||||||
|
|
||||||
SECTION("uint8_t* and size")
|
SECTION("uint8_t* and size")
|
||||||
{
|
{
|
||||||
// parse CBOR file
|
// parse UBJSON file
|
||||||
std::ifstream f_cbor(filename + ".cbor", std::ios::binary);
|
std::ifstream f_ubjson(filename + ".ubj", std::ios::binary);
|
||||||
std::vector<uint8_t> packed(
|
std::vector<uint8_t> packed(
|
||||||
(std::istreambuf_iterator<char>(f_cbor)),
|
(std::istreambuf_iterator<char>(f_ubjson)),
|
||||||
std::istreambuf_iterator<char>());
|
std::istreambuf_iterator<char>());
|
||||||
json j2;
|
json j2;
|
||||||
CHECK_NOTHROW(j2 = json::from_cbor({packed.data(), packed.size()}));
|
CHECK_NOTHROW(j2 = json::from_ubjson({packed.data(), packed.size()}));
|
||||||
|
|
||||||
// compare parsed JSON values
|
// compare parsed JSON values
|
||||||
CHECK(j1 == j2);
|
CHECK(j1 == j2);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("output to output adapters")
|
|
||||||
{
|
|
||||||
// parse CBOR file
|
|
||||||
std::ifstream f_cbor(filename + ".cbor", std::ios::binary);
|
|
||||||
std::vector<uint8_t> packed(
|
|
||||||
(std::istreambuf_iterator<char>(f_cbor)),
|
|
||||||
std::istreambuf_iterator<char>());
|
|
||||||
|
|
||||||
SECTION("std::vector<uint8_t>")
|
|
||||||
{
|
|
||||||
std::vector<uint8_t> vec;
|
|
||||||
json::to_cbor(j1, vec);
|
|
||||||
CHECK(vec == packed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
TEST_CASE("Universal Binary JSON Specification Examples 1")
|
TEST_CASE("Universal Binary JSON Specification Examples 1")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue