Skip to content

Commit 68bb2e0

Browse files
authored
Merge pull request #539 from msgpack/remove-2-exttype-deser-apis
Remove 2 exttype deser APIs
2 parents 45f0cfa + d3236bf commit 68bb2e0

File tree

4 files changed

+19
-139
lines changed

4 files changed

+19
-139
lines changed

msgpack-jackson/README.md

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -222,66 +222,7 @@ When you want to use non-String value as a key of Map, use `MessagePackKeySerial
222222

223223
`ExtensionTypeCustomDeserializers` helps you to deserialize extension types easily.
224224

225-
#### With target Java class
226-
227-
```java
228-
NestedListComplexPojo parent = new NestedListComplexPojo();
229-
parent.children = Arrays.asList(new TinyPojo("Foo"), new TinyPojo("Bar"));
230-
231-
// In this application, extension type 17 is used for NestedListComplexPojo
232-
byte[] bytes;
233-
{
234-
// This ObjectMapper is just for temporary serialization
235-
ObjectMapper tempObjectMapper = new ObjectMapper(new MessagePackFactory());
236-
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
237-
MessagePacker packer = MessagePack.newDefaultPacker(outputStream);
238-
239-
byte[] extBytes = tempObjectMapper.writeValueAsBytes(parent);
240-
packer.packExtensionTypeHeader((byte) 17, extBytes.length);
241-
packer.addPayload(extBytes);
242-
packer.close();
243-
244-
bytes = outputStream.toByteArray();
245-
}
246-
247-
// Register the type and the class to ExtensionTypeCustomDeserializers
248-
ExtensionTypeCustomDeserializers extTypeCustomDesers = new ExtensionTypeCustomDeserializers();
249-
extTypeCustomDesers.addTargetClass((byte) 17, NestedListComplexPojo.class);
250-
ObjectMapper objectMapper = new ObjectMapper(
251-
new MessagePackFactory().setExtTypeCustomDesers(extTypeCustomDesers));
252-
253-
System.out.println(objectMapper.readValue(bytes, Object.class));
254-
// => NestedListComplexPojo{children=[TinyPojo{name='Foo'}, TinyPojo{name='Bar'}]}
255-
```
256-
257-
#### With type reference
258-
259-
```java
260-
Map<String, Integer> map = new HashMap<>();
261-
map.put("one", 1);
262-
map.put("two", 2);
263-
264-
// In this application, extension type 31 is used for Map<String, Integer>
265-
byte[] bytes;
266-
{
267-
// Same as above
268-
:
269-
packer.packExtensionTypeHeader((byte) 31, extBytes.length);
270-
:
271-
}
272-
273-
// Register the type and the type reference to ExtensionTypeCustomDeserializers
274-
ExtensionTypeCustomDeserializers extTypeCustomDesers = new ExtensionTypeCustomDeserializers();
275-
extTypeCustomDesers.addTargetTypeReference((byte) 31,
276-
new TypeReference<Map<String, Integer>>() {});
277-
ObjectMapper objectMapper = new ObjectMapper(
278-
new MessagePackFactory().setExtTypeCustomDesers(extTypeCustomDesers));
279-
280-
System.out.println(objectMapper.readValue(bytes, Object.class));
281-
// => {one=1, two=2}
282-
```
283-
284-
#### With custom deserializer
225+
#### Deserialize extension type value directly
285226

286227
```java
287228
// In this application, extension type 59 is used for byte[]

msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/ExtensionTypeCustomDeserializers.java

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,16 @@
1515
//
1616
package org.msgpack.jackson.dataformat;
1717

18-
import com.fasterxml.jackson.core.type.TypeReference;
19-
import com.fasterxml.jackson.databind.ObjectMapper;
20-
2118
import java.io.IOException;
2219
import java.util.Map;
2320
import java.util.concurrent.ConcurrentHashMap;
2421

2522
public class ExtensionTypeCustomDeserializers
2623
{
27-
private final ObjectMapper objectMapper;
28-
private Map<Byte, Deser> deserTable = new ConcurrentHashMap<Byte, Deser>();
24+
private Map<Byte, Deser> deserTable = new ConcurrentHashMap<>();
2925

3026
public ExtensionTypeCustomDeserializers()
3127
{
32-
objectMapper = new ObjectMapper(new MessagePackFactory().setReuseResourceInParser(false));
3328
}
3429

3530
public ExtensionTypeCustomDeserializers(ExtensionTypeCustomDeserializers src)
@@ -38,32 +33,6 @@ public ExtensionTypeCustomDeserializers(ExtensionTypeCustomDeserializers src)
3833
this.deserTable.putAll(src.deserTable);
3934
}
4035

