protobuf
This commit is contained in:
@@ -23,7 +23,7 @@ import org.redkale.util.Creator;
|
|||||||
* @param <T> 反解析的数组元素类型
|
* @param <T> 反解析的数组元素类型
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class ArrayDecoder<R extends Reader, T> implements TagDecodeable<R, T[]> {
|
public class ArrayDecoder<R extends Reader, T> implements Decodeable<R, T[]> {
|
||||||
|
|
||||||
protected final Type type;
|
protected final Type type;
|
||||||
|
|
||||||
@@ -88,14 +88,9 @@ public class ArrayDecoder<R extends Reader, T> implements TagDecodeable<R, T[]>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T[] convertFrom(R in) {
|
public T[] convertFrom(R in) {
|
||||||
return convertFrom(in, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public T[] convertFrom(R in, DeMember member) {
|
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
final Decodeable<R, T> itemDecoder = this.componentDecoder;
|
final Decodeable<R, T> itemDecoder = this.componentDecoder;
|
||||||
int len = in.readArrayB(member, itemDecoder);
|
int len = in.readArrayB(itemDecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.redkale.util.Creator;
|
|||||||
* @param <T> 反解析的集合元素类型
|
* @param <T> 反解析的集合元素类型
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class CollectionDecoder<R extends Reader, T> implements TagDecodeable<R, Collection<T>> {
|
public class CollectionDecoder<R extends Reader, T> implements Decodeable<R, Collection<T>> {
|
||||||
|
|
||||||
protected final Type type;
|
protected final Type type;
|
||||||
|
|
||||||
@@ -93,13 +93,9 @@ public class CollectionDecoder<R extends Reader, T> implements TagDecodeable<R,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<T> convertFrom(R in) {
|
public Collection<T> convertFrom(R in) {
|
||||||
return convertFrom(in, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<T> convertFrom(R in, DeMember member) {
|
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
final Decodeable<R, T> itemDecoder = this.componentDecoder;
|
final Decodeable<R, T> itemDecoder = this.componentDecoder;
|
||||||
int size = in.readArrayB(member, itemDecoder);
|
int size = in.readArrayB(itemDecoder);
|
||||||
if (size == Reader.SIGN_NULL) {
|
if (size == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,18 +107,10 @@ public final class DeMember<R extends Reader, T, F> {
|
|||||||
this.attribute.set(obj, decoder.convertFrom(in));
|
this.attribute.set(obj, decoder.convertFrom(in));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void readByTag(R in, T obj) {
|
|
||||||
this.attribute.set(obj, ((TagDecodeable<R, F>) decoder).convertFrom(in, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public final F read(R in) {
|
public final F read(R in) {
|
||||||
return decoder.convertFrom(in);
|
return decoder.convertFrom(in);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final F readByTag(R in) {
|
|
||||||
return ((TagDecodeable<R, F>) decoder).convertFrom(in, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFieldName() {
|
public String getFieldName() {
|
||||||
return this.attribute.field();
|
return this.attribute.field();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.redkale.util.Creator;
|
|||||||
* @param <V> Map value的数据类型
|
* @param <V> Map value的数据类型
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class MapDecoder<R extends Reader, K, V> implements TagDecodeable<R, Map<K, V>> {
|
public class MapDecoder<R extends Reader, K, V> implements Decodeable<R, Map<K, V>> {
|
||||||
|
|
||||||
protected final Type type;
|
protected final Type type;
|
||||||
|
|
||||||
@@ -115,15 +115,10 @@ public class MapDecoder<R extends Reader, K, V> implements TagDecodeable<R, Map<
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<K, V> convertFrom(R in) {
|
public Map<K, V> convertFrom(R in) {
|
||||||
return convertFrom(in, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<K, V> convertFrom(R in, DeMember member) {
|
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
Decodeable<R, K> kdecoder = this.keyDecoder;
|
Decodeable<R, K> kdecoder = this.keyDecoder;
|
||||||
Decodeable<R, V> vdecoder = this.valueDecoder;
|
Decodeable<R, V> vdecoder = this.valueDecoder;
|
||||||
int len = in.readMapB(member, kdecoder, vdecoder);
|
int len = in.readMapB(kdecoder, vdecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,14 +23,14 @@ public abstract class Reader {
|
|||||||
/**
|
/**
|
||||||
* 集合对象为null
|
* 集合对象为null
|
||||||
*
|
*
|
||||||
* @see #readArrayB(org.redkale.convert.DeMember, org.redkale.convert.Decodeable)
|
* @see #readArrayB(org.redkale.convert.Decodeable)
|
||||||
*/
|
*/
|
||||||
public static final short SIGN_NULL = -1;
|
public static final short SIGN_NULL = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 不确定的长度, 比如解析json数组
|
* 不确定的长度, 比如解析json数组
|
||||||
*
|
*
|
||||||
* @see #readArrayB(org.redkale.convert.DeMember, org.redkale.convert.Decodeable)
|
* @see #readArrayB(org.redkale.convert.Decodeable)
|
||||||
*/
|
*/
|
||||||
public static final short SIGN_VARIABLE = -2;
|
public static final short SIGN_VARIABLE = -2;
|
||||||
|
|
||||||
@@ -90,11 +90,10 @@ public abstract class Reader {
|
|||||||
*
|
*
|
||||||
* @see #SIGN_NULL
|
* @see #SIGN_NULL
|
||||||
* @see #SIGN_VARIABLE
|
* @see #SIGN_VARIABLE
|
||||||
* @param member DeMember
|
|
||||||
* @param componentDecoder Decodeable
|
* @param componentDecoder Decodeable
|
||||||
* @return 返回数组的长度
|
* @return 返回数组的长度
|
||||||
*/
|
*/
|
||||||
public abstract int readArrayB(DeMember member, Decodeable componentDecoder);
|
public abstract int readArrayB(Decodeable componentDecoder);
|
||||||
|
|
||||||
/** 读取数组的尾端 */
|
/** 读取数组的尾端 */
|
||||||
public abstract void readArrayE();
|
public abstract void readArrayE();
|
||||||
@@ -102,12 +101,11 @@ public abstract class Reader {
|
|||||||
/**
|
/**
|
||||||
* 读取map的开头并返回map的size
|
* 读取map的开头并返回map的size
|
||||||
*
|
*
|
||||||
* @param member DeMember
|
|
||||||
* @param keyDecoder Decodeable
|
* @param keyDecoder Decodeable
|
||||||
* @param valueDecoder Decodeable
|
* @param valueDecoder Decodeable
|
||||||
* @return 返回map的size
|
* @return 返回map的size
|
||||||
*/
|
*/
|
||||||
public abstract int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valueDecoder);
|
public abstract int readMapB(Decodeable keyDecoder, Decodeable valueDecoder);
|
||||||
|
|
||||||
/** 读取数组的尾端 */
|
/** 读取数组的尾端 */
|
||||||
public abstract void readMapE();
|
public abstract void readMapE();
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import java.util.stream.Stream;
|
|||||||
* @param <T> 反解析的集合元素类型
|
* @param <T> 反解析的集合元素类型
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class StreamDecoder<R extends Reader, T> implements TagDecodeable<R, Stream<T>> {
|
public class StreamDecoder<R extends Reader, T> implements Decodeable<R, Stream<T>> {
|
||||||
|
|
||||||
protected final Type type;
|
protected final Type type;
|
||||||
|
|
||||||
@@ -74,13 +74,9 @@ public class StreamDecoder<R extends Reader, T> implements TagDecodeable<R, Stre
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Stream<T> convertFrom(R in) {
|
public Stream<T> convertFrom(R in) {
|
||||||
return convertFrom(in, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stream<T> convertFrom(R in, DeMember member) {
|
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
final Decodeable<R, T> itemDecoder = this.componentDecoder;
|
final Decodeable<R, T> itemDecoder = this.componentDecoder;
|
||||||
int len = in.readArrayB(member, itemDecoder);
|
int len = in.readArrayB(itemDecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ public class BsonArrayDecoder<T> extends ArrayDecoder<BsonReader, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public T[] convertFrom(BsonReader in, DeMember member) {
|
public T[] convertFrom(BsonReader in) {
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
byte[] typevals = new byte[1];
|
byte[] typevals = new byte[1];
|
||||||
int len = in.readArrayB(member, typevals, this.componentDecoder);
|
int len = in.readArrayB(typevals, this.componentDecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ package org.redkale.convert.bson;
|
|||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import org.redkale.convert.*;
|
import org.redkale.convert.*;
|
||||||
import org.redkale.convert.ext.ByteSimpledCoder;
|
|
||||||
import static org.redkale.convert.Reader.SIGN_NULL;
|
import static org.redkale.convert.Reader.SIGN_NULL;
|
||||||
|
import org.redkale.convert.ext.ByteSimpledCoder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 以ByteBuffer为数据载体的BsonReader
|
* 以ByteBuffer为数据载体的BsonReader
|
||||||
@@ -49,7 +49,7 @@ public class BsonByteBufferReader extends BsonReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int readMapB(DeMember member, byte[] typevals, Decodeable keyDecoder, Decodeable valueDecoder) {
|
public int readMapB(byte[] typevals, Decodeable keyDecoder, Decodeable valueDecoder) {
|
||||||
short bt = readShort();
|
short bt = readShort();
|
||||||
if (bt == Reader.SIGN_NULL) {
|
if (bt == Reader.SIGN_NULL) {
|
||||||
return bt;
|
return bt;
|
||||||
@@ -73,7 +73,7 @@ public class BsonByteBufferReader extends BsonReader {
|
|||||||
* @return 数组长度或 SIGN_NULL
|
* @return 数组长度或 SIGN_NULL
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final int readArrayB(DeMember member, byte[] typevals, Decodeable componentDecoder) {
|
public final int readArrayB(byte[] typevals, Decodeable componentDecoder) {
|
||||||
short bt = readShort();
|
short bt = readShort();
|
||||||
if (bt == Reader.SIGN_NULL) {
|
if (bt == Reader.SIGN_NULL) {
|
||||||
return bt;
|
return bt;
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ public class BsonCollectionDecoder<T> extends CollectionDecoder<BsonReader, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<T> convertFrom(BsonReader in, DeMember member) {
|
public Collection<T> convertFrom(BsonReader in) {
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
byte[] typevals = new byte[1];
|
byte[] typevals = new byte[1];
|
||||||
int len = in.readArrayB(member, typevals, componentDecoder);
|
int len = in.readArrayB(typevals, componentDecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ public class BsonMapDecoder<K, V> extends MapDecoder<BsonReader, K, V> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<K, V> convertFrom(BsonReader in, DeMember member) {
|
public Map<K, V> convertFrom(BsonReader in) {
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
byte[] typevals = new byte[2];
|
byte[] typevals = new byte[2];
|
||||||
int len = in.readMapB(member, typevals, this.keyDecoder, this.valueDecoder);
|
int len = in.readMapB(typevals, this.keyDecoder, this.valueDecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -166,11 +166,11 @@ public class BsonReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valueDecoder) {
|
public int readMapB(Decodeable keyDecoder, Decodeable valueDecoder) {
|
||||||
return readMapB(member, null, keyDecoder, valueDecoder);
|
return readMapB(null, keyDecoder, valueDecoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int readMapB(DeMember member, byte[] typevals, Decodeable keyDecoder, Decodeable valueDecoder) {
|
public int readMapB(byte[] typevals, Decodeable keyDecoder, Decodeable valueDecoder) {
|
||||||
short bt = readShort();
|
short bt = readShort();
|
||||||
if (bt == Reader.SIGN_NULL) {
|
if (bt == Reader.SIGN_NULL) {
|
||||||
return bt;
|
return bt;
|
||||||
@@ -191,11 +191,11 @@ public class BsonReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int readArrayB(DeMember member, Decodeable componentDecoder) {
|
public int readArrayB(Decodeable componentDecoder) {
|
||||||
return readArrayB(member, null, componentDecoder);
|
return readArrayB(null, componentDecoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int readArrayB(DeMember member, byte[] typevals, Decodeable componentDecoder) { // componentDecoder可能为null
|
public int readArrayB(byte[] typevals, Decodeable componentDecoder) { // componentDecoder可能为null
|
||||||
short bt = readShort();
|
short bt = readShort();
|
||||||
if (bt == Reader.SIGN_NULL) {
|
if (bt == Reader.SIGN_NULL) {
|
||||||
return bt;
|
return bt;
|
||||||
@@ -264,7 +264,7 @@ public class BsonReader extends Reader {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final byte[] readByteArray() {
|
public final byte[] readByteArray() {
|
||||||
int len = readArrayB(null, null, null);
|
int len = readArrayB(null, null);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ public class BsonStreamDecoder<T> extends StreamDecoder<BsonReader, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Stream<T> convertFrom(BsonReader in, DeMember member) {
|
public Stream<T> convertFrom(BsonReader in) {
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
byte[] typevals = new byte[1];
|
byte[] typevals = new byte[1];
|
||||||
int len = in.readArrayB(member, typevals, componentDecoder);
|
int len = in.readArrayB(typevals, componentDecoder);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public final class BoolArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean[] convertFrom(R in) {
|
public boolean[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, BoolSimpledCoder.instance);
|
int len = in.readArrayB(BoolSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public final class ByteBufferSimpledCoder<R extends Reader, W extends Writer> ex
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ByteBuffer convertFrom(R in) {
|
public ByteBuffer convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, ByteSimpledCoder.instance);
|
int len = in.readArrayB(ByteSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public final class CharArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public char[] convertFrom(R in) {
|
public char[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, CharSimpledCoder.instance);
|
int len = in.readArrayB(CharSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public final class DoubleArraySimpledCoder<R extends Reader, W extends Writer> e
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double[] convertFrom(R in) {
|
public double[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, DoubleSimpledCoder.instance);
|
int len = in.readArrayB(DoubleSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public final class FloatArraySimpledCoder<R extends Reader, W extends Writer> ex
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float[] convertFrom(R in) {
|
public float[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, FloatSimpledCoder.instance);
|
int len = in.readArrayB(FloatSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public final class IntArraySimpledCoder<R extends Reader, W extends Writer> exte
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] convertFrom(R in) {
|
public int[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, IntSimpledCoder.instance);
|
int len = in.readArrayB(IntSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public final class LongArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long[] convertFrom(R in) {
|
public long[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, LongSimpledCoder.instance);
|
int len = in.readArrayB(LongSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public final class ShortArraySimpledCoder<R extends Reader, W extends Writer> ex
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public short[] convertFrom(R in) {
|
public short[] convertFrom(R in) {
|
||||||
int len = in.readArrayB(null, ShortSimpledCoder.instance);
|
int len = in.readArrayB(ShortSimpledCoder.instance);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,11 +40,7 @@ public final class StringArraySimpledCoder<R extends Reader, W extends Writer> e
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] convertFrom(R in) {
|
public String[] convertFrom(R in) {
|
||||||
return convertFrom(in, null);
|
int len = in.readArrayB(StringSimpledCoder.instance);
|
||||||
}
|
|
||||||
|
|
||||||
public String[] convertFrom(R in, DeMember member) {
|
|
||||||
int len = in.readArrayB(member, StringSimpledCoder.instance);
|
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,12 +180,11 @@ public class JsonByteBufferReader extends JsonReader {
|
|||||||
/**
|
/**
|
||||||
* 判断下一个非空白字符是否为[
|
* 判断下一个非空白字符是否为[
|
||||||
*
|
*
|
||||||
* @param member DeMember
|
|
||||||
* @param decoder Decodeable
|
* @param decoder Decodeable
|
||||||
* @return SIGN_VARIABLE 或 SIGN_NULL
|
* @return SIGN_VARIABLE 或 SIGN_NULL
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final int readArrayB(DeMember member, Decodeable decoder) {
|
public final int readArrayB(Decodeable decoder) {
|
||||||
char ch = nextGoodChar(true);
|
char ch = nextGoodChar(true);
|
||||||
if (ch == '[' || ch == '{') {
|
if (ch == '[' || ch == '{') {
|
||||||
return SIGN_VARIABLE;
|
return SIGN_VARIABLE;
|
||||||
|
|||||||
@@ -35,11 +35,7 @@ public class JsonMultiArrayDecoder implements Decodeable<JsonReader, Object[]> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object[] convertFrom(JsonReader in) {
|
public Object[] convertFrom(JsonReader in) {
|
||||||
return convertFrom(in, null);
|
int len = in.readArrayB(null);
|
||||||
}
|
|
||||||
|
|
||||||
public Object[] convertFrom(JsonReader in, DeMember member) {
|
|
||||||
int len = in.readArrayB(member, null);
|
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -297,14 +297,13 @@ public class JsonReader extends Reader {
|
|||||||
/**
|
/**
|
||||||
* 判断下一个非空白字符是否为{
|
* 判断下一个非空白字符是否为{
|
||||||
*
|
*
|
||||||
* @param member DeMember
|
|
||||||
* @param keyDecoder Decodeable
|
* @param keyDecoder Decodeable
|
||||||
* @param valuedecoder Decodeable
|
* @param valuedecoder Decodeable
|
||||||
* @return SIGN_VARIABLE 或 SIGN_NULL
|
* @return SIGN_VARIABLE 或 SIGN_NULL
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valuedecoder) {
|
public final int readMapB(Decodeable keyDecoder, Decodeable valuedecoder) {
|
||||||
return readArrayB(member, keyDecoder);
|
return readArrayB(keyDecoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -315,12 +314,11 @@ public class JsonReader extends Reader {
|
|||||||
/**
|
/**
|
||||||
* 判断下一个非空白字符是否为[
|
* 判断下一个非空白字符是否为[
|
||||||
*
|
*
|
||||||
* @param member DeMember
|
|
||||||
* @param componentDecoder Decodeable
|
* @param componentDecoder Decodeable
|
||||||
* @return SIGN_VARIABLE 或 SIGN_NULL
|
* @return SIGN_VARIABLE 或 SIGN_NULL
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int readArrayB(DeMember member, Decodeable componentDecoder) {
|
public int readArrayB(Decodeable componentDecoder) {
|
||||||
if (this.text.length == 0) {
|
if (this.text.length == 0) {
|
||||||
return SIGN_NULL;
|
return SIGN_NULL;
|
||||||
}
|
}
|
||||||
@@ -720,7 +718,7 @@ public class JsonReader extends Reader {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final byte[] readByteArray() {
|
public final byte[] readByteArray() {
|
||||||
int len = readArrayB(null, null);
|
int len = readArrayB(null);
|
||||||
if (len == Reader.SIGN_NULL) {
|
if (len == Reader.SIGN_NULL) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ import org.redkale.convert.*;
|
|||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
* @param <T> T
|
* @param <T> T
|
||||||
*/
|
*/
|
||||||
public class ProtobufArrayDecoder<T> extends ArrayDecoder<ProtobufReader, T> {
|
public class ProtobufArrayDecoder<T> extends ArrayDecoder<ProtobufReader, T>
|
||||||
|
implements ProtobufTagDecodeable<ProtobufReader, T[]> {
|
||||||
|
|
||||||
protected final boolean componentSimpled;
|
protected final boolean componentSimpled;
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@ public class ProtobufArrayDecoder<T> extends ArrayDecoder<ProtobufReader, T> {
|
|||||||
this.checkInited();
|
this.checkInited();
|
||||||
final boolean simpled = this.componentSimpled;
|
final boolean simpled = this.componentSimpled;
|
||||||
final Decodeable<ProtobufReader, T> itemDecoder = this.componentDecoder;
|
final Decodeable<ProtobufReader, T> itemDecoder = this.componentDecoder;
|
||||||
in.readArrayB(member, itemDecoder);
|
in.readArrayB(itemDecoder);
|
||||||
final List<T> result = new ArrayList();
|
final List<T> result = new ArrayList();
|
||||||
final int limit = in.limit();
|
final int limit = in.limit();
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ import org.redkale.convert.*;
|
|||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
* @param <T> T
|
* @param <T> T
|
||||||
*/
|
*/
|
||||||
public class ProtobufCollectionDecoder<T> extends CollectionDecoder<ProtobufReader, T> {
|
public class ProtobufCollectionDecoder<T> extends CollectionDecoder<ProtobufReader, T>
|
||||||
|
implements ProtobufTagDecodeable<ProtobufReader, Collection<T>> {
|
||||||
|
|
||||||
protected final boolean componentSimpled;
|
protected final boolean componentSimpled;
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ public class ProtobufCollectionDecoder<T> extends CollectionDecoder<ProtobufRead
|
|||||||
this.checkInited();
|
this.checkInited();
|
||||||
final boolean simpled = !this.componentSimpled;
|
final boolean simpled = !this.componentSimpled;
|
||||||
final Decodeable<ProtobufReader, T> itemDecoder = this.componentDecoder;
|
final Decodeable<ProtobufReader, T> itemDecoder = this.componentDecoder;
|
||||||
in.readArrayB(member, itemDecoder);
|
in.readArrayB(itemDecoder);
|
||||||
final Collection<T> result = this.creator.create();
|
final Collection<T> result = this.creator.create();
|
||||||
final int limit = in.limit();
|
final int limit = in.limit();
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ import org.redkale.convert.*;
|
|||||||
* @param <K> K
|
* @param <K> K
|
||||||
* @param <V> V
|
* @param <V> V
|
||||||
*/
|
*/
|
||||||
public class ProtobufMapDecoder<K, V> extends MapDecoder<ProtobufReader, K, V> {
|
public class ProtobufMapDecoder<K, V> extends MapDecoder<ProtobufReader, K, V>
|
||||||
|
implements ProtobufTagDecodeable<ProtobufReader, Map<K, V>> {
|
||||||
|
|
||||||
protected final boolean enumtostring;
|
protected final boolean enumtostring;
|
||||||
|
|
||||||
@@ -26,7 +27,7 @@ public class ProtobufMapDecoder<K, V> extends MapDecoder<ProtobufReader, K, V> {
|
|||||||
@Override
|
@Override
|
||||||
public Map<K, V> convertFrom(ProtobufReader in, DeMember member) {
|
public Map<K, V> convertFrom(ProtobufReader in, DeMember member) {
|
||||||
this.checkInited();
|
this.checkInited();
|
||||||
in.readMapB(member, this.keyDecoder, this.valueDecoder);
|
in.readMapB(this.keyDecoder, this.valueDecoder);
|
||||||
final Map<K, V> result = this.creator.create();
|
final Map<K, V> result = this.creator.create();
|
||||||
Decodeable<ProtobufReader, K> kdecoder = this.keyDecoder;
|
Decodeable<ProtobufReader, K> kdecoder = this.keyDecoder;
|
||||||
Decodeable<ProtobufReader, V> vdecoder = this.valueDecoder;
|
Decodeable<ProtobufReader, V> vdecoder = this.valueDecoder;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import org.redkale.util.*;
|
|||||||
* @param <T> T
|
* @param <T> T
|
||||||
*/
|
*/
|
||||||
public class ProtobufObjectDecoder<T> extends ObjectDecoder<ProtobufReader, T>
|
public class ProtobufObjectDecoder<T> extends ObjectDecoder<ProtobufReader, T>
|
||||||
implements TagDecodeable<ProtobufReader, T> {
|
implements ProtobufTagDecodeable<ProtobufReader, T> {
|
||||||
|
|
||||||
protected ProtobufObjectDecoder(Type type) {
|
protected ProtobufObjectDecoder(Type type) {
|
||||||
super(type);
|
super(type);
|
||||||
@@ -48,8 +48,8 @@ public class ProtobufObjectDecoder<T> extends ObjectDecoder<ProtobufReader, T>
|
|||||||
@Override
|
@Override
|
||||||
protected Object readDeMemberValue(ProtobufReader in, DeMember member, boolean first) {
|
protected Object readDeMemberValue(ProtobufReader in, DeMember member, boolean first) {
|
||||||
Decodeable decoder = member.getDecoder();
|
Decodeable decoder = member.getDecoder();
|
||||||
if (decoder instanceof TagDecodeable) {
|
if (decoder instanceof ProtobufTagDecodeable) {
|
||||||
return member.readByTag(in);
|
return ((ProtobufTagDecodeable) decoder).convertFrom(in, member);
|
||||||
} else {
|
} else {
|
||||||
return member.read(in);
|
return member.read(in);
|
||||||
}
|
}
|
||||||
@@ -58,11 +58,11 @@ public class ProtobufObjectDecoder<T> extends ObjectDecoder<ProtobufReader, T>
|
|||||||
@Override
|
@Override
|
||||||
protected void readDeMemberValue(ProtobufReader in, DeMember member, T result, boolean first) {
|
protected void readDeMemberValue(ProtobufReader in, DeMember member, T result, boolean first) {
|
||||||
Decodeable decoder = member.getDecoder();
|
Decodeable decoder = member.getDecoder();
|
||||||
if (decoder instanceof TagDecodeable) {
|
if (decoder instanceof ProtobufTagDecodeable) {
|
||||||
member.readByTag(in, result);
|
Object val = ((ProtobufTagDecodeable) decoder).convertFrom(in, member);
|
||||||
|
member.getAttribute().set(result, val);
|
||||||
} else {
|
} else {
|
||||||
member.read(in, result);
|
member.read(in, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ public class ProtobufReader extends Reader {
|
|||||||
|
|
||||||
protected byte[] content;
|
protected byte[] content;
|
||||||
|
|
||||||
//protected int initoffset;
|
|
||||||
|
|
||||||
protected int limit;
|
protected int limit;
|
||||||
|
|
||||||
protected int cacheTag = Integer.MIN_VALUE;
|
protected int cacheTag = Integer.MIN_VALUE;
|
||||||
@@ -51,7 +49,6 @@ public class ProtobufReader extends Reader {
|
|||||||
public final void setBytes(byte[] bytes) {
|
public final void setBytes(byte[] bytes) {
|
||||||
if (bytes == null) {
|
if (bytes == null) {
|
||||||
this.position = 0;
|
this.position = 0;
|
||||||
//this.initoffset = 0;
|
|
||||||
this.limit = 0;
|
this.limit = 0;
|
||||||
} else {
|
} else {
|
||||||
setBytes(bytes, 0, bytes.length);
|
setBytes(bytes, 0, bytes.length);
|
||||||
@@ -61,13 +58,11 @@ public class ProtobufReader extends Reader {
|
|||||||
public final void setBytes(byte[] bytes, int start, int len) {
|
public final void setBytes(byte[] bytes, int start, int len) {
|
||||||
if (bytes == null) {
|
if (bytes == null) {
|
||||||
this.position = 0;
|
this.position = 0;
|
||||||
//this.initoffset = 0;
|
|
||||||
this.limit = 0;
|
this.limit = 0;
|
||||||
} else {
|
} else {
|
||||||
this.content = bytes;
|
this.content = bytes;
|
||||||
this.position = start - 1;
|
this.position = start - 1;
|
||||||
this.limit = start + len;
|
this.limit = start + len;
|
||||||
//this.initoffset = this.position;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +77,6 @@ public class ProtobufReader extends Reader {
|
|||||||
protected boolean recycle() {
|
protected boolean recycle() {
|
||||||
this.position = -1;
|
this.position = -1;
|
||||||
this.limit = -1;
|
this.limit = -1;
|
||||||
//this.initoffset = -1;
|
|
||||||
this.content = null;
|
this.content = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -137,7 +131,7 @@ public class ProtobufReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valueDecoder) {
|
public final int readMapB(Decodeable keyDecoder, Decodeable valueDecoder) {
|
||||||
return Reader.SIGN_VARIABLE;
|
return Reader.SIGN_VARIABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +148,7 @@ public class ProtobufReader extends Reader {
|
|||||||
* @return SIGN_VARIABLE 或 SIGN_NULL
|
* @return SIGN_VARIABLE 或 SIGN_NULL
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final int readArrayB(DeMember member, Decodeable componentDecoder) {
|
public final int readArrayB(Decodeable componentDecoder) {
|
||||||
return Reader.SIGN_VARIABLE;
|
return Reader.SIGN_VARIABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ import org.redkale.convert.*;
|
|||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
* @param <T> 泛型
|
* @param <T> 泛型
|
||||||
*/
|
*/
|
||||||
public class ProtobufStreamDecoder<T> extends StreamDecoder<ProtobufReader, T> {
|
public class ProtobufStreamDecoder<T> extends StreamDecoder<ProtobufReader, T>
|
||||||
|
implements ProtobufTagDecodeable<ProtobufReader, Stream<T>> {
|
||||||
|
|
||||||
protected final boolean componentSimpled;
|
protected final boolean componentSimpled;
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@ public class ProtobufStreamDecoder<T> extends StreamDecoder<ProtobufReader, T> {
|
|||||||
this.checkInited();
|
this.checkInited();
|
||||||
final boolean simpled = !this.componentSimpled;
|
final boolean simpled = !this.componentSimpled;
|
||||||
final Decodeable<ProtobufReader, T> itemDecoder = this.componentDecoder;
|
final Decodeable<ProtobufReader, T> itemDecoder = this.componentDecoder;
|
||||||
in.readArrayB(member, itemDecoder);
|
in.readArrayB(itemDecoder);
|
||||||
final List<T> result = new ArrayList();
|
final List<T> result = new ArrayList();
|
||||||
final int limit = in.limit();
|
final int limit = in.limit();
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
* Copyright (c) 2016-2116 Redkale
|
* Copyright (c) 2016-2116 Redkale
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*/
|
*/
|
||||||
package org.redkale.convert;
|
package org.redkale.convert.pb;
|
||||||
|
|
||||||
|
import org.redkale.convert.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 带tag的反序列化操作类
|
* 带tag的反序列化操作类
|
||||||
@@ -13,7 +15,7 @@ package org.redkale.convert;
|
|||||||
* @param <R> Reader输入的子类
|
* @param <R> Reader输入的子类
|
||||||
* @param <T> 反解析的数据类型
|
* @param <T> 反解析的数据类型
|
||||||
*/
|
*/
|
||||||
public interface TagDecodeable<R extends Reader, T> extends Decodeable<R, T> {
|
public interface ProtobufTagDecodeable<R extends Reader, T> extends Decodeable<R, T> {
|
||||||
/**
|
/**
|
||||||
* 反序列化操作
|
* 反序列化操作
|
||||||
*
|
*
|
||||||
Reference in New Issue
Block a user