Skip to content

Commit 4dd9f75

Browse files
committed
update Java version
1 parent 9bd5da6 commit 4dd9f75

File tree

8 files changed

+684
-63
lines changed

8 files changed

+684
-63
lines changed

api/com.upokecenter.cbor.CBORObject.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@
33
public final class CBORObject extends java.lang.Object implements java.lang.Comparable<CBORObject>
44

55
<p>Represents an object in Concise Binary Object Representation (CBOR) and
6-
contains methods for reading and writing CBOR data. CBOR is defined in
7-
RFC 8949.</p><p> </p><p><b>Converting CBOR objects</b></p> <p>There are
8-
many ways to get a CBOR object, including from bytes, objects, streams
9-
and JSON, as described below.</p> <p><b>To and from byte arrays:</b>
10-
The CBORObject.DecodeFromBytes method converts a byte array in CBOR
11-
format to a CBOR object. The EncodeToBytes method converts a CBOR
12-
object to its corresponding byte array in CBOR format.</p> <p><b>To
13-
and from data streams:</b> The CBORObject.Write methods write many
14-
kinds of objects to a data stream, including numbers, CBOR objects,
15-
strings, and arrays of numbers and strings. The CBORObject.Read method
16-
reads a CBOR object from a data stream.</p> <p><b>To and from other
6+
contains methods for reading and writing CBOR data. CBOR is an
7+
Internet Standard and defined in RFC 8949.</p><p> </p><p><b>Converting
8+
CBOR objects</b></p> <p>There are many ways to get a CBOR object,
9+
including from bytes, objects, streams and JSON, as described
10+
below.</p> <p><b>To and from byte arrays:</b> The
11+
CBORObject.DecodeFromBytes method converts a byte array in CBOR format
12+
to a CBOR object. The EncodeToBytes method converts a CBOR object to
13+
its corresponding byte array in CBOR format.</p> <p><b>To and from
14+
data streams:</b> The CBORObject.Write methods write many kinds of
15+
objects to a data stream, including numbers, CBOR objects, strings,
16+
and arrays of numbers and strings. The CBORObject.Read method reads a
17+
CBOR object from a data stream.</p> <p><b>To and from other
1718
objects:</b> The <code>CBORObject.FromObject</code> method converts many
1819
kinds of objects to a CBOR object, including numbers, strings, and
1920
arrays and maps of numbers and strings. Methods like AsNumber and

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
</properties>
8888
<licenses>
8989
<license>
90-
<name>CC0 Universal</name>
90+
<name>CC0-1.0</name>
9191
<distribution>repo</distribution>
9292
<url>http://www.creativecommons.org/publicdomain/zero/1.0/</url>
9393
</license>

src/main/java/com/upokecenter/cbor/CBORObject.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,18 @@ licensed under Creative Commons Zero (CC0):
1919

