readField

This commit is contained in:
redkale
2024-09-30 12:45:31 +08:00
parent 850ff211ca
commit f18ffb7940
17 changed files with 24 additions and 34 deletions

View File

@@ -377,7 +377,7 @@ public class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T> {
if (this.creatorConstructorMembers == null) { // 空构造函数
final T result = this.creator == null ? null : this.creator.create();
while (in.hasNext()) {
DeMember member = in.readFieldName(info);
DeMember member = in.readField(info);
in.readBlank();
if (member == null) {
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];
int oc = 0;
while (in.hasNext()) {
DeMember member = in.readFieldName(info);
DeMember member = in.readField(info);
in.readBlank();
if (member == null) {
in.skipValue(); // 跳过不存在的属性的值

View File

@@ -119,7 +119,7 @@ public abstract class Reader {
*
* @return 匹配的DeMember
*/
public abstract DeMember readFieldName(final DeMemberInfo memberInfo);
public abstract DeMember readField(final DeMemberInfo memberInfo);
/**
* 读取一个boolean值

View File

@@ -137,7 +137,7 @@ public abstract class Writer {
if (value == null) {
if (nullable()) {
Attribute attr = member.getAttribute();
this.writeFieldName(member, attr.field(), attr.genericType(), member.getPosition());
this.writeField(member, attr.field(), attr.genericType(), member.getPosition());
writeNull();
this.comma = true;
}
@@ -155,7 +155,7 @@ public abstract class Writer {
}
}
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);
this.comma = true;
}
@@ -174,7 +174,7 @@ public abstract class Writer {
final String fieldName, Type fieldType, int fieldPos, Encodeable anyEncoder, Object value) {
if (value == null) {
if (nullable()) {
this.writeFieldName(null, fieldName, fieldType, fieldPos);
this.writeField(null, fieldName, fieldType, fieldPos);
writeNull();
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);
this.comma = true;
}
@@ -205,9 +205,9 @@ public abstract class Writer {
*
* @param member 字段
*/
public final void writeFieldName(final EnMember member) {
public final void writeField(final EnMember member) {
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 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值

View File

@@ -216,7 +216,7 @@ public class BsonReader extends Reader {
}
@Override
public final DeMember readFieldName(final DeMemberInfo memberInfo) {
public final DeMember readField(final DeMemberInfo memberInfo) {
final String exceptedField = readStandardString();
this.fieldTypeEnum = readByte();
return memberInfo.getMemberByField(exceptedField);

View File

@@ -251,7 +251,7 @@ public class BsonWriter extends Writer implements ByteTuple {
}
@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);
writeStandardString(fieldName);
writeByte(BsonFactory.typeEnum(fieldType));

View File

@@ -590,7 +590,7 @@ public class JsonByteBufferReader extends JsonReader {
}
@Override
public DeMember readFieldName(final DeMemberInfo memberInfo) {
public DeMember readField(final DeMemberInfo memberInfo) {
char ch = nextGoodChar(true);
if (ch == 0) {
return null;

View File

@@ -114,7 +114,7 @@ public class JsonBytesWriter extends JsonWriter implements ByteTuple {
}
@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) {
writeTo(BYTE_COMMA);
}

View File

@@ -667,7 +667,7 @@ public class JsonReader extends Reader {
}
@Override
public DeMember readFieldName(final DeMemberInfo memberInfo) {
public DeMember readField(final DeMemberInfo memberInfo) {
final int eof = this.limit;
if (this.position == eof) {
return null;

View File

@@ -141,7 +141,7 @@ public abstract class JsonWriter extends Writer {
public abstract void writeString(String value);
@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) {
writeTo(BYTE_COMMA);
}

View File

@@ -32,7 +32,7 @@ public class ProtobufArrayEncoder<T> extends ArrayEncoder<ProtobufWriter, T> {
T[] array = value;
out.writeArrayB(array.length, itemEncoder, array);
for (T item : array) {
out.writeFieldName(member);
out.writeField(member);
if (item == null) {
out.writeUInt32(0);
} else if (componentSimpled) {

View File

@@ -31,7 +31,7 @@ public class ProtobufCollectionEncoder<T> extends CollectionEncoder<ProtobufWrit
Encodeable itemEncoder = this.componentEncoder;
out.writeArrayB(value.size(), itemEncoder, value);
for (T item : value) {
out.writeFieldName(member);
out.writeField(member);
if (item == null) {
out.writeUInt32(0);
} else if (componentSimpled) {

View File

@@ -458,16 +458,6 @@ public class ProtobufFactory extends ConvertFactory<ProtobufReader, ProtobufWrit
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) {
if (value == 0) return 1;
return computeUInt64SizeNoTag(encodeZigZag64(value));

View File

@@ -45,7 +45,7 @@ public class ProtobufMapEncoder<K, V> extends MapEncoder<ProtobufWriter, K, V> {
if (ignoreColumns == null || !ignoreColumns.contains(key)) {
V v = mapFieldFunc == null ? val : mapFieldFunc.apply(key, val);
if (v != null) {
out.writeFieldName(member);
out.writeField(member);
ProtobufWriter tmp = out.pollChild();
tmp.writeTag(keyTag);

View File

@@ -156,7 +156,7 @@ public class ProtobufReader extends Reader {
}
@Override
public final DeMember readFieldName(final DeMemberInfo memberInfo) {
public final DeMember readField(final DeMemberInfo memberInfo) {
int tag = readTag();
DeMember member = memberInfo.getMemberByTag(tag);
if (member != null) {

View File

@@ -32,7 +32,7 @@ public class ProtobufStreamEncoder<T> extends StreamEncoder<ProtobufWriter, T> {
Encodeable itemEncoder = this.componentEncoder;
out.writeArrayB(array.length, itemEncoder, array);
for (Object item : array) {
out.writeFieldName(member);
out.writeField(member);
if (item == null) {
out.writeUInt32(0);
} else if (componentSimpled) {

View File

@@ -327,7 +327,7 @@ public class ProtobufWriter extends Writer implements ByteTuple {
// 被ObjectEncoder调用
@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);
}
@@ -1321,7 +1321,7 @@ public class ProtobufWriter extends Writer implements ByteTuple {
ProtobufStreamEncoder streamEncoder = (ProtobufStreamEncoder) encoder;
streamEncoder.convertTo(this, member, (Stream) value);
} else {
this.writeFieldName(member);
this.writeField(member);
encoder.convertTo(this, value);
}
}

View File

@@ -107,7 +107,7 @@ public class InnerCoderEntityTest {
int index = 0;
final Object[] params = new Object[deMembers.length];
while (in.hasNext()) {
DeMember member = in.readFieldName(memberInfo); // 读取字段名
DeMember member = in.readField(memberInfo); // 读取字段名
in.readBlank(); // 读取字段名与字段值之间的间隔符JSON则是跳过冒号:
if (member == null) {
in.skipValue(); // 跳过不存在的字段的值, 一般不会发生