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) { // 空构造函数 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(); // 跳过不存在的属性的值

View File

@@ -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值

View File

@@ -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值

View File

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

View File

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

View File

@@ -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;

View File

@@ -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);
} }

View File

@@ -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;

View File

@@ -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);
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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);
} }
} }

View File

@@ -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(); // 跳过不存在的字段的值, 一般不会发生