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 extendNameCollisionInDifferentPackagesAllowed() throws Exception { Schema schema = new RepoBuilder() .add("message.proto", "" + "message Message {\n" + "}\n") .add("extend1.proto", "" + "package p1;\n" + "import \"message.proto\";\n" + "extend Message {\n" + " optional string a = 1;\n" + "}\n") .add("extend2.proto", "" + "package p2;\n" + "import \"message.proto\";\n" + "extend Message {\n" + " optional string a = 2;\n" + "}\n") .schema(); MessageType messageType = (MessageType) schema.getType("Message"); assertThat(messageType.field("a")).isNull(); assertThat(messageType.extensionField("p1.a").packageName()).isEqualTo("p1"); assertThat(messageType.extensionField("p2.a").packageName()).isEqualTo("p2"); }
@Test public void messsageAndExtensionNameCollision() throws Exception { Schema schema = new RepoBuilder() .add("message.proto", "" + "message Message {\n" + " optional string a = 1;\n" + "}\n") .add("extend.proto", "" + "package p;\n" + "import \"message.proto\";\n" + "extend Message {\n" + " optional string a = 2;\n" + "}\n") .schema(); MessageType messageType = (MessageType) schema.getType("Message"); assertThat(messageType.field("a").tag()).isEqualTo(1); assertThat(messageType.extensionField("p.a").tag()).isEqualTo(2); }
@Test public void retainExtension() throws Exception { Schema schema = new RepoBuilder() .add("service.proto", "" + "message Message {\n" + " optional string a = 1;\n" + "}\n" + "extend Message {\n" + " optional string b = 2;\n" + "}\n") .schema(); Schema pruned = schema.prune(new IdentifierSet.Builder() .include("Message") .build()); assertThat(((MessageType) pruned.getType("Message")).field("a")).isNotNull(); assertThat(((MessageType) pruned.getType("Message")).extensionField("b")).isNotNull(); }
@Test public void retainExtensionMembers() throws Exception { Schema schema = new RepoBuilder() .add("service.proto", "" + "message Message {\n" + " optional string a = 1;\n" + " optional string b = 2;\n" + "}\n" + "extend Message {\n" + " optional string c = 3;\n" + " optional string d = 4;\n" + "}\n") .schema(); Schema pruned = schema.prune(new IdentifierSet.Builder() .include("Message#a") .include("Message#c") .build()); assertThat(((MessageType) pruned.getType("Message")).field("a")).isNotNull(); assertThat(((MessageType) pruned.getType("Message")).field("b")).isNull(); assertThat(((MessageType) pruned.getType("Message")).extensionField("c")).isNotNull(); assertThat(((MessageType) pruned.getType("Message")).extensionField("d")).isNull(); }
Field field = ((MessageType) type).field(member); if (field == null) { field = ((MessageType) type).extensionField(member);
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; }
Field field = ((MessageType) type).field(member); if (field == null) { field = ((MessageType) type).extensionField(member);
Field field = ((MessageType) type).field(member); if (field == null) { field = ((MessageType) type).extensionField(member);