2020
/**
2121
* <p>Represents an object in Concise Binary Object Representation (CBOR) and
22-
* contains methods for reading and writing CBOR data. CBOR is defined in
23-
* RFC 8949.</p><p> <p><b>Converting CBOR objects</b></p> <p>There are
24-
* many ways to get a CBOR object, including from bytes, objects, streams
25-
* and JSON, as described below.</p> <p><b>To and from byte arrays:</b>
26-
* The CBORObject.DecodeFromBytes method converts a byte array in CBOR
27-
* format to a CBOR object. The EncodeToBytes method converts a CBOR
28-
* object to its corresponding byte array in CBOR format.</p> <p><b>To
29-
* and from data streams:</b> The CBORObject.Write methods write many
30-
* kinds of objects to a data stream, including numbers, CBOR objects,
31-
* strings, and arrays of numbers and strings. The CBORObject.Read method
32-
* reads a CBOR object from a data stream.</p> <p><b>To and from other
22+
* contains methods for reading and writing CBOR data. CBOR is an
23+
* Internet Standard and defined in RFC 8949.</p><p> <p><b>Converting
24+
* CBOR objects</b></p> <p>There are many ways to get a CBOR object,
25+
* including from bytes, objects, streams and JSON, as described
26+
* below.</p> <p><b>To and from byte arrays:</b> The
27+
* CBORObject.DecodeFromBytes method converts a byte array in CBOR format
28+
* to a CBOR object. The EncodeToBytes method converts a CBOR object to
29+
* its corresponding byte array in CBOR format.</p> <p><b>To and from
30+
* data streams:</b> The CBORObject.Write methods write many kinds of
31+
* objects to a data stream, including numbers, CBOR objects, strings,
32+
* and arrays of numbers and strings. The CBORObject.Read method reads a
33+
* CBOR object from a data stream.</p> <p><b>To and from other
3334
* objects:</b> The <code>CBORObject.FromObject</code> method converts many
3435
* kinds of objects to a CBOR object, including numbers, strings, and
3536
* arrays and maps of numbers and strings. Methods like AsNumber and
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package com.upokecenter.test;
2+
/*
3+
Written by Peter O.
4+
Any copyright to this work is released to the Public Domain.
5+
In case this is not possible, this work is also
6+
licensed under Creative Commons Zero (CC0):
7+
http://creativecommons.org/publicdomain/zero/1.0/
8+
If you like this, you should donate to Peter O.
9+
at: http://peteroupc.github.io/
10+
*/
11+
12+
import com.upokecenter.cbor.*;
13+
14+
final class Base64 {
15+
private Base64() {
16+
}
17+
private static final String Base64URL =
18+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
19+
20+
private static final String Base64Classic =
21+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
22+
23+
public static void WriteBase64(
24+
StringOutput writer,
25+
byte[] data,
26+
int offset,
27+
int count,
28+
boolean padding) throws java.io.IOException {
29+
WriteBase64(writer, data, offset, count, true, padding);
30+
}
31+
32+
public static void WriteBase64URL(
33+
StringOutput writer,
34+
byte[] data,
35+
int offset,
36+
int count,
37+
boolean padding) throws java.io.IOException {
38+
WriteBase64(writer, data, offset, count, false, padding);
39+
}
40+
41+
private static void WriteBase64(
42+
StringOutput writer,
43+
byte[] data,
44+
int offset,
45+
int count,
46+
boolean classic,
47+
boolean padding) throws java.io.IOException {
48+
if (writer == null) {
49+
throw new NullPointerException("writer");
50+
}
51+
if (offset < 0) {
52+
throw new IllegalArgumentException("offset(" + offset + ") is less than " +
53+
"0 ");
54+
}
55+
if (offset > data.length) {
56+
throw new IllegalArgumentException("offset(" + offset + ") is more than " +
57+
data.length);
58+
}
59+
if (count < 0) {
60+
throw new IllegalArgumentException("count(" + count + ") is less than " +
61+
"0 ");
62+
}
63+
if (count > data.length) {
64+
throw new IllegalArgumentException("count(" + count + ") is more than " +
65+
data.length);
66+
}
67+
if (data.length - offset < count) {
68+
throw new IllegalArgumentException("data's length minus " + offset + "(" +
69+
(data.length - offset) + ") is less than " + count);
70+
}
71+
String alphabet = classic ? Base64Classic : Base64URL;
72+
int length = offset + count;
73+
int i = offset;
74+
byte[] buffer = new byte[32];
75+
int bufferOffset = 0;
76+
for (i = offset; i < (length - 2); i += 3) {
77+
if (bufferOffset >= buffer.length) {
78+
writer.WriteAscii(buffer, 0, bufferOffset);
79+
bufferOffset = 0;
80+
}
81+
buffer[bufferOffset++] = (byte)alphabet.charAt((data[i] >> 2) & 63);
82+
buffer[bufferOffset++] = (byte)alphabet.charAt(((data[i] & 3) << 4) +
83+
((data[i + 1] >> 4) & 15));
84+
buffer[bufferOffset++] = (byte)alphabet.charAt(((data[i + 1] & 15) << 2) +
85+
((data[i +
86+
2] >> 6) & 3));
87+
buffer[bufferOffset++] = (byte)alphabet.charAt(data[i + 2] & 63);
88+
}
89+
int lenmod3 = count % 3;
90+
if (lenmod3 != 0) {
91+
if (bufferOffset >= buffer.length) {
92+
writer.WriteAscii(buffer, 0, bufferOffset);
93+
bufferOffset = 0;
94+
}
95+
i = length - lenmod3;
96+
buffer[bufferOffset++] = (byte)alphabet.charAt((data[i] >> 2) & 63);
97+
if (lenmod3 == 2) {
98+
buffer[bufferOffset++] = (byte)alphabet.charAt(((data[i] & 3) << 4) +
99+
((data[i + 1] >>
100+
4) & 15));
101+
buffer[bufferOffset++] = (byte)alphabet.charAt((data[i + 1] & 15) << 2);
102+
if (padding) {
103+
buffer[bufferOffset++] = (byte)'=';
104+
}
105+
} else {
106+
buffer[bufferOffset++] = (byte)alphabet.charAt((data[i] & 3) << 4);
107+
if (padding) {
108+
buffer[bufferOffset++] = (byte)'=';
109+
buffer[bufferOffset++] = (byte)'=';
110+
}
111+
}
112+
}
113+
if (bufferOffset >= 0) {
114+
writer.WriteAscii(buffer, 0, bufferOffset);
115+
}
116+
}
117+
}