41-
public <T> void addTargetClass(byte type, final Class<T> klass)
42-
{
43-
deserTable.put(type, new Deser()
44-
{
45-
@Override
46-
public Object deserialize(byte[] data)
47-
throws IOException
48-
{
49-
return objectMapper.readValue(data, klass);
50-
}
51-
});
52-
}
53-
54-
public void addTargetTypeReference(byte type, final TypeReference typeReference)
55-
{
56-
deserTable.put(type, new Deser()
57-
{
58-
@Override
59-
public Object deserialize(byte[] data)
60-
throws IOException
61-
{
62-
return objectMapper.readValue(data, typeReference);
63-
}
64-
});
65-
}
66-
6736
public void addCustomDeser(byte type, final Deser deser)
6837
{
6938
deserTable.put(type, new Deser()

msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackFactoryTest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,19 @@ private void assertCopy(boolean advancedConfig)
6565
ObjectMapper objectMapper;
6666
if (advancedConfig) {
6767
ExtensionTypeCustomDeserializers extTypeCustomDesers = new ExtensionTypeCustomDeserializers();
68-
extTypeCustomDesers.addTargetClass((byte) 42, TinyPojo.class);
68+
extTypeCustomDesers.addCustomDeser((byte) 42,
69+
new ExtensionTypeCustomDeserializers.Deser()
70+
{
71+
@Override
72+
public Object deserialize(byte[] data)
73+
throws IOException
74+
{
75+
TinyPojo pojo = new TinyPojo();
76+
pojo.t = new String(data);
77+
return pojo;
78+
}
79+
}
80+
);
6981

7082
MessagePack.PackerConfig msgpackPackerConfig = new MessagePack.PackerConfig().withStr8FormatSupport(false);
7183

msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackParserTest.java

Lines changed: 4 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252

5353
import static org.hamcrest.MatcherAssert.assertThat;
5454
import static org.hamcrest.core.Is.is;
55-
import static org.hamcrest.core.IsInstanceOf.instanceOf;
5655
import static org.junit.Assert.assertArrayEquals;
5756
import static org.junit.Assert.assertEquals;
5857
import static org.junit.Assert.assertTrue;
@@ -704,43 +703,19 @@ public void extensionTypeCustomDeserializers()
704703
{
705704
ByteArrayOutputStream out = new ByteArrayOutputStream();
706705
MessagePacker packer = MessagePack.newDefaultPacker(out);
707-
packer.packArrayHeader(5);
706+
packer.packArrayHeader(3);
708707
// 0: Integer
709708
packer.packInt(42);
710709
// 1: String
711710
packer.packString("foo bar");
712-
// 2: ExtensionType(class desr)
713-
{
714-
TinyPojo t0 = new TinyPojo();
715-
t0.t = "t0";
716-
TinyPojo t1 = new TinyPojo();
717-
t1.t = "t1";
718-
NestedListComplexPojo parent = new NestedListComplexPojo();
719-
parent.s = "parent";
720-
parent.foos = Arrays.asList(t0, t1);
721-
byte[] bytes = objectMapper.writeValueAsBytes(parent);
722-
packer.packExtensionTypeHeader((byte) 17, bytes.length);
723-
packer.addPayload(bytes);
724-
}
725-
// 3: ExtensionType(type reference deser)
726-
{
727-
Map<String, Integer> map = new HashMap<String, Integer>();
728-
map.put("one", 1);
729-
map.put("two", 2);
730-
byte[] bytes = objectMapper.writeValueAsBytes(map);
731-
packer.packExtensionTypeHeader((byte) 99, bytes.length);
732-
packer.addPayload(bytes);
733-
}
734-
// 4: ExtensionType(custom deser)
711+
// 2: ExtensionType
735712
{
736713
packer.packExtensionTypeHeader((byte) 31, 4);
737714
packer.addPayload(new byte[] {(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE});
738715
}
739716
packer.close();
740717

741718
ExtensionTypeCustomDeserializers extTypeCustomDesers = new ExtensionTypeCustomDeserializers();
742-
extTypeCustomDesers.addTargetClass((byte) 17, NestedListComplexPojo.class);
743-
extTypeCustomDesers.addTargetTypeReference((byte) 99, new TypeReference<Map<String, Integer>>() {});
744719
extTypeCustomDesers.addCustomDeser((byte) 31, new ExtensionTypeCustomDeserializers.Deser() {
745720
@Override
746721
public Object deserialize(byte[] data)
@@ -757,27 +732,10 @@ public Object deserialize(byte[] data)
757732
new ObjectMapper(new MessagePackFactory().setExtTypeCustomDesers(extTypeCustomDesers));
758733

759734
List<Object> values = objectMapper.readValue(new ByteArrayInputStream(out.toByteArray()), new TypeReference<List<Object>>() {});
760-
assertThat(values.size(), is(5));
735+
assertThat(values.size(), is(3));
761736
assertThat((Integer) values.get(0), is(42));
762737
assertThat((String) values.get(1), is("foo bar"));
763-
{
764-
Object v = values.get(2);
765-
assertThat(v, is(instanceOf(NestedListComplexPojo.class)));
766-
NestedListComplexPojo pojo = (NestedListComplexPojo) v;
767-
assertThat(pojo.s, is("parent"));
768-
assertThat(pojo.foos.size(), is(2));
769-
assertThat(pojo.foos.get(0).t, is("t0"));
770-
assertThat(pojo.foos.get(1).t, is("t1"));
771-
}
772-
{
773-
Object v = values.get(3);
774-
assertThat(v, is(instanceOf(Map.class)));
775-
Map<String, Integer> map = (Map<String, Integer>) v;
776-
assertThat(map.size(), is(2));
777-
assertThat(map.get("one"), is(1));
778-
assertThat(map.get("two"), is(2));
779-
}
780-
assertThat((String) values.get(4), is("Java"));
738+
assertThat((String) values.get(2), is("Java"));
781739
}
782740

783741
static class TripleBytesPojo

0 commit comments

Comments
 (0)