Skip to content

Commit f88c5e0

Browse files
committed
ISSUE-283 Metadata type constructor-transmitted
1 parent 9a68535 commit f88c5e0

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

cluster-codec-parent/cluster-codec-jackson/src/main/java/io/scalecube/cluster/codec/jackson/JacksonMetadataEncoder.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,29 @@
1616
*/
1717
public class JacksonMetadataEncoder implements MetadataEncoder, MetadataDecoder {
1818

19-
private static final TypeReference<Map<String, String>> TYPE =
19+
private static final TypeReference<Map<String, String>> DEFAULT_TYPE =
2020
new TypeReference<Map<String, String>>() {};
2121

2222
private final ObjectMapper delegate;
23+
private final TypeReference<?> type;
2324

2425
/**
2526
* Create instance with external {@link ObjectMapper}.
2627
*
2728
* @param delegate jackson object mapper
29+
* @param type type of metadata
2830
*/
29-
public JacksonMetadataEncoder(ObjectMapper delegate) {
31+
public JacksonMetadataEncoder(ObjectMapper delegate, TypeReference<?> type) {
3032
this.delegate = delegate;
33+
this.type = type;
3134
}
3235

3336
/**
3437
* Create instance with default {@link ObjectMapper}.
3538
*/
3639
public JacksonMetadataEncoder() {
3740
this.delegate = DefaultObjectMapper.OBJECT_MAPPER;
41+
this.type = DEFAULT_TYPE;
3842
}
3943

4044
/**
@@ -49,7 +53,7 @@ public Object decode(ByteBuffer buffer) {
4953
if (buffer.remaining() == 0) {
5054
return Collections.emptyMap();
5155
}
52-
return this.delegate.readValue(buffer.array(), TYPE);
56+
return this.delegate.readValue(buffer.array(), this.type);
5357
} catch (Exception e) {
5458
throw Exceptions.propagate(e);
5559
}
@@ -64,7 +68,7 @@ public Object decode(ByteBuffer buffer) {
6468
@Override
6569
public ByteBuffer encode(Object metadata) {
6670
try {
67-
return ByteBuffer.wrap(this.delegate.writeValueAsBytes(metadata));
71+
return ByteBuffer.wrap(this.delegate.writerFor(this.type).writeValueAsBytes(metadata));
6872
} catch (Exception e) {
6973
throw Exceptions.propagate(e);
7074
}

0 commit comments

Comments
 (0)