Skip to content

Commit abf15a6

Browse files
committed
Fix Java 9 compilation issue for cbor
1 parent 7d26d7b commit abf15a6

File tree

1 file changed

+27
-40
lines changed

1 file changed

+27
-40
lines changed

cbor/src/test/java/com/fasterxml/jackson/dataformat/cbor/MapAndArrayTest.java

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package com.fasterxml.jackson.dataformat.cbor;
22

3-
import junit.framework.TestCase;
4-
53
import java.io.ByteArrayOutputStream;
64
import java.io.IOException;
75

8-
9-
public class MapAndArrayTest extends TestCase {
10-
6+
public class MapAndArrayTest extends CBORTestBase
7+
{
118
/**
129
* Test for verifying complex Array and Map generation with limited and unlimited size
1310
*/
@@ -36,11 +33,11 @@ public void testCborBasicMap() throws IOException {
3633
gen.close();
3734

3835
byte [] bytes = payloadOut.toByteArray();
39-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
36+
String hexData = asHex(bytes);
4037

4138
assertTrue(hexData.equalsIgnoreCase("bf6346756ef563416d7421ff"));
4239
}
43-
40+
4441
public void testCborUnsizedMap() throws IOException {
4542
/* {_"Fun": true, 1504: -33, 1505: false, 13171233041: 22}
4643
@@ -77,8 +74,7 @@ public void testCborUnsizedMap() throws IOException {
7774
gen.writeNumber(22);
7875
gen.close();
7976

80-
byte[] bytes = payloadOut.toByteArray();
81-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
77+
String hexData = asHex(payloadOut.toByteArray());
8278

8379
assertTrue(hexData.equalsIgnoreCase("bf6346756ef51905e038201905e1f41b000000031111111116ff"));
8480
}
@@ -131,9 +127,7 @@ public void testCborSizedMap() throws IOException {
131127
gen.writeEndObject();
132128
gen.close();
133129

134-
byte[] bytes = payloadOut.toByteArray();
135-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
136-
130+
String hexData = asHex(payloadOut.toByteArray());
137131
assertTrue(hexData.equalsIgnoreCase("A51905e038201905e1f41905E26346756e63416d748202031905E3F4"));
138132
}
139133

@@ -184,9 +178,8 @@ public void testCborSizedMapWithParserTest() throws IOException {
184178
gen.writeEndObject();
185179
gen.close();
186180

187-
byte[] bytes = payloadOut.toByteArray();
188-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
189-
181+
final byte[] bytes = payloadOut.toByteArray();
182+
String hexData = asHex(bytes);
190183
assertTrue(hexData.equalsIgnoreCase("BF1905e038201905e1f41905E26346756e1905E39F616303F4FF1B0000000311111111F4FF"));
191184

192185
/*
@@ -219,9 +212,7 @@ public void testCborUnsizedMapWithArrayAsKey() throws IOException {
219212
gen.writeEndArray();
220213
gen.close();
221214

222-
byte[] bytes = payloadOut.toByteArray();
223-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
224-
215+
String hexData = asHex(payloadOut.toByteArray());
225216
assertTrue(hexData.equalsIgnoreCase("bf61610161629f0203ffff"));
226217
}
227218

@@ -282,9 +273,7 @@ public void testCborMultilevelMapWithMultilevelArrays() throws IOException {
282273
gen.writeEndObject();
283274
gen.close();
284275

285-
byte[] bytes = payloadOut.toByteArray();
286-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
287-
276+
String hexData = asHex(payloadOut.toByteArray());
288277
assertTrue(hexData.equalsIgnoreCase("a461610161629f0203ff1905dd856346756e182c9f182d182e82182f1830ffa2636b6579bf67636f6d706c65781832ff183362353218351905debf18366576616c75651837a21838183d1839183eff"));
289278
}
290279

@@ -319,9 +308,7 @@ public void testCborUnsizedMapWithAllInside() throws IOException {
319308
gen.writeEndObject();
320309
gen.close();
321310

322-
byte[] bytes = payloadOut.toByteArray();
323-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
324-
311+
String hexData = asHex(payloadOut.toByteArray());
325312
assertTrue(hexData.equalsIgnoreCase("BF1905e0A11909C838201905e1f41905E26346756e1905E39F616303F4FF1B0000000311111111F4FF"));
326313
}
327314

@@ -348,9 +335,7 @@ public void testCborArraysInArray() throws IOException {
348335
gen.writeEndArray();
349336
gen.close();
350337

351-
byte[] bytes = payloadOut.toByteArray();
352-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
353-
338+
String hexData = asHex(payloadOut.toByteArray());
354339
assertTrue(hexData.equalsIgnoreCase("9f018202039f0405ffff"));
355340
}
356341

@@ -396,9 +381,7 @@ public void testCborArraysInUnsizedArray() throws IOException {
396381
gen.writeEndArray();
397382
gen.close();
398383

399-
byte[] bytes = payloadOut.toByteArray();
400-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
401-
384+
String hexData = asHex(payloadOut.toByteArray());
402385
assertTrue(hexData.equalsIgnoreCase("9f018202039f0405ff8306079f080808820101ff8209099f0001ffff"));
403386
}
404387

@@ -441,9 +424,7 @@ public void testCborArraysInSizedArray() throws IOException {
441424
gen.writeEndArray(); // [1,[_2,3,4,_][_4,[5,[_6,6,6]]],[7,8,[_9,10]]]
442425
gen.close();
443426

444-
byte[] bytes = payloadOut.toByteArray();
445-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
446-
427+
String hexData = asHex(payloadOut.toByteArray());
447428
assertTrue(hexData.equalsIgnoreCase("84019f020304ff9f0482059f060606ffff8307089f090aff"));
448429
}
449430

@@ -485,9 +466,7 @@ public void testCborSizedArray() throws IOException {
485466
gen.writeEndArray();
486467
gen.close();
487468

488-
byte[] bytes = payloadOut.toByteArray();
489-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
490-
469+
String hexData = asHex(payloadOut.toByteArray());
491470
assertTrue(hexData.equalsIgnoreCase("8318219901000102030405060708090A0B0C0D0E0F101112131415161718181819181A181B181C181D181E181F1820182118221823182418251826182718281829182A182B182C182D182E182F1830183118321833183418351836183718381839183A183B183C183D183E183F1840184118421843184418451846184718481849184A184B184C184D184E184F1850185118521853185418551856185718581859185A185B185C185D185E185F1860186118621863186418651866186718681869186A186B186C186D186E186F1870187118721873187418751876187718781879187A187B187C187D187E187F1880188118821883188418851886188718881889188A188B188C188D188E188F1890189118921893189418951896189718981899189A189B189C189D189E189F18A018A118A218A318A418A518A618A718A818A918AA18AB18AC18AD18AE18AF18B018B118B218B318B418B518B618B718B818B918BA18BB18BC18BD18BE18BF18C018C118C218C318C418C518C618C718C818C918CA18CB18CC18CD18CE18CF18D018D118D218D318D418D518D618D718D818D918DA18DB18DC18DD18DE18DF18E018E118E218E318E418E518E618E718E818E918EA18EB18EC18ED18EE18EF18F018F118F218F318F418F518F618F718F818F918FA18FB18FC18FD18FE18FF1901001822"));
492471
}
493472

@@ -511,9 +490,17 @@ public void testCborSizedArrayWithMap() throws IOException {
511490
gen.writeEndArray();
512491
gen.close();
513492

514-
byte[] bytes = payloadOut.toByteArray();
515-
String hexData = javax.xml.bind.DatatypeConverter.printHexBinary(bytes);
516-
493+
String hexData = asHex(payloadOut.toByteArray());
517494
assertTrue(hexData.equalsIgnoreCase("826161bf6162616361646165ff"));
518495
}
519-
}
496+
497+
private String asHex(byte[] data) {
498+
// Let's NOT rely on JDK converters as things get trickier with Java 9.
499+
// Brute force and ugly but will do
500+
StringBuilder sb = new StringBuilder(data.length * 2);
501+
for (int i = 0, end = data.length; i < end; ++i) {
502+
sb.append(String.format("%02x", data[i] & 0xFF));
503+
}
504+
return sb.toString();
505+
}
506+
}

0 commit comments

Comments
 (0)