This commit is contained in:
Redkale
2018-07-23 09:37:49 +08:00
parent 8ff2b60ed4
commit 0ca6e5401a
18 changed files with 40 additions and 28 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();
int len = in.readArrayB(member);
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();
int len = in.readArrayB(member);
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.readArrayB();
int len = in.readArrayB(member);
int contentLength = -1;
if (len == Reader.SIGN_NULL) return null;
if (len == Reader.SIGN_NOLENBUTBYTES) {

View File

@@ -94,9 +94,11 @@ public abstract class Reader {
/**
* 读取数组的开头并返回数组的长度
*
* @param member DeMember
*
* @return 返回数组的长度
*/
public abstract int readArrayB();
public abstract int readArrayB(DeMember member);
/**
* 读取数组的尾端
@@ -107,9 +109,11 @@ public abstract class Reader {
/**
* 读取map的开头并返回map的size
*
* @param member DeMember
*
* @return 返回map的size
*/
public abstract int readMapB();
public abstract int readMapB(DeMember member);
/**
* 读取数组的尾端

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();
int len = in.readArrayB(member);
int contentLength = -1;
if (len == Reader.SIGN_NULL) return null;
if (len == Reader.SIGN_NOLENBUTBYTES) {

View File

@@ -54,7 +54,7 @@ public class BsonByteBufferReader extends BsonReader {
* @return 数组长度或 SIGN_NULL
*/
@Override
public final int readArrayB() {
public final int readArrayB(DeMember member) {
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() {
return readArrayB();
public final int readMapB(DeMember member) {
return readArrayB(member);
}
@Override
@@ -185,7 +185,7 @@ public class BsonReader extends Reader {
* @return 数组长度或SIGN_NULL
*/
@Override
public int readArrayB() {
public int readArrayB(DeMember member) {
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();
int len = readArrayB(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();
int len = in.readArrayB(null);
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();
int len = in.readArrayB(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 CharArraySimpledCoder<R extends Reader, W extends Writer> ext
@Override
public char[] convertFrom(R in) {
int len = in.readArrayB();
int len = in.readArrayB(null);
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();
int len = in.readArrayB(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 FloatArraySimpledCoder<R extends Reader, W extends Writer> ex
@Override
public float[] convertFrom(R in) {
int len = in.readArrayB();
int len = in.readArrayB(null);
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();
int len = in.readArrayB(null);
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();
int len = in.readArrayB(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 ShortArraySimpledCoder<R extends Reader, W extends Writer> ex
@Override
public short[] convertFrom(R in) {
int len = in.readArrayB();
int len = in.readArrayB(null);
int contentLength = -1;
if (len == Reader.SIGN_NULL) return null;
if (len == Reader.SIGN_NOLENBUTBYTES) {

View File

@@ -5,9 +5,7 @@
*/
package org.redkale.convert.ext;
import org.redkale.convert.Reader;
import org.redkale.convert.SimpledCoder;
import org.redkale.convert.Writer;
import org.redkale.convert.*;
/**
* String[] 的SimpledCoder实现
@@ -42,7 +40,11 @@ public final class StringArraySimpledCoder<R extends Reader, W extends Writer> e
@Override
public String[] convertFrom(R in) {
int len = in.readArrayB();
return convertFrom(in, null);
}
public String[] convertFrom(R in, DeMember member) {
int len = in.readArrayB(member);
int contentLength = -1;
if (len == Reader.SIGN_NULL) return null;
if (len == Reader.SIGN_NOLENBUTBYTES) {

View File

@@ -132,10 +132,12 @@ public class JsonByteBufferReader extends JsonReader {
/**
* 判断下一个非空白字符是否为[
*
* @param member DeMember
*
* @return SIGN_NOLENGTH 或 SIGN_NULL
*/
@Override
public final int readArrayB() {
public final int readArrayB(DeMember member) {
char ch = nextGoodChar();
if (ch == '[' || ch == '{') return SIGN_NOLENGTH;
if (ch == 'n' && nextChar() == 'u' && nextChar() == 'l' && nextChar() == 'l') return SIGN_NULL;

View File

@@ -189,11 +189,13 @@ public class JsonReader extends Reader {
/**
* 判断下一个非空白字符是否为{
*
* @param member DeMember
*
* @return SIGN_NOLENGTH 或 SIGN_NULL
*/
@Override
public final int readMapB() {
return readArrayB();
public final int readMapB(DeMember member) {
return readArrayB(member);
}
@Override
@@ -203,10 +205,12 @@ public class JsonReader extends Reader {
/**
* 判断下一个非空白字符是否为[
*
* @param member DeMember
*
* @return SIGN_NOLENGTH 或 SIGN_NULL
*/
@Override
public int readArrayB() {
public int readArrayB(DeMember member) {
char ch = this.text[++this.position];
if (ch == '[') return SIGN_NOLENGTH;
if (ch == '{') return SIGN_NOLENGTH;
@@ -468,7 +472,7 @@ public class JsonReader extends Reader {
@Override
public final byte[] readByteArray() {
int len = readArrayB();
int len = readArrayB(null);
int contentLength = -1;
if (len == Reader.SIGN_NULL) return null;
if (len == Reader.SIGN_NOLENBUTBYTES) {