JsonJacksonMapCodec improved. #1260

pull/1253/merge
Nikita 7 years ago
parent 5588748cde
commit 5683ff211f

@ -133,6 +133,12 @@
<version>8.0.48</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.7.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>fluent-hc</artifactId>

@ -41,7 +41,6 @@ import io.netty.buffer.ByteBufOutputStream;
*/
public class JsonJacksonMapCodec extends JsonJacksonCodec {
private final ObjectMapper mapper;
private Class<?> keyClass;
private Class<?> valueClass;
private TypeReference<?> keyTypeReference;
@ -53,7 +52,7 @@ public class JsonJacksonMapCodec extends JsonJacksonCodec {
ByteBuf out = ByteBufAllocator.DEFAULT.buffer();
try {
ByteBufOutputStream os = new ByteBufOutputStream(out);
mapper.writeValue((OutputStream)os, in);
mapObjectMapper.writeValue((OutputStream)os, in);
return os.buffer();
} catch (IOException e) {
out.release();
@ -66,9 +65,9 @@ public class JsonJacksonMapCodec extends JsonJacksonCodec {
@Override
public Object decode(ByteBuf buf, State state) throws IOException {
if (valueClass != null) {
return mapper.readValue((InputStream)new ByteBufInputStream(buf), valueClass);
return mapObjectMapper.readValue((InputStream)new ByteBufInputStream(buf), valueClass);
}
return mapper.readValue((InputStream)new ByteBufInputStream(buf), valueTypeReference);
return mapObjectMapper.readValue((InputStream)new ByteBufInputStream(buf), valueTypeReference);
}
};
@ -76,27 +75,39 @@ public class JsonJacksonMapCodec extends JsonJacksonCodec {
@Override
public Object decode(ByteBuf buf, State state) throws IOException {
if (keyClass != null) {
return mapper.readValue((InputStream)new ByteBufInputStream(buf), keyClass);
return mapObjectMapper.readValue((InputStream)new ByteBufInputStream(buf), keyClass);
}
return mapper.readValue((InputStream)new ByteBufInputStream(buf), keyTypeReference);
return mapObjectMapper.readValue((InputStream)new ByteBufInputStream(buf), keyTypeReference);
}
};
public JsonJacksonMapCodec(Class<?> keyClass, Class<?> valueClass) {
this(null, null, keyClass, valueClass);
this(null, null, keyClass, valueClass, new ObjectMapper());
}
public JsonJacksonMapCodec(Class<?> keyClass, Class<?> valueClass, ObjectMapper mapper) {
this(null, null, keyClass, valueClass, mapper);
}
public JsonJacksonMapCodec(TypeReference<?> keyTypeReference, TypeReference<?> valueTypeReference) {
this(keyTypeReference, valueTypeReference, null, null);
this(keyTypeReference, valueTypeReference, null, null, new ObjectMapper());
}
public JsonJacksonMapCodec(TypeReference<?> keyTypeReference, TypeReference<?> valueTypeReference, ObjectMapper mapper) {
this(keyTypeReference, valueTypeReference, null, null, mapper);
}
JsonJacksonMapCodec(TypeReference<?> keyTypeReference, TypeReference<?> valueTypeReference, Class<?> keyClass, Class<?> valueClass) {
JsonJacksonMapCodec(TypeReference<?> keyTypeReference, TypeReference<?> valueTypeReference, Class<?> keyClass, Class<?> valueClass, ObjectMapper mapper) {
super(mapper);
this.keyTypeReference = keyTypeReference;
this.valueTypeReference = valueTypeReference;
this.keyClass = keyClass;
this.valueClass = valueClass;
this.mapper = new ObjectMapper();
init(this.mapper);
}
@Override
protected void initTypeInclusion(ObjectMapper mapObjectMapper) {
// avoid type inclusion
}
@Override

@ -65,7 +65,7 @@ public class JsonJacksonCodec implements Codec {
}
private final ObjectMapper mapObjectMapper;
protected final ObjectMapper mapObjectMapper;
private final Encoder encoder = new Encoder() {
@Override

Loading…
Cancel
Save