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) { public T[] convertFrom(Reader in, DeMember member) {
int len = in.readArrayB(); int len = in.readArrayB(member);
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) {

View File

@@ -66,7 +66,7 @@ public class CollectionDecoder<T> implements Decodeable<Reader, Collection<T>> {
} }
public Collection<T> convertFrom(Reader in, DeMember member) { public Collection<T> convertFrom(Reader in, DeMember member) {
int len = in.readArrayB(); int len = in.readArrayB(member);
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) {

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

View File

@@ -94,9 +94,11 @@ public abstract class Reader {
/** /**
* 读取数组的开头并返回数组的长度 * 读取数组的开头并返回数组的长度
* *
* @param member DeMember
*
* @return 返回数组的长度 * @return 返回数组的长度
*/ */
public abstract int readArrayB(); public abstract int readArrayB(DeMember member);
/** /**
* 读取数组的尾端 * 读取数组的尾端
@@ -107,9 +109,11 @@ public abstract class Reader {
/** /**
* 读取map的开头并返回map的size * 读取map的开头并返回map的size
* *
* @param member DeMember
*
* @return 返回map的size * @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) { public Stream<T> convertFrom(Reader in, DeMember member) {
int len = in.readArrayB(); int len = in.readArrayB(member);
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) {

View File

@@ -54,7 +54,7 @@ public class BsonByteBufferReader extends BsonReader {
* @return 数组长度或 SIGN_NULL * @return 数组长度或 SIGN_NULL
*/ */
@Override @Override
public final int readArrayB() { public final int readArrayB(DeMember member) {
short bt = readShort(); short bt = readShort();
if (bt == Reader.SIGN_NULL) return bt; if (bt == Reader.SIGN_NULL) return bt;
short lt = readShort(); short lt = readShort();

View File

@@ -171,8 +171,8 @@ public class BsonReader extends Reader {
} }
@Override @Override
public final int readMapB() { public final int readMapB(DeMember member) {
return readArrayB(); return readArrayB(member);
} }
@Override @Override
@@ -185,7 +185,7 @@ public class BsonReader extends Reader {
* @return 数组长度或SIGN_NULL * @return 数组长度或SIGN_NULL
*/ */
@Override @Override
public int readArrayB() { public int readArrayB(DeMember member) {
short bt = readShort(); short bt = readShort();
if (bt == Reader.SIGN_NULL) return bt; if (bt == Reader.SIGN_NULL) return bt;
return (bt & 0xffff) << 16 | ((content[++this.position] & 0xff) << 8) | (content[++this.position] & 0xff); return (bt & 0xffff) << 16 | ((content[++this.position] & 0xff) << 8) | (content[++this.position] & 0xff);
@@ -263,7 +263,7 @@ public class BsonReader extends Reader {
@Override @Override
public final byte[] readByteArray() { public final byte[] readByteArray() {
int len = readArrayB(); int len = readArrayB(null);
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) {

View File

@@ -42,7 +42,7 @@ public final class BoolArraySimpledCoder<R extends Reader, W extends Writer> ext
@Override @Override
public boolean[] convertFrom(R in) { public boolean[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -43,7 +43,7 @@ public final class ByteBufferSimpledCoder<R extends Reader, W extends Writer> ex
@Override @Override
public ByteBuffer convertFrom(R in) { public ByteBuffer convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -42,7 +42,7 @@ public final class CharArraySimpledCoder<R extends Reader, W extends Writer> ext
@Override @Override
public char[] convertFrom(R in) { public char[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -43,7 +43,7 @@ public final class DoubleArraySimpledCoder<R extends Reader, W extends Writer> e
@Override @Override
public double[] convertFrom(R in) { public double[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -42,7 +42,7 @@ public final class FloatArraySimpledCoder<R extends Reader, W extends Writer> ex
@Override @Override
public float[] convertFrom(R in) { public float[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -43,7 +43,7 @@ public final class IntArraySimpledCoder<R extends Reader, W extends Writer> exte
@Override @Override
public int[] convertFrom(R in) { public int[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -43,7 +43,7 @@ public final class LongArraySimpledCoder<R extends Reader, W extends Writer> ext
@Override @Override
public long[] convertFrom(R in) { public long[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -42,7 +42,7 @@ public final class ShortArraySimpledCoder<R extends Reader, W extends Writer> ex
@Override @Override
public short[] convertFrom(R in) { public short[] convertFrom(R in) {
int len = in.readArrayB(); int len = in.readArrayB(null);
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) {

View File

@@ -5,9 +5,7 @@
*/ */
package org.redkale.convert.ext; package org.redkale.convert.ext;
import org.redkale.convert.Reader; import org.redkale.convert.*;
import org.redkale.convert.SimpledCoder;
import org.redkale.convert.Writer;
/** /**
* String[] 的SimpledCoder实现 * String[] 的SimpledCoder实现
@@ -42,7 +40,11 @@ public final class StringArraySimpledCoder<R extends Reader, W extends Writer> e
@Override @Override
public String[] convertFrom(R in) { 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; 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) {

View File

@@ -132,10 +132,12 @@ public class JsonByteBufferReader extends JsonReader {
/** /**
* 判断下一个非空白字符是否为[ * 判断下一个非空白字符是否为[
* *
* @param member DeMember
*
* @return SIGN_NOLENGTH 或 SIGN_NULL * @return SIGN_NOLENGTH 或 SIGN_NULL
*/ */
@Override @Override
public final int readArrayB() { public final int readArrayB(DeMember member) {
char ch = nextGoodChar(); char ch = nextGoodChar();
if (ch == '[' || ch == '{') return SIGN_NOLENGTH; if (ch == '[' || ch == '{') return SIGN_NOLENGTH;
if (ch == 'n' && nextChar() == 'u' && nextChar() == 'l' && nextChar() == 'l') return SIGN_NULL; 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 * @return SIGN_NOLENGTH 或 SIGN_NULL
*/ */
@Override @Override
public final int readMapB() { public final int readMapB(DeMember member) {
return readArrayB(); return readArrayB(member);
} }
@Override @Override
@@ -203,10 +205,12 @@ public class JsonReader extends Reader {
/** /**
* 判断下一个非空白字符是否为[ * 判断下一个非空白字符是否为[
* *
* @param member DeMember
*
* @return SIGN_NOLENGTH 或 SIGN_NULL * @return SIGN_NOLENGTH 或 SIGN_NULL
*/ */
@Override @Override
public int readArrayB() { public int readArrayB(DeMember member) {
char ch = this.text[++this.position]; char ch = this.text[++this.position];
if (ch == '[') return SIGN_NOLENGTH; if (ch == '[') return SIGN_NOLENGTH;
if (ch == '{') return SIGN_NOLENGTH; if (ch == '{') return SIGN_NOLENGTH;
@@ -468,7 +472,7 @@ public class JsonReader extends Reader {
@Override @Override
public final byte[] readByteArray() { public final byte[] readByteArray() {
int len = readArrayB(); int len = readArrayB(null);
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) {