This commit is contained in:
@@ -70,7 +70,7 @@ public class ArrayDecoder<T> implements Decodeable<Reader, T[]> {
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(member);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (this.decoder == null) {
|
if (this.decoder == null) {
|
||||||
@@ -86,15 +86,17 @@ public class ArrayDecoder<T> implements Decodeable<Reader, T[]> {
|
|||||||
}
|
}
|
||||||
final Decodeable<Reader, T> localdecoder = this.decoder;
|
final Decodeable<Reader, T> localdecoder = this.decoder;
|
||||||
final List<T> result = new ArrayList();
|
final List<T> result = new ArrayList();
|
||||||
|
boolean first = true;
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
int startPosition = in.position();
|
int startPosition = in.position();
|
||||||
while (in.hasNext(startPosition, contentLength)) {
|
while (in.hasNext(startPosition, contentLength)) {
|
||||||
readMember(in, member);
|
result.add(readMemberValue(in, member, first));
|
||||||
result.add(localdecoder.convertFrom(in));
|
first = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
result.add(localdecoder.convertFrom(in));
|
result.add(localdecoder.convertFrom(in));
|
||||||
|
first = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
in.readArrayE();
|
in.readArrayE();
|
||||||
@@ -102,7 +104,8 @@ public class ArrayDecoder<T> implements Decodeable<Reader, T[]> {
|
|||||||
return result.toArray(rs);
|
return result.toArray(rs);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void readMember(Reader in, DeMember member) {
|
protected T readMemberValue(Reader in, DeMember member, boolean first) {
|
||||||
|
return this.decoder.convertFrom(in);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class CollectionDecoder<T> implements Decodeable<Reader, Collection<T>> {
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(member);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (this.decoder == null) {
|
if (this.decoder == null) {
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ public class MapDecoder<K, V> implements Decodeable<Reader, Map<K, V>> {
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(member);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
final Map<K, V> result = this.creator.create();
|
final Map<K, V> result = this.creator.create();
|
||||||
|
|||||||
@@ -56,9 +56,11 @@ public abstract class Reader {
|
|||||||
* 读取字段值内容的字节数 <br>
|
* 读取字段值内容的字节数 <br>
|
||||||
* 只有在readXXXB方法返回SIGN_NOLENBUTBYTES值才会调用此方法
|
* 只有在readXXXB方法返回SIGN_NOLENBUTBYTES值才会调用此方法
|
||||||
*
|
*
|
||||||
|
* @param member DeMember
|
||||||
|
*
|
||||||
* @return 内容大小, 不确定返回-1
|
* @return 内容大小, 不确定返回-1
|
||||||
*/
|
*/
|
||||||
public abstract int readMemberContentLength();
|
public abstract int readMemberContentLength(DeMember member);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 跳过值(不包含值前面的字段)
|
* 跳过值(不包含值前面的字段)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public class StreamDecoder<T> implements Decodeable<Reader, Stream<T>> {
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(member);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (this.decoder == null) {
|
if (this.decoder == null) {
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ public class BsonReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int readMemberContentLength() {
|
public int readMemberContentLength(DeMember member) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ public class BsonReader extends Reader {
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = readMemberContentLength();
|
contentLength = readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public final class BoolArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public final class ByteBufferSimpledCoder<R extends Reader, W extends Writer> ex
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public final class CharArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public final class DoubleArraySimpledCoder<R extends Reader, W extends Writer> e
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public final class FloatArraySimpledCoder<R extends Reader, W extends Writer> ex
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public final class IntArraySimpledCoder<R extends Reader, W extends Writer> exte
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public final class LongArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public final class ShortArraySimpledCoder<R extends Reader, W extends Writer> ex
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public final class StringArraySimpledCoder<R extends Reader, W extends Writer> e
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = in.readMemberContentLength();
|
contentLength = in.readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ public class JsonReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int readMemberContentLength() {
|
public int readMemberContentLength(DeMember member) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -472,7 +472,7 @@ public class JsonReader extends Reader {
|
|||||||
int contentLength = -1;
|
int contentLength = -1;
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
if (len == Reader.SIGN_NOLENBUTBYTES) {
|
||||||
contentLength = readMemberContentLength();
|
contentLength = readMemberContentLength(null);
|
||||||
len = Reader.SIGN_NOLENGTH;
|
len = Reader.SIGN_NOLENGTH;
|
||||||
}
|
}
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
|||||||
Reference in New Issue
Block a user