src/test/java/com/upokecenter/test/CBORObjectTest.java

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5864,7 +5864,7 @@ public void TestCalcEncodedSizeCircularRefs3b() {
58645864
throw new IllegalStateException("", ex);
58655865
}
58665866
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5867-
cbor.Add(CBORObject.NewOrderedMap().Add("jkl",cbor),"test");
5867+
cbor.Add(CBORObject.NewOrderedMap().Add("jkl", cbor), "test");
58685868
try {
58695869
cbor.CalcEncodedSize();
58705870
Assert.fail("Should have failed");
@@ -5875,7 +5875,7 @@ public void TestCalcEncodedSizeCircularRefs3b() {
58755875
throw new IllegalStateException("", ex);
58765876
}
58775877
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5878-
cbor.Add("test",CBORObject.NewOrderedMap().Add("jkl",cbor));
5878+
cbor.Add("test", CBORObject.NewOrderedMap().Add("jkl", cbor));
58795879
try {
58805880
cbor.CalcEncodedSize();
58815881
Assert.fail("Should have failed");
@@ -5886,7 +5886,7 @@ public void TestCalcEncodedSizeCircularRefs3b() {
58865886
throw new IllegalStateException("", ex);
58875887
}
58885888
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5889-
cbor.Add(CBORObject.NewOrderedMap().Add(cbor,"jkl"),"test");
5889+
cbor.Add(CBORObject.NewOrderedMap().Add(cbor, "jkl"), "test");
58905890
try {
58915891
cbor.CalcEncodedSize();
58925892
Assert.fail("Should have failed");
@@ -5897,7 +5897,7 @@ public void TestCalcEncodedSizeCircularRefs3b() {
58975897
throw new IllegalStateException("", ex);
58985898
}
58995899
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5900-
cbor.Add("test",CBORObject.NewOrderedMap().Add(cbor,"jkl"));
5900+
cbor.Add("test", CBORObject.NewOrderedMap().Add(cbor, "jkl"));
59015901
try {
59025902
cbor.CalcEncodedSize();
59035903
Assert.fail("Should have failed");
@@ -5908,7 +5908,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
59085908
throw new IllegalStateException("", ex);
59095909
}
59105910
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5911-
cbor.Add(CBORObject.NewOrderedMap().Add(cbor,"jkl").Add("mno",1),"test");
5911+
cbor.Add(CBORObject.NewOrderedMap().Add(cbor, "jkl").Add("mno",
5912+
1),"test");
59125913
try {
59135914
cbor.CalcEncodedSize();
59145915
Assert.fail("Should have failed");
@@ -5919,7 +5920,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
59195920
throw new IllegalStateException("", ex);
59205921
}
59215922
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5922-
cbor.Add("test",CBORObject.NewOrderedMap().Add(cbor,"jkl").Add("mno",1));
5923+
cbor.Add("test", CBORObject.NewOrderedMap().Add(cbor,
5924+
"jkl").Add("mno",1));
59235925
try {
59245926
cbor.CalcEncodedSize();
59255927
Assert.fail("Should have failed");
@@ -5930,7 +5932,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
59305932
throw new IllegalStateException("", ex);
59315933
}
59325934
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5933-
cbor.Add("test",CBORObject.NewOrderedMap().Add("mno",1).Add(cbor,"jkl"));
5935+
cbor.Add("test", CBORObject.NewOrderedMap().Add("mno",
5936+
1).Add(cbor,"jkl"));
59345937
try {
59355938
cbor.CalcEncodedSize();
59365939
Assert.fail("Should have failed");
@@ -5941,7 +5944,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
59415944
throw new IllegalStateException("", ex);
59425945
}
59435946
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5944-
cbor.Add(CBORObject.NewOrderedMap().Add("mno",1).Add(cbor,"jkl"),"test");
5947+
cbor.Add(CBORObject.NewOrderedMap().Add("mno", 1).Add(cbor,
5948+
"jkl"),"test");
59455949
try {
59465950
cbor.CalcEncodedSize();
59475951
Assert.fail("Should have failed");
@@ -5969,46 +5973,51 @@ public void TestCalcEncodedSizeCircularRefs3b() {
59695973
}
59705974
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
59715975

5972-
cbor.Add (CBORObject.NewOrderedMap().Add ("jkl",
5973-
CBORObject.NewOrderedMap()),
5974-
"test");
5976+
{
5977+
Object objectTemp = CBORObject.NewOrderedMap().Add("jkl",
5978+
CBORObject.NewOrderedMap());
5979+
Object objectTemp2 = "test";
5980+
cbor.Add(objectTemp, objectTemp2);
5981+
}
59755982
if (!(cbor.CalcEncodedSize() > 2)) {
59765983
Assert.fail();
59775984
}
59785985
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5979-
59805986
{
59815987
Object objectTemp = "test";
5982-
Object objectTemp2 = CBORObject.NewOrderedMap().Add ("jkl",
5988+
Object objectTemp2 = CBORObject.NewOrderedMap().Add("jkl",
59835989
CBORObject.NewOrderedMap());
5984-
cbor.Add(objectTemp, objectTemp2);
5990+
cbor.Add(objectTemp, objectTemp2);
59855991
}
59865992
if (!(cbor.CalcEncodedSize() > 2)) {
59875993
Assert.fail();
59885994
}
59895995
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
59905996

5991-
cbor.Add (CBORObject.NewOrderedMap().Add (CBORObject.NewOrderedMap(),
5992-
"jkl"),
5993-
"test");
5997+
{
5998+
Object objectTemp = CBORObject.NewOrderedMap().Add(CBORObject.NewOrderedMap(),
5999+
"jkl");
6000+
Object objectTemp2 = "test";
6001+
cbor.Add(objectTemp, objectTemp2);
6002+
}
59946003
if (!(cbor.CalcEncodedSize() > 2)) {
59956004
Assert.fail();
59966005
}
59976006
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
5998-
59996007
{
60006008
Object objectTemp = "test";
6001-
Object objectTemp2 = CBORObject.NewOrderedMap().Add (CBORObject.NewOrderedMap(),
6009+
Object objectTemp2 = CBORObject.NewOrderedMap()
6010+
.Add(CBORObject.NewOrderedMap(),
60026011
"jkl");
6003-
cbor.Add(objectTemp, objectTemp2);
6012+
cbor.Add(objectTemp, objectTemp2);
60046013
}
60056014
if (!(cbor.CalcEncodedSize() > 2)) {
60066015
Assert.fail();
60076016
}
60086017
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
60096018
{
6010-
CBORObject.NewOrderedMap().Add (CBORObject.NewOrderedMap(),
6011-
"jkl").Add ("mno",
6019+
CBORObject.NewOrderedMap().Add(CBORObject.NewOrderedMap(),
6020+
"jkl").Add("mno",
60126021
1);
60136022
Object objectTemp2 = "test";
60146023
cbor.Add("test", objectTemp2);
@@ -6019,8 +6028,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
60196028
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
60206029
{
60216030
Object objectTemp2 =
6022-
CBORObject.NewOrderedMap().Add (CBORObject.NewOrderedMap(),
6023-
"jkl").Add ("mno",
6031+
CBORObject.NewOrderedMap().Add(CBORObject.NewOrderedMap(),
6032+
"jkl").Add("mno",
60246033
1);
60256034
cbor.Add("test", objectTemp2);
60266035
}
@@ -6030,8 +6039,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
60306039
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
60316040
{
60326041
Object objectTemp2 =
6033-
CBORObject.NewOrderedMap().Add ("mno", 1).Add
6034-
(CBORObject.NewOrderedMap(),
6042+
CBORObject.NewOrderedMap().Add("mno", 1).Add(
6043+
CBORObject.NewOrderedMap(),
60356044
"jkl");
60366045
cbor.Add("test", objectTemp2);
60376046
}
@@ -6041,8 +6050,8 @@ public void TestCalcEncodedSizeCircularRefs3b() {
60416050
cbor = CBORObject.NewOrderedMap().Add("ghi", 2).Add("abc", 4);
60426051
{
60436052
Object objectTemp =
6044-
CBORObject.NewOrderedMap().Add ("mno", 1).Add
6045-
(CBORObject.NewOrderedMap(),
6053+
CBORObject.NewOrderedMap().Add("mno", 1).Add(
6054+
CBORObject.NewOrderedMap(),
60466055
"jkl");
60476056
cbor.Add(objectTemp, "test");
60486057
}

0 commit comments

Comments
 (0)