in fluss-protogen/fluss-protogen-generator/src/main/java/com/alibaba/fluss/protogen/generator/generator/ProtobufField.java [39:72]
public static ProtobufField create(Field field, int index, boolean isErrorField) {
if (field.isRepeated()) {
if (field.isMessageField()) {
return new ProtobufRepeatedMessageField((MessageField) field, index);
} else if (field.isStringField()) {
return new ProtobufRepeatedStringField((Field.String) field, index);
} else if (field.isEnumField()) {
return new ProtobufRepeatedEnumField(field, index);
} else if (field.isNumberField() || field.isBoolField()) {
return new ProtobufRepeatedNumberField(field, index);
} else if (field.isBytesField()) {
return new ProtobufRepeatedBytesField((Field.Bytes) field, index);
}
} else if (field.isMessageField()) {
return new ProtobufMessageField((MessageField) field, index);
} else if (field.isBytesField()) {
if (field.getName().equals(RecordsFieldFinder.RECORDS_FIELD_NAME)) {
// add zero-copy and lazy deserialization support for "bytes records"
return new ProtobufRecordsField((Field.Bytes) field, index);
} else {
return new ProtobufBytesField((Field.Bytes) field, index);
}
} else if (field.isStringField()) {
return new ProtobufStringField((Field.String) field, index, isErrorField);
} else if (field.isEnumField()) {
return new ProtobufEnumField(field, index);
} else if (field.isNumberField()) {
return new ProtobufNumberField(field, index, isErrorField);
} else if (field.isBoolField()) {
return new ProtobufBooleanField(field, index);
}
throw new IllegalArgumentException("Unknown field: " + field);
}