This commit is contained in:
Redkale
2020-05-27 12:00:32 +08:00
parent e744d001c6
commit ea15634f47
4 changed files with 38 additions and 1 deletions

View File

@@ -54,6 +54,10 @@ public abstract class Convert<R extends Reader, W extends Writer> {
public abstract <T> T convertFrom(final Type type, final ConvertMask mask, final ByteBuffer... buffers);
public abstract byte[] convertToBytes(final Object value);
public abstract byte[] convertToBytes(final Type type, final Object value);
public abstract ByteBuffer[] convertTo(final Supplier<ByteBuffer> supplier, final Object value);
public abstract ByteBuffer[] convertTo(final Supplier<ByteBuffer> supplier, final Type type, final Object value);

View File

@@ -177,6 +177,16 @@ public class BsonConvert extends BinaryConvert<BsonReader, BsonWriter> {
return result;
}
@Override
public byte[] convertToBytes(final Object value) {
return convertTo(value);
}
@Override
public byte[] convertToBytes(final Type type, final Object value) {
return convertTo(type, value);
}
@Override
public byte[] convertMapTo(final Object... values) {
if (values == null) return null;

View File

@@ -214,6 +214,25 @@ public class JsonConvert extends TextConvert<JsonReader, JsonWriter> {
return result;
}
@Override
public byte[] convertToBytes(final Object value) {
if (value == null) return null;
String result = convertTo(value.getClass(), value);
return result == null ? null : result.getBytes(StandardCharsets.UTF_8);
}
@Override
public byte[] convertToBytes(final Type type, final Object value) {
if (type == null) return null;
if (value == null) return null;
final JsonWriter writer = pollJsonWriter();
writer.specify(type);
factory.loadEncoder(type).convertTo(writer, value);
String result = writer.toString();
writerPool.accept(writer);
return result == null ? null : result.getBytes(StandardCharsets.UTF_8);
}
@Override
public String convertMapTo(final Object... values) {
if (values == null) return "null";

View File

@@ -7,7 +7,7 @@ package org.redkale.mq;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import org.redkale.convert.ConvertDisabled;
import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert;
import org.redkale.util.Comment;
@@ -45,6 +45,10 @@ public class MessageRecord implements Serializable {
public MessageRecord() {
}
public MessageRecord(String resptopic, Convert convert, Object bean) {
this(System.nanoTime(), 0, 0, null, null, resptopic, convert.convertToBytes(bean));
}
public MessageRecord(String resptopic, byte[] content) {
this(System.nanoTime(), 0, 0, null, null, resptopic, content);
}