readField
This commit is contained in:
@@ -377,7 +377,7 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
|
|||||||
if (this.creatorConstructorMembers == null) { // 空构造函数
|
if (this.creatorConstructorMembers == null) { // 空构造函数
|
||||||
final T result = this.creator == null ? null : this.creator.create();
|
final T result = this.creator == null ? null : this.creator.create();
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
DeMember member = in.readFieldName(info);
|
DeMember member = in.readField(info);
|
||||||
in.readBlank();
|
in.readBlank();
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
in.skipValue(); // 跳过不存在的属性的值
|
in.skipValue(); // 跳过不存在的属性的值
|
||||||
@@ -394,7 +394,7 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
|
|||||||
final Object[][] otherParams = new Object[info.length()][2];
|
final Object[][] otherParams = new Object[info.length()][2];
|
||||||
int oc = 0;
|
int oc = 0;
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
DeMember member = in.readFieldName(info);
|
DeMember member = in.readField(info);
|
||||||
in.readBlank();
|
in.readBlank();
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
in.skipValue(); // 跳过不存在的属性的值
|
in.skipValue(); // 跳过不存在的属性的值
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public abstract class Reader {
|
|||||||
*
|
*
|
||||||
* @return 匹配的DeMember
|
* @return 匹配的DeMember
|
||||||
*/
|
*/
|
||||||
public abstract DeMember readFieldName(final DeMemberInfo memberInfo);
|
public abstract DeMember readField(final DeMemberInfo memberInfo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 读取一个boolean值
|
* 读取一个boolean值
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public abstract class Writer {
|
|||||||
if (value == null) {
|
if (value == null) {
|
||||||
if (nullable()) {
|
if (nullable()) {
|
||||||
Attribute attr = member.getAttribute();
|
Attribute attr = member.getAttribute();
|
||||||
this.writeFieldName(member, attr.field(), attr.genericType(), member.getPosition());
|
this.writeField(member, attr.field(), attr.genericType(), member.getPosition());
|
||||||
writeNull();
|
writeNull();
|
||||||
this.comma = true;
|
this.comma = true;
|
||||||
}
|
}
|
||||||
@@ -155,7 +155,7 @@ public abstract class Writer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Attribute attr = member.getAttribute();
|
Attribute attr = member.getAttribute();
|
||||||
this.writeFieldName(member, attr.field(), attr.genericType(), member.getPosition());
|
this.writeField(member, attr.field(), attr.genericType(), member.getPosition());
|
||||||
member.encoder.convertTo(this, value);
|
member.encoder.convertTo(this, value);
|
||||||
this.comma = true;
|
this.comma = true;
|
||||||
}
|
}
|
||||||
@@ -174,7 +174,7 @@ public abstract class Writer {
|
|||||||
final String fieldName, Type fieldType, int fieldPos, Encodeable anyEncoder, Object value) {
|
final String fieldName, Type fieldType, int fieldPos, Encodeable anyEncoder, Object value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
if (nullable()) {
|
if (nullable()) {
|
||||||
this.writeFieldName(null, fieldName, fieldType, fieldPos);
|
this.writeField(null, fieldName, fieldType, fieldPos);
|
||||||
writeNull();
|
writeNull();
|
||||||
this.comma = true;
|
this.comma = true;
|
||||||
}
|
}
|
||||||
@@ -195,7 +195,7 @@ public abstract class Writer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.writeFieldName(null, fieldName, fieldType, fieldPos);
|
this.writeField(null, fieldName, fieldType, fieldPos);
|
||||||
anyEncoder.convertTo(this, value);
|
anyEncoder.convertTo(this, value);
|
||||||
this.comma = true;
|
this.comma = true;
|
||||||
}
|
}
|
||||||
@@ -205,9 +205,9 @@ public abstract class Writer {
|
|||||||
*
|
*
|
||||||
* @param member 字段
|
* @param member 字段
|
||||||
*/
|
*/
|
||||||
public final void writeFieldName(final EnMember member) {
|
public final void writeField(final EnMember member) {
|
||||||
Attribute attr = member.getAttribute();
|
Attribute attr = member.getAttribute();
|
||||||
this.writeFieldName(member, attr.field(), attr.genericType(), member.getPosition());
|
this.writeField(member, attr.field(), attr.genericType(), member.getPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -265,7 +265,7 @@ public abstract class Writer {
|
|||||||
* @param fieldType 字段类型
|
* @param fieldType 字段类型
|
||||||
* @param fieldPos 字段顺序
|
* @param fieldPos 字段顺序
|
||||||
*/
|
*/
|
||||||
public abstract void writeFieldName(EnMember member, String fieldName, Type fieldType, int fieldPos);
|
public abstract void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入一个boolean值
|
* 写入一个boolean值
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ public class BsonReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final DeMember readFieldName(final DeMemberInfo memberInfo) {
|
public final DeMember readField(final DeMemberInfo memberInfo) {
|
||||||
final String exceptedField = readStandardString();
|
final String exceptedField = readStandardString();
|
||||||
this.fieldTypeEnum = readByte();
|
this.fieldTypeEnum = readByte();
|
||||||
return memberInfo.getMemberByField(exceptedField);
|
return memberInfo.getMemberByField(exceptedField);
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ public class BsonWriter extends Writer implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeFieldName(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
public final void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
||||||
writeByte(BsonReader.SIGN_HASNEXT);
|
writeByte(BsonReader.SIGN_HASNEXT);
|
||||||
writeStandardString(fieldName);
|
writeStandardString(fieldName);
|
||||||
writeByte(BsonFactory.typeEnum(fieldType));
|
writeByte(BsonFactory.typeEnum(fieldType));
|
||||||
|
|||||||
@@ -590,7 +590,7 @@ public class JsonByteBufferReader extends JsonReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeMember readFieldName(final DeMemberInfo memberInfo) {
|
public DeMember readField(final DeMemberInfo memberInfo) {
|
||||||
char ch = nextGoodChar(true);
|
char ch = nextGoodChar(true);
|
||||||
if (ch == 0) {
|
if (ch == 0) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeFieldName(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
public final void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
||||||
if (this.comma) {
|
if (this.comma) {
|
||||||
writeTo(BYTE_COMMA);
|
writeTo(BYTE_COMMA);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -667,7 +667,7 @@ public class JsonReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeMember readFieldName(final DeMemberInfo memberInfo) {
|
public DeMember readField(final DeMemberInfo memberInfo) {
|
||||||
final int eof = this.limit;
|
final int eof = this.limit;
|
||||||
if (this.position == eof) {
|
if (this.position == eof) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ public abstract class JsonWriter extends Writer {
|
|||||||
public abstract void writeString(String value);
|
public abstract void writeString(String value);
|
||||||
|
|
||||||
@Override // 只容许JsonBytesWriter重写此方法
|
@Override // 只容许JsonBytesWriter重写此方法
|
||||||
public void writeFieldName(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
public void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
||||||
if (this.comma) {
|
if (this.comma) {
|
||||||
writeTo(BYTE_COMMA);
|
writeTo(BYTE_COMMA);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class ProtobufArrayEncoder<T> extends ArrayEncoder<ProtobufWriter, T> {
|
|||||||
T[] array = value;
|
T[] array = value;
|
||||||
out.writeArrayB(array.length, itemEncoder, array);
|
out.writeArrayB(array.length, itemEncoder, array);
|
||||||
for (T item : array) {
|
for (T item : array) {
|
||||||
out.writeFieldName(member);
|
out.writeField(member);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
out.writeUInt32(0);
|
out.writeUInt32(0);
|
||||||
} else if (componentSimpled) {
|
} else if (componentSimpled) {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class ProtobufCollectionEncoder<T> extends CollectionEncoder<ProtobufWrit
|
|||||||
Encodeable itemEncoder = this.componentEncoder;
|
Encodeable itemEncoder = this.componentEncoder;
|
||||||
out.writeArrayB(value.size(), itemEncoder, value);
|
out.writeArrayB(value.size(), itemEncoder, value);
|
||||||
for (T item : value) {
|
for (T item : value) {
|
||||||
out.writeFieldName(member);
|
out.writeField(member);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
out.writeUInt32(0);
|
out.writeUInt32(0);
|
||||||
} else if (componentSimpled) {
|
} else if (componentSimpled) {
|
||||||
|
|||||||
@@ -458,16 +458,6 @@ public class ProtobufFactory extends ConvertFactory<ProtobufReader, ProtobufWrit
|
|||||||
return computeUInt32SizeNoTag(encodeZigZag32(value));
|
return computeUInt32SizeNoTag(encodeZigZag32(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Throwable {
|
|
||||||
for (int i = 0; i < 10000; i++) {
|
|
||||||
int len1 = computeRawVarint32Size(encodeZigZag32(i));
|
|
||||||
int len2 = computeSInt32SizeNoTag(i);
|
|
||||||
if (len1 != len2) {
|
|
||||||
throw new RuntimeException(" i = " + i + ", len1: " + len1 + ", len2: " + len2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static int computeSInt64SizeNoTag(final long value) {
|
protected static int computeSInt64SizeNoTag(final long value) {
|
||||||
if (value == 0) return 1;
|
if (value == 0) return 1;
|
||||||
return computeUInt64SizeNoTag(encodeZigZag64(value));
|
return computeUInt64SizeNoTag(encodeZigZag64(value));
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V> {
|
|||||||
if (ignoreColumns == null || !ignoreColumns.contains(key)) {
|
if (ignoreColumns == null || !ignoreColumns.contains(key)) {
|
||||||
V v = mapFieldFunc == null ? val : mapFieldFunc.apply(key, val);
|
V v = mapFieldFunc == null ? val : mapFieldFunc.apply(key, val);
|
||||||
if (v != null) {
|
if (v != null) {
|
||||||
out.writeFieldName(member);
|
out.writeField(member);
|
||||||
|
|
||||||
ProtobufWriter tmp = out.pollChild();
|
ProtobufWriter tmp = out.pollChild();
|
||||||
tmp.writeTag(keyTag);
|
tmp.writeTag(keyTag);
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ public class ProtobufReader extends Reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final DeMember readFieldName(final DeMemberInfo memberInfo) {
|
public final DeMember readField(final DeMemberInfo memberInfo) {
|
||||||
int tag = readTag();
|
int tag = readTag();
|
||||||
DeMember member = memberInfo.getMemberByTag(tag);
|
DeMember member = memberInfo.getMemberByTag(tag);
|
||||||
if (member != null) {
|
if (member != null) {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class ProtobufStreamEncoder<T> extends StreamEncoder<ProtobufWriter, T> {
|
|||||||
Encodeable itemEncoder = this.componentEncoder;
|
Encodeable itemEncoder = this.componentEncoder;
|
||||||
out.writeArrayB(array.length, itemEncoder, array);
|
out.writeArrayB(array.length, itemEncoder, array);
|
||||||
for (Object item : array) {
|
for (Object item : array) {
|
||||||
out.writeFieldName(member);
|
out.writeField(member);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
out.writeUInt32(0);
|
out.writeUInt32(0);
|
||||||
} else if (componentSimpled) {
|
} else if (componentSimpled) {
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ public class ProtobufWriter extends Writer implements ByteTuple {
|
|||||||
|
|
||||||
// 被ObjectEncoder调用
|
// 被ObjectEncoder调用
|
||||||
@Override
|
@Override
|
||||||
public final void writeFieldName(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
public final void writeField(EnMember member, String fieldName, Type fieldType, int fieldPos) {
|
||||||
writeTag(member != null ? member.getTag() : fieldPos);
|
writeTag(member != null ? member.getTag() : fieldPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1321,7 +1321,7 @@ public class ProtobufWriter extends Writer implements ByteTuple {
|
|||||||
ProtobufStreamEncoder streamEncoder = (ProtobufStreamEncoder) encoder;
|
ProtobufStreamEncoder streamEncoder = (ProtobufStreamEncoder) encoder;
|
||||||
streamEncoder.convertTo(this, member, (Stream) value);
|
streamEncoder.convertTo(this, member, (Stream) value);
|
||||||
} else {
|
} else {
|
||||||
this.writeFieldName(member);
|
this.writeField(member);
|
||||||
encoder.convertTo(this, value);
|
encoder.convertTo(this, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ public class InnerCoderEntityTest {
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
final Object[] params = new Object[deMembers.length];
|
final Object[] params = new Object[deMembers.length];
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
DeMember member = in.readFieldName(memberInfo); // 读取字段名
|
DeMember member = in.readField(memberInfo); // 读取字段名
|
||||||
in.readBlank(); // 读取字段名与字段值之间的间隔符,JSON则是跳过冒号:
|
in.readBlank(); // 读取字段名与字段值之间的间隔符,JSON则是跳过冒号:
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
in.skipValue(); // 跳过不存在的字段的值, 一般不会发生
|
in.skipValue(); // 跳过不存在的字段的值, 一般不会发生
|
||||||
|
|||||||
Reference in New Issue
Block a user