Skip to content

Commit 4484be2

Browse files
committed
Merge pull request msgpack#262 from msgpack/return_type_of_get_embedded_object
Return type of get embedded object
2 parents 6894dff + 9235602 commit 4484be2

File tree

5 files changed

+31
-32
lines changed

5 files changed

+31
-32
lines changed

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

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,35 @@
77
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
88

99
import java.io.IOException;
10-
import java.nio.ByteBuffer;
1110

1211
@JsonSerialize(using = MessagePackExtensionType.Serializer.class)
1312
public class MessagePackExtensionType
1413
{
15-
private final int extType;
16-
private final ByteBuffer byteBuffer;
14+
private final byte type;
15+
private final byte[] data;
1716

18-
public MessagePackExtensionType(int extType, ByteBuffer byteBuffer) {
19-
this.extType = extType;
20-
this.byteBuffer = byteBuffer.isReadOnly() ?
21-
byteBuffer : byteBuffer.asReadOnlyBuffer();
17+
public MessagePackExtensionType(byte type, byte[] data)
18+
{
19+
this.type = type;
20+
this.data = data;
2221
}
2322

24-
public int extType() {
25-
return extType;
23+
public byte getType()
24+
{
25+
return type;
2626
}
2727

28-
public ByteBuffer byteBuffer() {
29-
return byteBuffer;
28+
public byte[] getData()
29+
{
30+
return data;
3031
}
3132

32-
public static class Serializer extends JsonSerializer<MessagePackExtensionType> {
33+
public static class Serializer extends JsonSerializer<MessagePackExtensionType>
34+
{
3335
@Override
3436
public void serialize(MessagePackExtensionType value, JsonGenerator gen, SerializerProvider serializers)
35-
throws IOException, JsonProcessingException {
37+
throws IOException, JsonProcessingException
38+
{
3639
if (gen instanceof MessagePackGenerator) {
3740
MessagePackGenerator msgpackGenerator = (MessagePackGenerator)gen;
3841
msgpackGenerator.writeExtendedType(value);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,9 @@ else if (v instanceof Boolean) {
215215
}
216216
else if (v instanceof MessagePackExtensionType) {
217217
MessagePackExtensionType extendedType = (MessagePackExtensionType) v;
218-
ByteBuffer buf = extendedType.byteBuffer();
219-
messagePacker.packExtensionTypeHeader((byte)extendedType.extType(), buf.remaining());
220-
messagePacker.writePayload(buf);
218+
byte[] extData = extendedType.getData();
219+
messagePacker.packExtensionTypeHeader((byte)extendedType.getType(), extData.length);
220+
messagePacker.writePayload(extData);
221221
}
222222
else {
223223
throw new IllegalArgumentException(v.toString());

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,7 @@
3232
import org.msgpack.core.buffer.ArrayBufferInput;
3333
import org.msgpack.core.buffer.InputStreamBufferInput;
3434
import org.msgpack.core.buffer.MessageBufferInput;
35-
import org.msgpack.value.IntegerValue;
36-
import org.msgpack.value.Value;
37-
import org.msgpack.value.ValueFactory;
38-
import org.msgpack.value.ValueType;
39-
import org.msgpack.value.Variable;
35+
import org.msgpack.value.*;
4036

4137
import java.io.IOException;
4238
import java.io.InputStream;
@@ -398,7 +394,8 @@ public Object getEmbeddedObject()
398394
return value.asBinaryValue().getByteArray();
399395
}
400396
else if (value.isExtensionValue()) {
401-
return value.asExtensionValue();
397+
ExtensionValue extensionValue = value.asExtensionValue();
398+
return new MessagePackExtensionType(extensionValue.getType(), extensionValue.getData());
402399
}
403400
else {
404401
throw new UnsupportedOperationException();

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ public void testGeneratorShouldWriteObject()
7676
hashMap.put("childArray", childArray);
7777
// #10
7878
byte[] hello = "hello".getBytes("UTF-8");
79-
ByteBuffer buffer = ByteBuffer.wrap(hello);
80-
hashMap.put("ext", new MessagePackExtensionType(17, buffer));
79+
hashMap.put("ext", new MessagePackExtensionType((byte) 17, hello));
8180

8281
long bitmap = 0;
8382
byte[] bytes = objectMapper.writeValueAsBytes(hashMap);
@@ -362,7 +361,7 @@ public void testWritePrimitiveObjectViaObjectMapper()
362361
OutputStream out = new FileOutputStream(tempFile);
363362

364363
ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
365-
objectMapper.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
364+
objectMapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
366365
objectMapper.writeValue(out, 1);
367366
objectMapper.writeValue(out, "two");
368367
objectMapper.writeValue(out, 3.14);

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,9 @@ else if (k.equals("bool")) {
167167
else if (k.equals("ext")) {
168168
// #9
169169
bitmap |= 1 << 10;
170-
ExtensionValue extensionValue = (ExtensionValue) v;
171-
assertEquals(0, extensionValue.getType());
172-
assertArrayEquals(extPayload, extensionValue.getData());
170+
MessagePackExtensionType extensionType = (MessagePackExtensionType) v;
171+
assertEquals(0, extensionType.getType());
172+
assertArrayEquals(extPayload, extensionType.getData());
173173
}
174174
}
175175
assertEquals(0x7FF, bitmap);
@@ -276,9 +276,9 @@ else if (k.equals("child_map_age")) {
276276
// #10
277277
assertEquals(true, array.get(i++));
278278
// #11
279-
ExtensionValue extensionValue = (ExtensionValue) array.get(i++);
280-
assertEquals(-1, extensionValue.getType());
281-
assertArrayEquals(extPayload, extensionValue.getData());
279+
MessagePackExtensionType extensionType = (MessagePackExtensionType) array.get(i++);
280+
assertEquals(-1, extensionType.getType());
281+
assertArrayEquals(extPayload, extensionType.getData());
282282
}
283283

284284
@Test
@@ -479,7 +479,7 @@ public void testReadPrimitiveObjectViaObjectMapper()
479479

480480
FileInputStream in = new FileInputStream(tempFile);
481481
ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
482-
objectMapper.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
482+
objectMapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);
483483
assertEquals("foo", objectMapper.readValue(in, new TypeReference<String>() {}));
484484
assertEquals(Long.MAX_VALUE, objectMapper.readValue(in, new TypeReference<Long>() {}));
485485
assertEquals(3.14, objectMapper.readValue(in, new TypeReference<Double>() {}));

0 commit comments

Comments
 (0)