private void updateFieldTypes(ProtoContext context, Deque<String> scopeLookupList, FieldContainer fieldContainer) { // check if field type isn't already set fieldContainer.getFields() .stream() .filter(field -> field.getType() == null) // for map fields it is set by parser .forEach(field -> { String typeName = field.getTypeName(); FieldType fieldType = resolveFieldType(field, context, scopeLookupList, typeName); field.setType(fieldType); }); }
@Override public void exitGroupBlock(ProtoParser.GroupBlockContext ctx) { Group group = context.pop(Group.class); group.setName(ctx.groupName().getText()); group.setSourceCodeLocation(getSourceCodeLocation(ctx)); final GroupContainer groupContainer = context.peek(GroupContainer.class); final FieldContainer fieldContainer = context.peek(FieldContainer.class); Field field = new Field(fieldContainer); field.setName(group.getName().toLowerCase()); // same behavior as in protoc int tag = Integer.decode(ctx.tag().getText()); field.setTag(tag); field.setIndex(fieldContainer.getFieldCount() + 1); field.setTypeName(group.getName()); field.setType(group); field.setSourceCodeLocation(getSourceCodeLocation(ctx)); groupContainer.addGroup(group); fieldContainer.addField(field); attachComments(ctx, field, true); }
@Override public void exitGroupBlock(ProtoParser.GroupBlockContext ctx) { Group group = context.pop(Group.class); group.setName(ctx.groupName().getText()); group.setSourceCodeLocation(getSourceCodeLocation(ctx)); final GroupContainer groupContainer = context.peek(GroupContainer.class); final FieldContainer fieldContainer = context.peek(FieldContainer.class); Field field = new Field(fieldContainer); field.setName(group.getName().toLowerCase()); // same behavior as in protoc int tag = Integer.decode(ctx.tag().getText()); field.setTag(tag); field.setIndex(fieldContainer.getFieldCount() + 1); field.setTypeName(group.getName()); field.setType(group); field.setSourceCodeLocation(getSourceCodeLocation(ctx)); groupContainer.addGroup(group); fieldContainer.addField(field); attachComments(ctx, field, true); }
private void updateFieldTypes(ProtoContext context, Deque<String> scopeLookupList, FieldContainer fieldContainer) { // check if field type isn't already set fieldContainer.getFields() .stream() .filter(field -> field.getType() == null) // for map fields it is set by parser .forEach(field -> { String typeName = field.getTypeName(); FieldType fieldType = resolveFieldType(field, context, scopeLookupList, typeName); field.setType(fieldType); }); }
@Override public void exitMap(ProtoParser.MapContext ctx) { final Field field = context.pop(Field.class); final Message message = context.peek(Message.class); String name = ctx.fieldName().getText(); SourceCodeLocation codeLocation = getSourceCodeLocation(ctx); Message map = new Message(message); String mapEntryTypeName = name + "_entry"; map.setName(mapEntryTypeName); map.setSourceCodeLocation(codeLocation); map.getOptions().set(codeLocation, OPTION_MAP_ENTRY, Value.createBoolean(true)); String keyTypeName = ctx.mapKey().getText(); Field keyField = createMapKeyField(map, keyTypeName, codeLocation); map.addField(keyField); String valueTypeName = ctx.mapValue().getText(); Field valueField = createMapValueField(map, valueTypeName, codeLocation); map.addField(valueField); Integer tag = Integer.decode(ctx.tag().getText()); field.setName(name); field.setTag(tag); field.setIndex(message.getFieldCount() + 1); field.setModifier(REPEATED); field.setTypeName(mapEntryTypeName); field.setType(map); field.setSourceCodeLocation(codeLocation); message.addField(field); message.addMessage(map); attachComments(ctx, field, true); }
String typeName = field.getTypeName(); FieldType fieldType = resolveFieldType(field, context, scopeLookupList, typeName); field.setType(fieldType);
@Override public void exitMap(ProtoParser.MapContext ctx) { final Field field = context.pop(Field.class); final Message message = context.peek(Message.class); String name = ctx.fieldName().getText(); SourceCodeLocation codeLocation = getSourceCodeLocation(ctx); Message map = new Message(message); String mapEntryTypeName = name + "_entry"; map.setName(mapEntryTypeName); map.setSourceCodeLocation(codeLocation); map.getOptions().set(codeLocation, OPTION_MAP_ENTRY, Value.createBoolean(true)); String keyTypeName = ctx.mapKey().getText(); Field keyField = createMapKeyField(map, keyTypeName, codeLocation); map.addField(keyField); String valueTypeName = ctx.mapValue().getText(); Field valueField = createMapValueField(map, valueTypeName, codeLocation); map.addField(valueField); Integer tag = Integer.decode(ctx.tag().getText()); field.setName(name); field.setTag(tag); field.setIndex(message.getFieldCount() + 1); field.setModifier(REPEATED); field.setTypeName(mapEntryTypeName); field.setType(map); field.setSourceCodeLocation(codeLocation); message.addField(field); message.addMessage(map); attachComments(ctx, field, true); }
String typeName = field.getTypeName(); FieldType fieldType = resolveFieldType(field, context, scopeLookupList, typeName); field.setType(fieldType);