Skip to content

Commit d9ff508

Browse files
committed
Update msgpack
1 parent 91034e9 commit d9ff508

7 files changed

Lines changed: 119 additions & 65 deletions

File tree

deps.edn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{:paths ["target/classes"]
22
:deps
33
{com.fasterxml.jackson.core/jackson-core {:mvn/version "2.21.0"}
4-
org.msgpack/msgpack {:mvn/version "0.6.12"}
4+
org.msgpack/msgpack-core {:mvn/version "0.9.11"}
55
javax.xml.bind/jaxb-api {:mvn/version "2.3.0"}}
66

77
:deps/prep-lib

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
</dependency>
4848
<dependency>
4949
<groupId>org.msgpack</groupId>
50-
<artifactId>msgpack</artifactId>
51-
<version>0.6.12</version>
50+
<artifactId>msgpack-core</artifactId>
51+
<version>0.9.11</version>
5252
</dependency>
5353
<dependency>
5454
<groupId>javax.xml.bind</groupId>

src/main/java/com/cognitect/transit/impl/MsgpackEmitter.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
package com.cognitect.transit.impl;
55

66
import com.cognitect.transit.WriteHandler;
7-
import org.msgpack.packer.Packer;
7+
import org.msgpack.core.MessagePacker;
88

99
import java.io.IOException;
1010
import java.util.Map;
@@ -13,20 +13,20 @@
1313

1414
public class MsgpackEmitter extends AbstractEmitter {
1515

16-
private final Packer gen;
16+
private final MessagePacker gen;
1717

1818
@Deprecated
19-
public MsgpackEmitter(Packer gen, WriteHandlerMap writeHandlerMap) {
19+
public MsgpackEmitter(MessagePacker gen, WriteHandlerMap writeHandlerMap) {
2020
super(writeHandlerMap, null);
2121
this.gen = gen;
2222
}
2323

24-
public MsgpackEmitter(Packer gen, WriteHandlerMap writeHandlerMap, WriteHandler defaultWriteHandler) {
24+
public MsgpackEmitter(MessagePacker gen, WriteHandlerMap writeHandlerMap, WriteHandler defaultWriteHandler) {
2525
super(writeHandlerMap, defaultWriteHandler);
2626
this.gen = gen;
2727
}
2828

29-
public MsgpackEmitter(Packer gen, WriteHandlerMap writeHandlerMap, WriteHandler defaultWriteHandler, Function<Object,Object> transform) {
29+
public MsgpackEmitter(MessagePacker gen, WriteHandlerMap writeHandlerMap, WriteHandler defaultWriteHandler, Function<Object,Object> transform) {
3030
super(writeHandlerMap, defaultWriteHandler, transform);
3131
this.gen = gen;
3232
}
@@ -38,60 +38,60 @@ public void emit(Object o, boolean asMapKey, WriteCache cache) throws Exception
3838

3939
@Override
4040
public void emitNil(boolean asMapKey, WriteCache cache) throws Exception {
41-
this.gen.writeNil();
41+
this.gen.packNil();
4242
}
4343

4444
@Override
4545
public void emitString(String prefix, String tag, String s, boolean asMapKey, WriteCache cache) throws Exception {
4646
String outString = cache.cacheWrite(Util.maybePrefix(prefix, tag, s), asMapKey);
47-
this.gen.write(outString);
47+
this.gen.packString(outString);
4848
}
4949

5050
@Override
5151
public void emitBoolean(Boolean b, boolean asMapKey, WriteCache cache) throws Exception {
52-
this.gen.write(b);
52+
this.gen.packBoolean(b);
5353
}
5454

5555
@Override
5656
public void emitBoolean(boolean b, boolean asMapKey, WriteCache cache) throws Exception {
57-
this.gen.write(b);
57+
this.gen.packBoolean(b);
5858
}
5959

6060
@Override
6161
public void emitInteger(Object o, boolean asMapKey, WriteCache cache) throws Exception {
6262
long i = Util.numberToPrimitiveLong(o);
6363
if ((i > Long.MAX_VALUE) || (i < Long.MIN_VALUE))
6464
this.emitString(Constants.ESC_STR, "i", o.toString(), asMapKey, cache);
65-
this.gen.write(i);
65+
this.gen.packLong(i);
6666
}
6767

6868

6969
@Override
7070
public void emitInteger(long i, boolean asMapKey, WriteCache cache) throws Exception {
7171
if ((i > Long.MAX_VALUE) || (i < Long.MIN_VALUE))
7272
this.emitString(Constants.ESC_STR, "i", String.valueOf(i), asMapKey, cache);
73-
this.gen.write(i);
73+
this.gen.packLong(i);
7474
}
7575

7676

7777
@Override
7878
public void emitDouble(Object d, boolean asMapKey, WriteCache cache) throws Exception {
7979
if (d instanceof Double)
80-
this.gen.write((Double) d);
80+
this.gen.packDouble((Double) d);
8181
else if (d instanceof Float)
82-
this.gen.write((Float) d);
82+
this.gen.packFloat((Float) d);
8383
else
8484
throw new Exception("Unknown floating point type: " + d.getClass());
8585
}
8686

8787
@Override
8888
public void emitDouble(float d, boolean asMapKey, WriteCache cache) throws Exception {
89-
this.gen.write(d);
89+
this.gen.packFloat(d);
9090
}
9191

9292
@Override
9393
public void emitDouble(double d, boolean asMapKey, WriteCache cache) throws Exception {
94-
this.gen.write(d);
94+
this.gen.packDouble(d);
9595
}
9696

9797
@Override
@@ -102,22 +102,22 @@ public void emitBinary(Object b, boolean asMapKey, WriteCache cache) throws Exce
102102

103103
@Override
104104
public void emitArrayStart(Long size) throws Exception {
105-
this.gen.writeArrayBegin(size.intValue());
105+
this.gen.packArrayHeader(size.intValue());
106106
}
107107

108108
@Override
109109
public void emitArrayEnd() throws Exception {
110-
this.gen.writeArrayEnd();
110+
// msgpack-core uses counted headers, no end marker needed
111111
}
112112

113113
@Override
114114
public void emitMapStart(Long size) throws Exception {
115-
this.gen.writeMapBegin(size.intValue());
115+
this.gen.packMapHeader(size.intValue());
116116
}
117117

118118
@Override
119119
public void emitMapEnd() throws Exception {
120-
this.gen.writeMapEnd();
120+
// msgpack-core uses counted headers, no end marker needed
121121
}
122122

123123
@Override

src/main/java/com/cognitect/transit/impl/MsgpackParser.java

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,21 @@
44
package com.cognitect.transit.impl;
55

66
import com.cognitect.transit.*;
7-
import org.msgpack.type.Value;
8-
import org.msgpack.type.ValueType;
9-
import org.msgpack.unpacker.Unpacker;
7+
import org.msgpack.core.MessageUnpacker;
8+
9+
import org.msgpack.value.ValueType;
1010

1111
import java.io.IOException;
12-
import java.math.BigInteger;
12+
import java.nio.ByteBuffer;
13+
import java.nio.charset.StandardCharsets;
1314
import java.util.List;
1415
import java.util.Map;
1516

1617

1718
public class MsgpackParser extends AbstractParser {
18-
private final Unpacker mp;
19+
private final MessageUnpacker mp;
1920

20-
public MsgpackParser(Unpacker mp,
21+
public MsgpackParser(MessageUnpacker mp,
2122
Map<String, ReadHandler<?,?>> handlers,
2223
DefaultReadHandler defaultHandler,
2324
MapReader<?, Map<Object, Object>, Object, Object> mapBuilder,
@@ -27,16 +28,7 @@ public MsgpackParser(Unpacker mp,
2728
}
2829

2930
private Object parseLong() throws IOException {
30-
Value val = mp.readValue();
31-
32-
try {
33-
return val.asIntegerValue().getLong();
34-
}
35-
catch (Exception ex) {
36-
BigInteger bi = new BigInteger(val.asRawValue().getString());
37-
}
38-
39-
return val;
31+
return mp.unpackLong();
4032
}
4133

4234
@Override
@@ -46,21 +38,21 @@ public Object parse(ReadCache cache) throws IOException {
4638

4739
@Override
4840
public Object parseVal(boolean asMapKey, ReadCache cache) throws IOException {
49-
switch (mp.getNextType()) {
41+
switch (mp.getNextFormat().getValueType()) {
5042
case MAP:
5143
return parseMap(asMapKey, cache, null);
5244
case ARRAY:
5345
return parseArray(asMapKey, cache, null);
54-
case RAW:
55-
return cache.cacheRead(mp.readValue().asRawValue().getString(), asMapKey, this);
46+
case STRING:
47+
return cache.cacheRead(mp.unpackString(), asMapKey, this);
5648
case INTEGER:
5749
return parseLong();
5850
case FLOAT:
59-
return mp.readValue().asFloatValue().getDouble();
51+
return mp.unpackDouble();
6052
case BOOLEAN:
61-
return mp.readValue().asBooleanValue().getBoolean();
53+
return mp.unpackBoolean();
6254
case NIL:
63-
mp.readNil();
55+
mp.unpackNil();
6456
}
6557

6658
return null;
@@ -69,7 +61,7 @@ public Object parseVal(boolean asMapKey, ReadCache cache) throws IOException {
6961
@Override
7062
public Object parseMap(boolean ignored, ReadCache cache, MapReadHandler<Object, ?, Object, Object, ?> handler) throws IOException {
7163

72-
int sz = this.mp.readMapBegin();
64+
int sz = this.mp.unpackMapHeader();
7365

7466
MapReader<Object, ?, Object, Object> mr = (handler != null) ? handler.mapReader() : mapBuilder;
7567

@@ -82,10 +74,10 @@ public Object parseMap(boolean ignored, ReadCache cache, MapReadHandler<Object,
8274
ReadHandler<Object, Object> val_handler = getHandler(tag);
8375
Object val;
8476
if (val_handler != null) {
85-
if (this.mp.getNextType() == ValueType.MAP && val_handler instanceof MapReadHandler) {
77+
if (this.mp.getNextFormat().getValueType() == ValueType.MAP && val_handler instanceof MapReadHandler) {
8678
// use map reader to decode value
8779
val = parseMap(false, cache, (MapReadHandler<Object, ?, Object, Object, ?>) val_handler);
88-
} else if (this.mp.getNextType() == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
80+
} else if (this.mp.getNextFormat().getValueType() == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
8981
// use array reader to decode value
9082
val = parseArray(false, cache, (ArrayReadHandler<Object, ?, Object, ?>) val_handler);
9183
} else {
@@ -97,21 +89,19 @@ public Object parseMap(boolean ignored, ReadCache cache, MapReadHandler<Object,
9789
val = this.decode(tag, parseVal(false, cache));
9890
}
9991

100-
this.mp.readMapEnd(true);
10192
return val;
10293
} else {
10394
mb = mr.add(mb, key, parseVal(false, cache));
10495
}
10596
}
10697

107-
this.mp.readMapEnd(true);
10898
return mr.complete(mb);
10999
}
110100

111101
@Override
112102
public Object parseArray(boolean ignored, ReadCache cache, ArrayReadHandler<Object, ?, Object, ?> handler) throws IOException {
113103

114-
int sz = this.mp.readArrayBegin();
104+
int sz = this.mp.unpackArrayHeader();
115105

116106
ArrayReader<Object, ?, Object> ar = (handler != null) ? handler.arrayReader() : listBuilder;
117107

@@ -124,10 +114,10 @@ public Object parseArray(boolean ignored, ReadCache cache, ArrayReadHandler<Obje
124114
String tag = ((Tag) val).getValue();
125115
ReadHandler<Object, Object> val_handler = getHandler(tag);
126116
if (val_handler != null) {
127-
if (this.mp.getNextType() == ValueType.MAP && val_handler instanceof MapReadHandler) {
117+
if (this.mp.getNextFormat().getValueType() == ValueType.MAP && val_handler instanceof MapReadHandler) {
128118
// use map reader to decode value
129119
val = parseMap(false, cache, (MapReadHandler<Object, ?, Object, Object, ?>) val_handler);
130-
} else if (this.mp.getNextType() == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
120+
} else if (this.mp.getNextFormat().getValueType() == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
131121
// use array reader to decode value
132122
val = parseArray(false, cache, (ArrayReadHandler<Object, ?, Object, ?>) val_handler);
133123
} else {
@@ -138,15 +128,13 @@ public Object parseArray(boolean ignored, ReadCache cache, ArrayReadHandler<Obje
138128
// default decode
139129
val = this.decode(tag, parseVal(false, cache));
140130
}
141-
this.mp.readArrayEnd();
142131
return val;
143132
} else {
144133
// fall through to regular parse
145134
ab = ar.add(ab, val);
146135
}
147136
}
148137

149-
this.mp.readArrayEnd();
150138
return ar.complete(ab);
151139
}
152140
}

src/main/java/com/cognitect/transit/impl/ReaderFactory.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.cognitect.transit.*;
77
import com.cognitect.transit.SPI.ReaderSPI;
88
import com.fasterxml.jackson.core.JsonFactory;
9-
import org.msgpack.MessagePack;
9+
import org.msgpack.core.MessagePack;
1010

1111
import java.io.InputStream;
1212
import java.util.HashMap;
@@ -154,8 +154,7 @@ public MsgPackReaderImpl(InputStream in, Map<String, ReadHandler<?,?>> handlers,
154154

155155
@Override
156156
protected AbstractParser createParser() {
157-
MessagePack mp = new MessagePack();
158-
return new MsgpackParser(mp.createUnpacker(in), handlers, defaultHandler,
157+
return new MsgpackParser(MessagePack.newDefaultUnpacker(in), handlers, defaultHandler,
159158
mapBuilder, listBuilder);
160159
}
161160
}

src/main/java/com/cognitect/transit/impl/WriterFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import com.cognitect.transit.Writer;
88
import com.fasterxml.jackson.core.JsonFactory;
99
import com.fasterxml.jackson.core.JsonGenerator;
10-
import org.msgpack.MessagePack;
11-
import org.msgpack.packer.Packer;
10+
import org.msgpack.core.MessagePack;
11+
import org.msgpack.core.MessagePacker;
1212

1313
import java.io.IOException;
1414
import java.io.OutputStream;
@@ -61,7 +61,7 @@ public static <T> Writer<T> getMsgpackInstance(final OutputStream out, Map<Class
6161

6262
public static <T> Writer<T> getMsgpackInstance(final OutputStream out, Map<Class, WriteHandler<?,?>> customHandlers, WriteHandler<?, ?> defaultWriteHandler, Function<Object,Object> transform) throws IOException {
6363

64-
Packer packer = new MessagePack().createPacker(out);
64+
MessagePacker packer = MessagePack.newDefaultPacker(out);
6565

6666
final MsgpackEmitter emitter = new MsgpackEmitter(packer, buildWriteHandlerMap(customHandlers), defaultWriteHandler, transform);
6767

0 commit comments

Comments
 (0)