This commit is contained in:
Redkale
2018-07-23 10:06:36 +08:00
parent d3cfe809e7
commit 69a0071e17
18 changed files with 37 additions and 30 deletions

View File

@@ -66,7 +66,7 @@ public class ArrayDecoder<T> implements Decodeable<Reader, T[]> {
}
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) {

View File

@@ -66,7 +66,7 @@ public class CollectionDecoder<T> implements Decodeable<Reader, Collection<T>> {
}
public Collection<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) {

View File

@@ -91,7 +91,7 @@ public class MapDecoder<K, V> implements Decodeable<Reader, Map<K, V>> {
}
}
}
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) {

View File

@@ -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);
/**
* 读取数组的尾端

View File

@@ -62,7 +62,7 @@ public class StreamDecoder<T> implements Decodeable<Reader, Stream<T>> {
}
public Stream<T> 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) {

View File

@@ -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();

View File

@@ -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) {

View File

@@ -42,7 +42,7 @@ public final class BoolArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -43,7 +43,7 @@ public final class ByteBufferSimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -42,7 +42,7 @@ public final class CharArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -43,7 +43,7 @@ public final class DoubleArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -42,7 +42,7 @@ public final class FloatArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -43,7 +43,7 @@ public final class IntArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -43,7 +43,7 @@ public final class LongArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -42,7 +42,7 @@ public final class ShortArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -44,7 +44,7 @@ public final class StringArraySimpledCoder<R extends Reader, W extends Writer> 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) {

View File

@@ -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;

View File

@@ -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) {