From 4f9805b2543a743a3dd93a48400aa8a1b20a7793 Mon Sep 17 00:00:00 2001 From: redkale Date: Sat, 28 Sep 2024 09:21:01 +0800 Subject: [PATCH] protobuf --- .../java/org/redkale/convert/ArrayDecoder.java | 9 ++------- .../org/redkale/convert/CollectionDecoder.java | 8 ++------ src/main/java/org/redkale/convert/DeMember.java | 8 -------- src/main/java/org/redkale/convert/MapDecoder.java | 9 ++------- src/main/java/org/redkale/convert/Reader.java | 10 ++++------ .../java/org/redkale/convert/StreamDecoder.java | 8 ++------ .../org/redkale/convert/bson/BsonArrayDecoder.java | 4 ++-- .../redkale/convert/bson/BsonByteBufferReader.java | 6 +++--- .../convert/bson/BsonCollectionDecoder.java | 4 ++-- .../org/redkale/convert/bson/BsonMapDecoder.java | 4 ++-- .../java/org/redkale/convert/bson/BsonReader.java | 14 +++++++------- .../redkale/convert/bson/BsonStreamDecoder.java | 4 ++-- .../redkale/convert/ext/BoolArraySimpledCoder.java | 2 +- .../convert/ext/ByteBufferSimpledCoder.java | 2 +- .../redkale/convert/ext/CharArraySimpledCoder.java | 2 +- .../convert/ext/DoubleArraySimpledCoder.java | 2 +- .../convert/ext/FloatArraySimpledCoder.java | 2 +- .../redkale/convert/ext/IntArraySimpledCoder.java | 2 +- .../redkale/convert/ext/LongArraySimpledCoder.java | 2 +- .../convert/ext/ShortArraySimpledCoder.java | 2 +- .../convert/ext/StringArraySimpledCoder.java | 6 +----- .../redkale/convert/json/JsonByteBufferReader.java | 3 +-- .../convert/json/JsonMultiArrayDecoder.java | 6 +----- .../java/org/redkale/convert/json/JsonReader.java | 10 ++++------ .../redkale/convert/pb/ProtobufArrayDecoder.java | 5 +++-- .../convert/pb/ProtobufCollectionDecoder.java | 5 +++-- .../org/redkale/convert/pb/ProtobufMapDecoder.java | 5 +++-- .../redkale/convert/pb/ProtobufObjectDecoder.java | 12 ++++++------ .../org/redkale/convert/pb/ProtobufReader.java | 10 ++-------- .../redkale/convert/pb/ProtobufStreamDecoder.java | 5 +++-- .../ProtobufTagDecodeable.java} | 6 ++++-- 31 files changed, 69 insertions(+), 108 deletions(-) rename src/main/java/org/redkale/convert/{TagDecodeable.java => pb/ProtobufTagDecodeable.java} (73%) diff --git a/src/main/java/org/redkale/convert/ArrayDecoder.java b/src/main/java/org/redkale/convert/ArrayDecoder.java index 645897f51..da35fcb57 100644 --- a/src/main/java/org/redkale/convert/ArrayDecoder.java +++ b/src/main/java/org/redkale/convert/ArrayDecoder.java @@ -23,7 +23,7 @@ import org.redkale.util.Creator; * @param 反解析的数组元素类型 */ @SuppressWarnings("unchecked") -public class ArrayDecoder implements TagDecodeable { +public class ArrayDecoder implements Decodeable { protected final Type type; @@ -88,14 +88,9 @@ public class ArrayDecoder implements TagDecodeable @Override public T[] convertFrom(R in) { - return convertFrom(in, null); - } - - @Override - public T[] convertFrom(R in, DeMember member) { this.checkInited(); final Decodeable itemDecoder = this.componentDecoder; - int len = in.readArrayB(member, itemDecoder); + int len = in.readArrayB(itemDecoder); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/CollectionDecoder.java b/src/main/java/org/redkale/convert/CollectionDecoder.java index 59333a0c4..a4b188375 100644 --- a/src/main/java/org/redkale/convert/CollectionDecoder.java +++ b/src/main/java/org/redkale/convert/CollectionDecoder.java @@ -21,7 +21,7 @@ import org.redkale.util.Creator; * @param 反解析的集合元素类型 */ @SuppressWarnings("unchecked") -public class CollectionDecoder implements TagDecodeable> { +public class CollectionDecoder implements Decodeable> { protected final Type type; @@ -93,13 +93,9 @@ public class CollectionDecoder implements TagDecodeable convertFrom(R in) { - return convertFrom(in, null); - } - - public Collection convertFrom(R in, DeMember member) { this.checkInited(); final Decodeable itemDecoder = this.componentDecoder; - int size = in.readArrayB(member, itemDecoder); + int size = in.readArrayB(itemDecoder); if (size == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/DeMember.java b/src/main/java/org/redkale/convert/DeMember.java index 837bcd324..5bee4def2 100644 --- a/src/main/java/org/redkale/convert/DeMember.java +++ b/src/main/java/org/redkale/convert/DeMember.java @@ -107,18 +107,10 @@ public final class DeMember { this.attribute.set(obj, decoder.convertFrom(in)); } - public final void readByTag(R in, T obj) { - this.attribute.set(obj, ((TagDecodeable) decoder).convertFrom(in, this)); - } - public final F read(R in) { return decoder.convertFrom(in); } - public final F readByTag(R in) { - return ((TagDecodeable) decoder).convertFrom(in, this); - } - public String getFieldName() { return this.attribute.field(); } diff --git a/src/main/java/org/redkale/convert/MapDecoder.java b/src/main/java/org/redkale/convert/MapDecoder.java index 97f8b5f52..11965fa11 100644 --- a/src/main/java/org/redkale/convert/MapDecoder.java +++ b/src/main/java/org/redkale/convert/MapDecoder.java @@ -21,7 +21,7 @@ import org.redkale.util.Creator; * @param Map value的数据类型 */ @SuppressWarnings("unchecked") -public class MapDecoder implements TagDecodeable> { +public class MapDecoder implements Decodeable> { protected final Type type; @@ -115,15 +115,10 @@ public class MapDecoder implements TagDecodeable convertFrom(R in) { - return convertFrom(in, null); - } - - @Override - public Map convertFrom(R in, DeMember member) { this.checkInited(); Decodeable kdecoder = this.keyDecoder; Decodeable vdecoder = this.valueDecoder; - int len = in.readMapB(member, kdecoder, vdecoder); + int len = in.readMapB(kdecoder, vdecoder); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/Reader.java b/src/main/java/org/redkale/convert/Reader.java index 3adc21839..c34adf385 100644 --- a/src/main/java/org/redkale/convert/Reader.java +++ b/src/main/java/org/redkale/convert/Reader.java @@ -23,14 +23,14 @@ public abstract class Reader { /** * 集合对象为null * - * @see #readArrayB(org.redkale.convert.DeMember, org.redkale.convert.Decodeable) + * @see #readArrayB(org.redkale.convert.Decodeable) */ public static final short SIGN_NULL = -1; /** * 不确定的长度, 比如解析json数组 * - * @see #readArrayB(org.redkale.convert.DeMember, org.redkale.convert.Decodeable) + * @see #readArrayB(org.redkale.convert.Decodeable) */ public static final short SIGN_VARIABLE = -2; @@ -90,11 +90,10 @@ public abstract class Reader { * * @see #SIGN_NULL * @see #SIGN_VARIABLE - * @param member DeMember * @param componentDecoder Decodeable * @return 返回数组的长度 */ - public abstract int readArrayB(DeMember member, Decodeable componentDecoder); + public abstract int readArrayB(Decodeable componentDecoder); /** 读取数组的尾端 */ public abstract void readArrayE(); @@ -102,12 +101,11 @@ public abstract class Reader { /** * 读取map的开头并返回map的size * - * @param member DeMember * @param keyDecoder Decodeable * @param valueDecoder Decodeable * @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(); diff --git a/src/main/java/org/redkale/convert/StreamDecoder.java b/src/main/java/org/redkale/convert/StreamDecoder.java index 9c4069d75..6c7edbdee 100644 --- a/src/main/java/org/redkale/convert/StreamDecoder.java +++ b/src/main/java/org/redkale/convert/StreamDecoder.java @@ -21,7 +21,7 @@ import java.util.stream.Stream; * @param 反解析的集合元素类型 */ @SuppressWarnings("unchecked") -public class StreamDecoder implements TagDecodeable> { +public class StreamDecoder implements Decodeable> { protected final Type type; @@ -74,13 +74,9 @@ public class StreamDecoder implements TagDecodeable convertFrom(R in) { - return convertFrom(in, null); - } - - public Stream convertFrom(R in, DeMember member) { this.checkInited(); final Decodeable itemDecoder = this.componentDecoder; - int len = in.readArrayB(member, itemDecoder); + int len = in.readArrayB(itemDecoder); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/bson/BsonArrayDecoder.java b/src/main/java/org/redkale/convert/bson/BsonArrayDecoder.java index ab7756d5c..1041ba239 100644 --- a/src/main/java/org/redkale/convert/bson/BsonArrayDecoder.java +++ b/src/main/java/org/redkale/convert/bson/BsonArrayDecoder.java @@ -26,10 +26,10 @@ public class BsonArrayDecoder extends ArrayDecoder { } @Override - public T[] convertFrom(BsonReader in, DeMember member) { + public T[] convertFrom(BsonReader in) { this.checkInited(); 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) { return null; } diff --git a/src/main/java/org/redkale/convert/bson/BsonByteBufferReader.java b/src/main/java/org/redkale/convert/bson/BsonByteBufferReader.java index fd73953a5..ee015db7f 100644 --- a/src/main/java/org/redkale/convert/bson/BsonByteBufferReader.java +++ b/src/main/java/org/redkale/convert/bson/BsonByteBufferReader.java @@ -9,8 +9,8 @@ package org.redkale.convert.bson; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import org.redkale.convert.*; -import org.redkale.convert.ext.ByteSimpledCoder; import static org.redkale.convert.Reader.SIGN_NULL; +import org.redkale.convert.ext.ByteSimpledCoder; /** * 以ByteBuffer为数据载体的BsonReader @@ -49,7 +49,7 @@ public class BsonByteBufferReader extends BsonReader { } @Override - public int readMapB(DeMember member, byte[] typevals, Decodeable keyDecoder, Decodeable valueDecoder) { + public int readMapB(byte[] typevals, Decodeable keyDecoder, Decodeable valueDecoder) { short bt = readShort(); if (bt == Reader.SIGN_NULL) { return bt; @@ -73,7 +73,7 @@ public class BsonByteBufferReader extends BsonReader { * @return 数组长度或 SIGN_NULL */ @Override - public final int readArrayB(DeMember member, byte[] typevals, Decodeable componentDecoder) { + public final int readArrayB(byte[] typevals, Decodeable componentDecoder) { short bt = readShort(); if (bt == Reader.SIGN_NULL) { return bt; diff --git a/src/main/java/org/redkale/convert/bson/BsonCollectionDecoder.java b/src/main/java/org/redkale/convert/bson/BsonCollectionDecoder.java index 18a5365cb..b49f8415e 100644 --- a/src/main/java/org/redkale/convert/bson/BsonCollectionDecoder.java +++ b/src/main/java/org/redkale/convert/bson/BsonCollectionDecoder.java @@ -25,10 +25,10 @@ public class BsonCollectionDecoder extends CollectionDecoder { } @Override - public Collection convertFrom(BsonReader in, DeMember member) { + public Collection convertFrom(BsonReader in) { this.checkInited(); byte[] typevals = new byte[1]; - int len = in.readArrayB(member, typevals, componentDecoder); + int len = in.readArrayB(typevals, componentDecoder); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/bson/BsonMapDecoder.java b/src/main/java/org/redkale/convert/bson/BsonMapDecoder.java index 8be41919f..27cba0eaf 100644 --- a/src/main/java/org/redkale/convert/bson/BsonMapDecoder.java +++ b/src/main/java/org/redkale/convert/bson/BsonMapDecoder.java @@ -25,10 +25,10 @@ public class BsonMapDecoder extends MapDecoder { } @Override - public Map convertFrom(BsonReader in, DeMember member) { + public Map convertFrom(BsonReader in) { this.checkInited(); 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) { return null; } diff --git a/src/main/java/org/redkale/convert/bson/BsonReader.java b/src/main/java/org/redkale/convert/bson/BsonReader.java index 0f856de7a..7de01244f 100644 --- a/src/main/java/org/redkale/convert/bson/BsonReader.java +++ b/src/main/java/org/redkale/convert/bson/BsonReader.java @@ -166,11 +166,11 @@ public class BsonReader extends Reader { } @Override - public int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valueDecoder) { - return readMapB(member, null, keyDecoder, valueDecoder); + public int readMapB(Decodeable keyDecoder, Decodeable 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(); if (bt == Reader.SIGN_NULL) { return bt; @@ -191,11 +191,11 @@ public class BsonReader extends Reader { } @Override - public int readArrayB(DeMember member, Decodeable componentDecoder) { - return readArrayB(member, null, componentDecoder); + public int readArrayB(Decodeable 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(); if (bt == Reader.SIGN_NULL) { return bt; @@ -264,7 +264,7 @@ public class BsonReader extends Reader { @Override public final byte[] readByteArray() { - int len = readArrayB(null, null, null); + int len = readArrayB(null, null); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/bson/BsonStreamDecoder.java b/src/main/java/org/redkale/convert/bson/BsonStreamDecoder.java index 562375964..cd251d595 100644 --- a/src/main/java/org/redkale/convert/bson/BsonStreamDecoder.java +++ b/src/main/java/org/redkale/convert/bson/BsonStreamDecoder.java @@ -26,10 +26,10 @@ public class BsonStreamDecoder extends StreamDecoder { } @Override - public Stream convertFrom(BsonReader in, DeMember member) { + public Stream convertFrom(BsonReader in) { this.checkInited(); byte[] typevals = new byte[1]; - int len = in.readArrayB(member, typevals, componentDecoder); + int len = in.readArrayB(typevals, componentDecoder); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/BoolArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/BoolArraySimpledCoder.java index 3a075d7f1..f4d14abb2 100644 --- a/src/main/java/org/redkale/convert/ext/BoolArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/BoolArraySimpledCoder.java @@ -40,7 +40,7 @@ public final class BoolArraySimpledCoder ext @Override public boolean[] convertFrom(R in) { - int len = in.readArrayB(null, BoolSimpledCoder.instance); + int len = in.readArrayB(BoolSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/ByteBufferSimpledCoder.java b/src/main/java/org/redkale/convert/ext/ByteBufferSimpledCoder.java index 6d272e603..c0848d5cc 100644 --- a/src/main/java/org/redkale/convert/ext/ByteBufferSimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/ByteBufferSimpledCoder.java @@ -41,7 +41,7 @@ public final class ByteBufferSimpledCoder ex @Override public ByteBuffer convertFrom(R in) { - int len = in.readArrayB(null, ByteSimpledCoder.instance); + int len = in.readArrayB(ByteSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/CharArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/CharArraySimpledCoder.java index d79d7b6e5..d72f299cb 100644 --- a/src/main/java/org/redkale/convert/ext/CharArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/CharArraySimpledCoder.java @@ -40,7 +40,7 @@ public final class CharArraySimpledCoder ext @Override public char[] convertFrom(R in) { - int len = in.readArrayB(null, CharSimpledCoder.instance); + int len = in.readArrayB(CharSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/DoubleArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/DoubleArraySimpledCoder.java index fa5d37c37..eb225c70c 100644 --- a/src/main/java/org/redkale/convert/ext/DoubleArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/DoubleArraySimpledCoder.java @@ -41,7 +41,7 @@ public final class DoubleArraySimpledCoder e @Override public double[] convertFrom(R in) { - int len = in.readArrayB(null, DoubleSimpledCoder.instance); + int len = in.readArrayB(DoubleSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/FloatArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/FloatArraySimpledCoder.java index c89774f94..b5ad5fce8 100644 --- a/src/main/java/org/redkale/convert/ext/FloatArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/FloatArraySimpledCoder.java @@ -40,7 +40,7 @@ public final class FloatArraySimpledCoder ex @Override public float[] convertFrom(R in) { - int len = in.readArrayB(null, FloatSimpledCoder.instance); + int len = in.readArrayB(FloatSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/IntArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/IntArraySimpledCoder.java index da7ba6a02..a2fa94358 100644 --- a/src/main/java/org/redkale/convert/ext/IntArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/IntArraySimpledCoder.java @@ -41,7 +41,7 @@ public final class IntArraySimpledCoder exte @Override public int[] convertFrom(R in) { - int len = in.readArrayB(null, IntSimpledCoder.instance); + int len = in.readArrayB(IntSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/LongArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/LongArraySimpledCoder.java index 84da721fd..586408fd7 100644 --- a/src/main/java/org/redkale/convert/ext/LongArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/LongArraySimpledCoder.java @@ -41,7 +41,7 @@ public final class LongArraySimpledCoder ext @Override public long[] convertFrom(R in) { - int len = in.readArrayB(null, LongSimpledCoder.instance); + int len = in.readArrayB(LongSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/ShortArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/ShortArraySimpledCoder.java index 7c71e2640..a75769932 100644 --- a/src/main/java/org/redkale/convert/ext/ShortArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/ShortArraySimpledCoder.java @@ -40,7 +40,7 @@ public final class ShortArraySimpledCoder ex @Override public short[] convertFrom(R in) { - int len = in.readArrayB(null, ShortSimpledCoder.instance); + int len = in.readArrayB(ShortSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/ext/StringArraySimpledCoder.java b/src/main/java/org/redkale/convert/ext/StringArraySimpledCoder.java index fca66cf2c..3812e1061 100644 --- a/src/main/java/org/redkale/convert/ext/StringArraySimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/StringArraySimpledCoder.java @@ -40,11 +40,7 @@ public final class StringArraySimpledCoder e @Override public String[] convertFrom(R in) { - return convertFrom(in, null); - } - - public String[] convertFrom(R in, DeMember member) { - int len = in.readArrayB(member, StringSimpledCoder.instance); + int len = in.readArrayB(StringSimpledCoder.instance); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/json/JsonByteBufferReader.java b/src/main/java/org/redkale/convert/json/JsonByteBufferReader.java index 52d94e826..503c00404 100644 --- a/src/main/java/org/redkale/convert/json/JsonByteBufferReader.java +++ b/src/main/java/org/redkale/convert/json/JsonByteBufferReader.java @@ -180,12 +180,11 @@ public class JsonByteBufferReader extends JsonReader { /** * 判断下一个非空白字符是否为[ * - * @param member DeMember * @param decoder Decodeable * @return SIGN_VARIABLE 或 SIGN_NULL */ @Override - public final int readArrayB(DeMember member, Decodeable decoder) { + public final int readArrayB(Decodeable decoder) { char ch = nextGoodChar(true); if (ch == '[' || ch == '{') { return SIGN_VARIABLE; diff --git a/src/main/java/org/redkale/convert/json/JsonMultiArrayDecoder.java b/src/main/java/org/redkale/convert/json/JsonMultiArrayDecoder.java index e48be9a4f..e42c10e4b 100644 --- a/src/main/java/org/redkale/convert/json/JsonMultiArrayDecoder.java +++ b/src/main/java/org/redkale/convert/json/JsonMultiArrayDecoder.java @@ -35,11 +35,7 @@ public class JsonMultiArrayDecoder implements Decodeable { @Override public Object[] convertFrom(JsonReader in) { - return convertFrom(in, null); - } - - public Object[] convertFrom(JsonReader in, DeMember member) { - int len = in.readArrayB(member, null); + int len = in.readArrayB(null); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/json/JsonReader.java b/src/main/java/org/redkale/convert/json/JsonReader.java index 7f18d0f99..e2429b288 100644 --- a/src/main/java/org/redkale/convert/json/JsonReader.java +++ b/src/main/java/org/redkale/convert/json/JsonReader.java @@ -297,14 +297,13 @@ public class JsonReader extends Reader { /** * 判断下一个非空白字符是否为{ * - * @param member DeMember * @param keyDecoder Decodeable * @param valuedecoder Decodeable * @return SIGN_VARIABLE 或 SIGN_NULL */ @Override - public final int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valuedecoder) { - return readArrayB(member, keyDecoder); + public final int readMapB(Decodeable keyDecoder, Decodeable valuedecoder) { + return readArrayB(keyDecoder); } @Override @@ -315,12 +314,11 @@ public class JsonReader extends Reader { /** * 判断下一个非空白字符是否为[ * - * @param member DeMember * @param componentDecoder Decodeable * @return SIGN_VARIABLE 或 SIGN_NULL */ @Override - public int readArrayB(DeMember member, Decodeable componentDecoder) { + public int readArrayB(Decodeable componentDecoder) { if (this.text.length == 0) { return SIGN_NULL; } @@ -720,7 +718,7 @@ public class JsonReader extends Reader { @Override public final byte[] readByteArray() { - int len = readArrayB(null, null); + int len = readArrayB(null); if (len == Reader.SIGN_NULL) { return null; } diff --git a/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java index c6168326d..f2d41b66d 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufArrayDecoder.java @@ -15,7 +15,8 @@ import org.redkale.convert.*; * @author zhangjx * @param T */ -public class ProtobufArrayDecoder extends ArrayDecoder { +public class ProtobufArrayDecoder extends ArrayDecoder + implements ProtobufTagDecodeable { protected final boolean componentSimpled; @@ -29,7 +30,7 @@ public class ProtobufArrayDecoder extends ArrayDecoder { this.checkInited(); final boolean simpled = this.componentSimpled; final Decodeable itemDecoder = this.componentDecoder; - in.readArrayB(member, itemDecoder); + in.readArrayB(itemDecoder); final List result = new ArrayList(); final int limit = in.limit(); while (in.hasNext()) { diff --git a/src/main/java/org/redkale/convert/pb/ProtobufCollectionDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufCollectionDecoder.java index 153c7890f..e36cd9055 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufCollectionDecoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufCollectionDecoder.java @@ -13,7 +13,8 @@ import org.redkale.convert.*; * @author zhangjx * @param T */ -public class ProtobufCollectionDecoder extends CollectionDecoder { +public class ProtobufCollectionDecoder extends CollectionDecoder + implements ProtobufTagDecodeable> { protected final boolean componentSimpled; @@ -27,7 +28,7 @@ public class ProtobufCollectionDecoder extends CollectionDecoder itemDecoder = this.componentDecoder; - in.readArrayB(member, itemDecoder); + in.readArrayB(itemDecoder); final Collection result = this.creator.create(); final int limit = in.limit(); while (in.hasNext()) { diff --git a/src/main/java/org/redkale/convert/pb/ProtobufMapDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufMapDecoder.java index 5b3a63252..d734e977e 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufMapDecoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufMapDecoder.java @@ -14,7 +14,8 @@ import org.redkale.convert.*; * @param K * @param V */ -public class ProtobufMapDecoder extends MapDecoder { +public class ProtobufMapDecoder extends MapDecoder + implements ProtobufTagDecodeable> { protected final boolean enumtostring; @@ -26,7 +27,7 @@ public class ProtobufMapDecoder extends MapDecoder { @Override public Map convertFrom(ProtobufReader in, DeMember member) { this.checkInited(); - in.readMapB(member, this.keyDecoder, this.valueDecoder); + in.readMapB(this.keyDecoder, this.valueDecoder); final Map result = this.creator.create(); Decodeable kdecoder = this.keyDecoder; Decodeable vdecoder = this.valueDecoder; diff --git a/src/main/java/org/redkale/convert/pb/ProtobufObjectDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufObjectDecoder.java index f787f5cf1..9a0742357 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufObjectDecoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufObjectDecoder.java @@ -14,7 +14,7 @@ import org.redkale.util.*; * @param T */ public class ProtobufObjectDecoder extends ObjectDecoder - implements TagDecodeable { + implements ProtobufTagDecodeable { protected ProtobufObjectDecoder(Type type) { super(type); @@ -48,8 +48,8 @@ public class ProtobufObjectDecoder extends ObjectDecoder @Override protected Object readDeMemberValue(ProtobufReader in, DeMember member, boolean first) { Decodeable decoder = member.getDecoder(); - if (decoder instanceof TagDecodeable) { - return member.readByTag(in); + if (decoder instanceof ProtobufTagDecodeable) { + return ((ProtobufTagDecodeable) decoder).convertFrom(in, member); } else { return member.read(in); } @@ -58,11 +58,11 @@ public class ProtobufObjectDecoder extends ObjectDecoder @Override protected void readDeMemberValue(ProtobufReader in, DeMember member, T result, boolean first) { Decodeable decoder = member.getDecoder(); - if (decoder instanceof TagDecodeable) { - member.readByTag(in, result); + if (decoder instanceof ProtobufTagDecodeable) { + Object val = ((ProtobufTagDecodeable) decoder).convertFrom(in, member); + member.getAttribute().set(result, val); } else { member.read(in, result); } } - } diff --git a/src/main/java/org/redkale/convert/pb/ProtobufReader.java b/src/main/java/org/redkale/convert/pb/ProtobufReader.java index 151678017..ed4ba04a5 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufReader.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufReader.java @@ -18,8 +18,6 @@ public class ProtobufReader extends Reader { protected byte[] content; - //protected int initoffset; - protected int limit; protected int cacheTag = Integer.MIN_VALUE; @@ -51,7 +49,6 @@ public class ProtobufReader extends Reader { public final void setBytes(byte[] bytes) { if (bytes == null) { this.position = 0; - //this.initoffset = 0; this.limit = 0; } else { setBytes(bytes, 0, bytes.length); @@ -61,13 +58,11 @@ public class ProtobufReader extends Reader { public final void setBytes(byte[] bytes, int start, int len) { if (bytes == null) { this.position = 0; - //this.initoffset = 0; this.limit = 0; } else { this.content = bytes; this.position = start - 1; this.limit = start + len; - //this.initoffset = this.position; } } @@ -82,7 +77,6 @@ public class ProtobufReader extends Reader { protected boolean recycle() { this.position = -1; this.limit = -1; - //this.initoffset = -1; this.content = null; return true; } @@ -137,7 +131,7 @@ public class ProtobufReader extends Reader { } @Override - public final int readMapB(DeMember member, Decodeable keyDecoder, Decodeable valueDecoder) { + public final int readMapB(Decodeable keyDecoder, Decodeable valueDecoder) { return Reader.SIGN_VARIABLE; } @@ -154,7 +148,7 @@ public class ProtobufReader extends Reader { * @return SIGN_VARIABLE 或 SIGN_NULL */ @Override - public final int readArrayB(DeMember member, Decodeable componentDecoder) { + public final int readArrayB(Decodeable componentDecoder) { return Reader.SIGN_VARIABLE; } diff --git a/src/main/java/org/redkale/convert/pb/ProtobufStreamDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufStreamDecoder.java index fc694c134..cd28e1e91 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufStreamDecoder.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufStreamDecoder.java @@ -14,7 +14,8 @@ import org.redkale.convert.*; * @author zhangjx * @param 泛型 */ -public class ProtobufStreamDecoder extends StreamDecoder { +public class ProtobufStreamDecoder extends StreamDecoder + implements ProtobufTagDecodeable> { protected final boolean componentSimpled; @@ -28,7 +29,7 @@ public class ProtobufStreamDecoder extends StreamDecoder { this.checkInited(); final boolean simpled = !this.componentSimpled; final Decodeable itemDecoder = this.componentDecoder; - in.readArrayB(member, itemDecoder); + in.readArrayB(itemDecoder); final List result = new ArrayList(); final int limit = in.limit(); while (in.hasNext()) { diff --git a/src/main/java/org/redkale/convert/TagDecodeable.java b/src/main/java/org/redkale/convert/pb/ProtobufTagDecodeable.java similarity index 73% rename from src/main/java/org/redkale/convert/TagDecodeable.java rename to src/main/java/org/redkale/convert/pb/ProtobufTagDecodeable.java index 44a738094..0a7198f6d 100644 --- a/src/main/java/org/redkale/convert/TagDecodeable.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufTagDecodeable.java @@ -2,7 +2,9 @@ * Copyright (c) 2016-2116 Redkale * All rights reserved. */ -package org.redkale.convert; +package org.redkale.convert.pb; + +import org.redkale.convert.*; /** * 带tag的反序列化操作类 @@ -13,7 +15,7 @@ package org.redkale.convert; * @param Reader输入的子类 * @param 反解析的数据类型 */ -public interface TagDecodeable extends Decodeable { +public interface ProtobufTagDecodeable extends Decodeable { /** * 反序列化操作 *