/** * Returns true if any of the options in {@code options} matches both of the regular expressions * provided: its name matches the option's name and its value matches the option's value. */ public boolean optionMatches(String namePattern, String valuePattern) { Matcher nameMatcher = Pattern.compile(namePattern).matcher(""); Matcher valueMatcher = Pattern.compile(valuePattern).matcher(""); for (Map.Entry<ProtoMember, Object> entry : map.entrySet()) { if (nameMatcher.reset(entry.getKey().member()).matches() && valueMatcher.reset(String.valueOf(entry.getValue())).matches()) { return true; } } return false; }
public Field getField(ProtoMember protoMember) { Type type = getType(protoMember.type()); if (!(type instanceof MessageType)) return null; Field field = ((MessageType) type).field(protoMember.member()); if (field == null) { field = ((MessageType) type).extensionField(protoMember.member()); } return field; }
@Test public void excludedTypePrunesTopLevelOption() throws Exception { Schema schema = new RepoBuilder() .add("service.proto", "" + "import \"google/protobuf/descriptor.proto\";\n" + "message SomeFieldOptions {\n" + " optional string a = 1;\n" + "}\n" + "extend google.protobuf.FieldOptions {\n" + " optional SomeFieldOptions some_field_options = 22001;\n" + " optional string b = 22002;\n" + "}\n" + "message Message {\n" + " optional string f = 1 [some_field_options.a = \"a\", b = \"b\"];\n" + "}\n") .schema(); Schema pruned = schema.prune(new IdentifierSet.Builder() .exclude("SomeFieldOptions") .build()); Field field = ((MessageType) pruned.getType("Message")).field("f"); Map<ProtoMember, Object> map = field.options().map(); Map.Entry<?, ?> onlyOption = getOnlyElement(map.entrySet()); assertThat(((ProtoMember) onlyOption.getKey()).member()).isEqualTo("b"); assertThat(onlyOption.getValue()).isEqualTo("b"); }
@Test public void excludedFieldPrunesNestedOption() throws Exception { Schema schema = new RepoBuilder() .add("service.proto", "" + "import \"google/protobuf/descriptor.proto\";\n" + "message SomeFieldOptions {\n" + " optional string a = 1;\n" + " optional string b = 2;\n" + "}\n" + "extend google.protobuf.FieldOptions {\n" + " optional SomeFieldOptions some_field_options = 22001;\n" + "}\n" + "message Message {\n" + " optional string f = 1 [some_field_options = { a: \"a\", b: \"b\" }];\n" + "}\n") .schema(); Schema pruned = schema.prune(new IdentifierSet.Builder() .exclude("SomeFieldOptions#b") .build()); Field field = ((MessageType) pruned.getType("Message")).field("f"); Map<?, ?> map = (Map<?, ?>) field.options().get( ProtoMember.get(FIELD_OPTIONS, "some_field_options")); Map.Entry<?, ?> onlyOption = getOnlyElement(map.entrySet()); assertThat(((ProtoMember) onlyOption.getKey()).member()).isEqualTo("a"); assertThat(onlyOption.getValue()).isEqualTo("a"); }
Map<ProtoMember, Object> map = field.options().map(); Map.Entry<?, ?> onlyOption = getOnlyElement(map.entrySet()); assertThat(((ProtoMember) onlyOption.getKey()).member()).isEqualTo("b"); assertThat(onlyOption.getValue()).isEqualTo("b");
ProtoMember protoMember = (ProtoMember) root; mark(protoMember.type()); String member = ((ProtoMember) root).member(); Type type = schema.getType(protoMember.type()); if (type instanceof MessageType) {
/** * Returns true if any of the options in {@code options} matches both of the regular expressions * provided: its name matches the option's name and its value matches the option's value. */ public boolean optionMatches(String namePattern, String valuePattern) { Matcher nameMatcher = Pattern.compile(namePattern).matcher(""); Matcher valueMatcher = Pattern.compile(valuePattern).matcher(""); for (Map.Entry<ProtoMember, Object> entry : map.entrySet()) { if (nameMatcher.reset(entry.getKey().member()).matches() && valueMatcher.reset(String.valueOf(entry.getValue())).matches()) { return true; } } return false; }
/** * Returns true if any of the options in {@code options} matches both of the regular expressions * provided: its name matches the option's name and its value matches the option's value. */ public boolean optionMatches(String namePattern, String valuePattern) { Matcher nameMatcher = Pattern.compile(namePattern).matcher(""); Matcher valueMatcher = Pattern.compile(valuePattern).matcher(""); for (Map.Entry<ProtoMember, Object> entry : map.entrySet()) { if (nameMatcher.reset(entry.getKey().member()).matches() && valueMatcher.reset(String.valueOf(entry.getValue())).matches()) { return true; } } return false; }
public Field getField(ProtoMember protoMember) { Type type = getType(protoMember.type()); if (!(type instanceof MessageType)) return null; Field field = ((MessageType) type).field(protoMember.member()); if (field == null) { field = ((MessageType) type).extensionField(protoMember.member()); } return field; }
public Field getField(ProtoMember protoMember) { Type type = getType(protoMember.type()); if (!(type instanceof MessageType)) return null; Field field = ((MessageType) type).field(protoMember.member()); if (field == null) { field = ((MessageType) type).extensionField(protoMember.member()); } return field; }
ProtoMember protoMember = (ProtoMember) root; mark(protoMember.type()); String member = ((ProtoMember) root).member(); Type type = schema.getType(protoMember.type()); if (type instanceof MessageType) {
ProtoMember protoMember = (ProtoMember) root; mark(protoMember.type()); String member = ((ProtoMember) root).member(); Type type = schema.getType(protoMember.type()); if (type instanceof MessageType) {