public AbstractReaders(Field protoField, Class<T[]> arrayClass) { this.protoField = protoField; this.fieldNumber = protoField.getTag(); if (arrayClass == null) { arrayClass = getFieldArgument(this.getClass(), "arrayClass"); } this.arrayClass = arrayClass; } }
public AbstractWriters(Field protoField, Class<T[]> arrayClass) { this.protoField = protoField; int wireType = ProtoUtils.isPacked(protoField) && protoField.isRepeated() ? WireFormat.WIRETYPE_LENGTH_DELIMITED : FieldTypeUtils.convert(protoField.getType()).wireType; this.tag = WireFormat.makeTag(protoField.getTag(), wireType); this.tagSize = ProtobufOutputEx.computeRawVarint32Size(tag); if (arrayClass == null) { arrayClass = getFieldArgument(this.getClass(), "arrayWriter"); } this.arrayClass = arrayClass; }
private void fieldToString(Field field, boolean repeated, StringBuilder sb) { if (field.isMap()) { fieldMapToString(field, sb); return; } if (repeated) { fieldRepeatedToString(field, sb); return; } appendLine(sb, "%s %s = %d;", field.getTypeName(), field.getName(), field.getTag()); }
private void fieldMapToString(Field field, StringBuilder sb) { Message entryMessage = (Message) field.getType(); Field keyField = entryMessage.getField(1); Field valueField = entryMessage.getField(2); // map<string, string> name = 1; appendLine(sb, "map<%s, %s> %s = %d;", keyField.getTypeName(), valueField.getTypeName(), field.getName(), field.getTag()); } }
public FieldSchema(Field protoField, JavaType javaType) { this.protoField = protoField; this.name = protoField.getName(); this.fieldNumber = protoField.getTag(); this.packed = ProtoUtils.isPacked(protoField); int wireType = packed && protoField.isRepeated() ? WireFormat.WIRETYPE_LENGTH_DELIMITED : FieldTypeUtils.convert(protoField.getType()).wireType; this.tag = WireFormat.makeTag(fieldNumber, wireType); this.tagSize = ProtobufOutputEx.computeRawVarint32Size(tag); this.javaType = javaType; this.primitive = javaType.isPrimitive(); }
@Override public Field getField(int tag) { for (Field field : getFields()) { if (tag == field.getTag()) { return field; } } return null; }
@Override public Field getField(int tag) { for (Field field : getFields()) { if (tag == field.getTag()) { return field; } } return null; }
private void checkDuplicateFieldTags(List<Field> fields) { Map<Integer, Field> fieldByTag = new HashMap<>(); for (Field field : fields) { int tag = field.getTag(); if (fieldByTag.containsKey(tag)) { throw new ParserException(field, "Duplicate field tag: %d", tag); } fieldByTag.put(tag, field); } }
@Override public Field getField(int tag) { for (Field field : getFields()) { if (tag == field.getTag()) { return field; } } return null; }
@Override public Field getField(int tag) { for (Field field : getFields()) { if (tag == field.getTag()) { return field; } } return null; }
@Override public Field getField(int tag) { for (Field field : getFields()) { if (tag == field.getTag()) { return field; } } return null; }
private void checkDuplicateFieldTags(List<Field> fields) { Map<Integer, Field> fieldByTag = new HashMap<>(); for (Field field : fields) { int tag = field.getTag(); if (fieldByTag.containsKey(tag)) { throw new ParserException(field, "Duplicate field tag: %d", tag); } fieldByTag.put(tag, field); } }
@Override public Field getField(int tag) { for (Field field : getFields()) { if (tag == field.getTag()) { return field; } } return null; }
private void checkInvalidFieldTags(List<Field> fields) { for (Field field : fields) { int tag = field.getTag(); if (!isValidTagValue(tag)) { throw new ParserException(field, "Invalid tag: %d, allowed range is [%d, %d) and (%d, %d]", tag, MIN_TAG, SYS_RESERVED_START, SYS_RESERVED_END, MAX_TAG); } } }
private void checkInvalidFieldTags(List<Field> fields) { for (Field field : fields) { int tag = field.getTag(); if (!isValidTagValue(tag)) { throw new ParserException(field, "Invalid tag: %d, allowed range is [%d, %d) and (%d, %d]", tag, MIN_TAG, SYS_RESERVED_START, SYS_RESERVED_END, MAX_TAG); } } }
private void checkReservedFieldTags(Message message, List<Field> fields) { List<Range> ranges = message.getReservedFieldRanges(); for (Field field : fields) { int tag = field.getTag(); for (Range range : ranges) { if (range.contains(tag)) { throw new ParserException(field, "Reserved field tag: %d", tag); } } } }
private void checkReservedFieldTags(Message message, List<Field> fields) { List<Range> ranges = message.getReservedFieldRanges(); for (Field field : fields) { int tag = field.getTag(); for (Range range : ranges) { if (range.contains(tag)) { throw new ParserException(field, "Reserved field tag: %d", tag); } } } }
public FieldSchema(Field protoField) { super(ProtoSchemaUtils.convert(protoField.getType()), protoField.getTag(), protoField.getName(), protoField.isRepeated(), null); this.protoField = protoField; }
private void fieldToString(Field field, boolean repeated, StringBuilder sb) { if (field.isMap()) { fieldMapToString(field, sb); return; } if (repeated) { fieldRepeatedToString(field, sb); return; } appendLine(sb, "%s %s = %d;", field.getTypeName(), field.getName(), field.getTag()); }
private void fieldMapToString(Field field, StringBuilder sb) { Message entryMessage = (Message) field.getType(); Field keyField = entryMessage.getField(1); Field valueField = entryMessage.getField(2); // map<string, string> name = 1; appendLine(sb, "map<%s, %s> %s = %d;", keyField.getTypeName(), valueField.getTypeName(), field.getName(), field.getTag()); } }