diff --git a/src/org/redkale/convert/ArrayDecoder.java b/src/org/redkale/convert/ArrayDecoder.java index 370ed1511..464adb63f 100644 --- a/src/org/redkale/convert/ArrayDecoder.java +++ b/src/org/redkale/convert/ArrayDecoder.java @@ -66,7 +66,7 @@ public class ArrayDecoder implements Decodeable { } public T[] convertFrom(Reader in, DeMember member) { - int len = in.readArrayB(member); + int len = in.readArrayB(member, decoder); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/CollectionDecoder.java b/src/org/redkale/convert/CollectionDecoder.java index 853a877cb..a7e64543a 100644 --- a/src/org/redkale/convert/CollectionDecoder.java +++ b/src/org/redkale/convert/CollectionDecoder.java @@ -66,7 +66,7 @@ public class CollectionDecoder implements Decodeable> { } public Collection convertFrom(Reader in, DeMember member) { - int len = in.readArrayB(member); + int len = in.readArrayB(member, decoder); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/MapDecoder.java b/src/org/redkale/convert/MapDecoder.java index c8993451a..cec99de44 100644 --- a/src/org/redkale/convert/MapDecoder.java +++ b/src/org/redkale/convert/MapDecoder.java @@ -91,7 +91,7 @@ public class MapDecoder implements Decodeable> { } } } - int len = in.readMapB(member); + int len = in.readMapB(member, this.keyDecoder); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/Reader.java b/src/org/redkale/convert/Reader.java index 65086afdf..6e40d3209 100644 --- a/src/org/redkale/convert/Reader.java +++ b/src/org/redkale/convert/Reader.java @@ -94,11 +94,12 @@ public abstract class Reader { /** * 读取数组的开头并返回数组的长度 * - * @param member DeMember + * @param member DeMember + * @param decoder Decodeable * * @return 返回数组的长度 */ - public abstract int readArrayB(DeMember member); + public abstract int readArrayB(DeMember member, Decodeable decoder); /** * 读取数组的尾端 @@ -109,11 +110,12 @@ public abstract class Reader { /** * 读取map的开头并返回map的size * - * @param member DeMember + * @param member DeMember + * @param keydecoder Decodeable * * @return 返回map的size */ - public abstract int readMapB(DeMember member); + public abstract int readMapB(DeMember member, Decodeable keydecoder); /** * 读取数组的尾端 diff --git a/src/org/redkale/convert/StreamDecoder.java b/src/org/redkale/convert/StreamDecoder.java index 81f9d90c6..658728147 100644 --- a/src/org/redkale/convert/StreamDecoder.java +++ b/src/org/redkale/convert/StreamDecoder.java @@ -62,7 +62,7 @@ public class StreamDecoder implements Decodeable> { } public Stream convertFrom(Reader in, DeMember member) { - int len = in.readArrayB(member); + int len = in.readArrayB(member, this.decoder); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/bson/BsonByteBufferReader.java b/src/org/redkale/convert/bson/BsonByteBufferReader.java index 265ff72e0..98f2a7c70 100644 --- a/src/org/redkale/convert/bson/BsonByteBufferReader.java +++ b/src/org/redkale/convert/bson/BsonByteBufferReader.java @@ -51,10 +51,12 @@ public class BsonByteBufferReader extends BsonReader { /** * 判断下一个非空白字节是否为[ * + * @param member DeMember + * @param decoder Decodeable * @return 数组长度或 SIGN_NULL */ @Override - public final int readArrayB(DeMember member) { + public final int readArrayB(DeMember member, Decodeable decoder) { short bt = readShort(); if (bt == Reader.SIGN_NULL) return bt; short lt = readShort(); diff --git a/src/org/redkale/convert/bson/BsonReader.java b/src/org/redkale/convert/bson/BsonReader.java index 0aa70b110..de14e7ce7 100644 --- a/src/org/redkale/convert/bson/BsonReader.java +++ b/src/org/redkale/convert/bson/BsonReader.java @@ -171,8 +171,8 @@ public class BsonReader extends Reader { } @Override - public final int readMapB(DeMember member) { - return readArrayB(member); + public final int readMapB(DeMember member, Decodeable keydecoder) { + return readArrayB(member, keydecoder); } @Override @@ -185,7 +185,7 @@ public class BsonReader extends Reader { * @return 数组长度或SIGN_NULL */ @Override - public int readArrayB(DeMember member) { + public int readArrayB(DeMember member, Decodeable decoder) { short bt = readShort(); if (bt == Reader.SIGN_NULL) return bt; return (bt & 0xffff) << 16 | ((content[++this.position] & 0xff) << 8) | (content[++this.position] & 0xff); @@ -263,7 +263,7 @@ public class BsonReader extends Reader { @Override public final byte[] readByteArray() { - int len = readArrayB(null); + int len = readArrayB(null, null); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/BoolArraySimpledCoder.java b/src/org/redkale/convert/ext/BoolArraySimpledCoder.java index 1d136c721..dc05864a9 100644 --- a/src/org/redkale/convert/ext/BoolArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/BoolArraySimpledCoder.java @@ -42,7 +42,7 @@ public final class BoolArraySimpledCoder ext @Override public boolean[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, BoolSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/ByteBufferSimpledCoder.java b/src/org/redkale/convert/ext/ByteBufferSimpledCoder.java index 91aa76107..54781e025 100644 --- a/src/org/redkale/convert/ext/ByteBufferSimpledCoder.java +++ b/src/org/redkale/convert/ext/ByteBufferSimpledCoder.java @@ -43,7 +43,7 @@ public final class ByteBufferSimpledCoder ex @Override public ByteBuffer convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, ByteSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/CharArraySimpledCoder.java b/src/org/redkale/convert/ext/CharArraySimpledCoder.java index 220252849..3e0a07416 100644 --- a/src/org/redkale/convert/ext/CharArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/CharArraySimpledCoder.java @@ -42,7 +42,7 @@ public final class CharArraySimpledCoder ext @Override public char[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, CharSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/DoubleArraySimpledCoder.java b/src/org/redkale/convert/ext/DoubleArraySimpledCoder.java index d8288b406..b62894877 100644 --- a/src/org/redkale/convert/ext/DoubleArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/DoubleArraySimpledCoder.java @@ -43,7 +43,7 @@ public final class DoubleArraySimpledCoder e @Override public double[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, DoubleSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/FloatArraySimpledCoder.java b/src/org/redkale/convert/ext/FloatArraySimpledCoder.java index ec5f253a1..960c52548 100644 --- a/src/org/redkale/convert/ext/FloatArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/FloatArraySimpledCoder.java @@ -42,7 +42,7 @@ public final class FloatArraySimpledCoder ex @Override public float[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, FloatSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/IntArraySimpledCoder.java b/src/org/redkale/convert/ext/IntArraySimpledCoder.java index de243ee7a..f931840e8 100644 --- a/src/org/redkale/convert/ext/IntArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/IntArraySimpledCoder.java @@ -43,7 +43,7 @@ public final class IntArraySimpledCoder exte @Override public int[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, IntSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/LongArraySimpledCoder.java b/src/org/redkale/convert/ext/LongArraySimpledCoder.java index e3c3e494f..5c931496e 100644 --- a/src/org/redkale/convert/ext/LongArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/LongArraySimpledCoder.java @@ -43,7 +43,7 @@ public final class LongArraySimpledCoder ext @Override public long[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, LongSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/ShortArraySimpledCoder.java b/src/org/redkale/convert/ext/ShortArraySimpledCoder.java index 66fea3d71..f3562c361 100644 --- a/src/org/redkale/convert/ext/ShortArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/ShortArraySimpledCoder.java @@ -42,7 +42,7 @@ public final class ShortArraySimpledCoder ex @Override public short[] convertFrom(R in) { - int len = in.readArrayB(null); + int len = in.readArrayB(null, ShortSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/ext/StringArraySimpledCoder.java b/src/org/redkale/convert/ext/StringArraySimpledCoder.java index 7e50a7567..1894b76e1 100644 --- a/src/org/redkale/convert/ext/StringArraySimpledCoder.java +++ b/src/org/redkale/convert/ext/StringArraySimpledCoder.java @@ -44,7 +44,7 @@ public final class StringArraySimpledCoder e } public String[] convertFrom(R in, DeMember member) { - int len = in.readArrayB(member); + int len = in.readArrayB(member, StringSimpledCoder.instance); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) { diff --git a/src/org/redkale/convert/json/JsonByteBufferReader.java b/src/org/redkale/convert/json/JsonByteBufferReader.java index ebc422e00..1c1085b32 100644 --- a/src/org/redkale/convert/json/JsonByteBufferReader.java +++ b/src/org/redkale/convert/json/JsonByteBufferReader.java @@ -132,12 +132,13 @@ public class JsonByteBufferReader extends JsonReader { /** * 判断下一个非空白字符是否为[ * - * @param member DeMember + * @param member DeMember + * @param decoder Decodeable * * @return SIGN_NOLENGTH 或 SIGN_NULL */ @Override - public final int readArrayB(DeMember member) { + public final int readArrayB(DeMember member, Decodeable decoder) { char ch = nextGoodChar(); if (ch == '[' || ch == '{') return SIGN_NOLENGTH; if (ch == 'n' && nextChar() == 'u' && nextChar() == 'l' && nextChar() == 'l') return SIGN_NULL; diff --git a/src/org/redkale/convert/json/JsonReader.java b/src/org/redkale/convert/json/JsonReader.java index c47e8e781..c6808d677 100644 --- a/src/org/redkale/convert/json/JsonReader.java +++ b/src/org/redkale/convert/json/JsonReader.java @@ -189,13 +189,14 @@ public class JsonReader extends Reader { /** * 判断下一个非空白字符是否为{ * - * @param member DeMember + * @param member DeMember + * @param keydecoder Decodeable * * @return SIGN_NOLENGTH 或 SIGN_NULL */ @Override - public final int readMapB(DeMember member) { - return readArrayB(member); + public final int readMapB(DeMember member, Decodeable keydecoder) { + return readArrayB(member, keydecoder); } @Override @@ -205,12 +206,13 @@ public class JsonReader extends Reader { /** * 判断下一个非空白字符是否为[ * - * @param member DeMember + * @param member DeMember + * @param decoder Decodeable * * @return SIGN_NOLENGTH 或 SIGN_NULL */ @Override - public int readArrayB(DeMember member) { + public int readArrayB(DeMember member, Decodeable decoder) { char ch = this.text[++this.position]; if (ch == '[') return SIGN_NOLENGTH; if (ch == '{') return SIGN_NOLENGTH; @@ -472,7 +474,7 @@ public class JsonReader extends Reader { @Override public final byte[] readByteArray() { - int len = readArrayB(null); + int len = readArrayB(null, null); int contentLength = -1; if (len == Reader.SIGN_NULL) return null; if (len == Reader.SIGN_NOLENBUTBYTES) {