if (root instanceof ProtoMember) { ProtoMember protoMember = (ProtoMember) root; mark(protoMember.type()); String member = ((ProtoMember) root).member(); Type type = schema.getType(protoMember.type()); markField(type.type(), field); continue; EnumConstant constant = ((EnumType) type).constant(member); if (constant != null) { markOptions(constant.options()); continue; Rpc rpc = service.rpc(member); if (rpc != null) { markRpc(service.type(), rpc); continue; markType(type); continue; markService(service); continue;
private void markType(Type type) { markOptions(type.options()); if (marks.containsAllMembers(type.type())) { if (type instanceof MessageType) { markMessage((MessageType) type); } else if (type instanceof EnumType) { markEnum((EnumType) type); } } }
public Schema prune() { markRoots(); markReachable(); ImmutableList.Builder<ProtoFile> retained = ImmutableList.builder(); for (ProtoFile protoFile : schema.protoFiles()) { retained.add(protoFile.retainAll(schema, marks)); } return new Schema(retained.build()); }
private void markRpc(ProtoType declaringType, Rpc rpc) { if (marks.contains(ProtoMember.get(declaringType, rpc.name()))) { markOptions(rpc.options()); mark(rpc.requestType()); mark(rpc.responseType()); } } }
private void markService(Service service) { markOptions(service.options()); if (marks.containsAllMembers(service.type())) { for (Rpc rpc : service.rpcs()) { markRpc(service.type(), rpc); } } }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
private void markFields(ProtoType declaringType, ImmutableList<Field> fields) { for (Field field : fields) { markField(declaringType, field); } }
private void markOptions(Options options) { for (Map.Entry<ProtoType, ProtoMember> entry : options.fields().entries()) { mark(entry.getValue()); } }
private void markEnum(EnumType wireEnum) { markOptions(wireEnum.options()); if (marks.containsAllMembers(wireEnum.type())) { for (EnumConstant constant : wireEnum.constants()) { if (marks.contains(ProtoMember.get(wireEnum.type(), constant.name()))) { markOptions(constant.options()); } } } }
private void markField(ProtoType declaringType, Field field) { if (marks.contains(ProtoMember.get(declaringType, field.name()))) { markOptions(field.options()); mark(field.type()); } }
public Schema prune() { markRoots(); markReachable(); ImmutableList.Builder<ProtoFile> retained = ImmutableList.builder(); for (ProtoFile protoFile : schema.protoFiles()) { retained.add(protoFile.retainAll(schema, marks)); } return new Schema(retained.build()); }
private void markRoots() { for (ProtoFile protoFile : schema.protoFiles()) { markRoots(protoFile); } }
private void markService(Service service) { markOptions(service.options()); if (marks.containsAllMembers(service.type())) { for (Rpc rpc : service.rpcs()) { markRpc(service.type(), rpc); } } }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
private void markFields(ProtoType declaringType, ImmutableList<Field> fields) { for (Field field : fields) { markField(declaringType, field); } }
private void markOptions(Options options) { for (Map.Entry<ProtoType, ProtoMember> entry : options.fields().entries()) { mark(entry.getValue()); } }
private void markEnum(EnumType wireEnum) { markOptions(wireEnum.options()); if (marks.containsAllMembers(wireEnum.type())) { for (EnumConstant constant : wireEnum.constants()) { if (marks.contains(ProtoMember.get(wireEnum.type(), constant.name()))) { markOptions(constant.options()); } } } }
if (root instanceof ProtoMember) { ProtoMember protoMember = (ProtoMember) root; mark(protoMember.type()); String member = ((ProtoMember) root).member(); Type type = schema.getType(protoMember.type()); markField(type.type(), field); continue; EnumConstant constant = ((EnumType) type).constant(member); if (constant != null) { markOptions(constant.options()); continue; Rpc rpc = service.rpc(member); if (rpc != null) { markRpc(service.type(), rpc); continue; markType(type); continue; markService(service); continue;