private String resolveContext() { for (int i = contextStack.size() - 1; i >= 0; i--) { Object context = contextStack.get(i); if (context instanceof Type) { return ((Type) context).type().toString(); } else if (context instanceof ProtoFile) { String packageName = ((ProtoFile) context).packageName(); return packageName != null ? packageName : ""; } else if (context instanceof Field && ((Field) context).isExtension()) { String packageName = ((Field) context).packageName(); return packageName != null ? packageName : ""; } } throw new IllegalStateException(); }
@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"); }
private String resolveContext() { for (int i = contextStack.size() - 1; i >= 0; i--) { Object context = contextStack.get(i); if (context instanceof Type) { return ((Type) context).type().toString(); } else if (context instanceof ProtoFile) { String packageName = ((ProtoFile) context).packageName(); return packageName != null ? packageName : ""; } else if (context instanceof Field && ((Field) context).isExtension()) { String packageName = ((Field) context).packageName(); return packageName != null ? packageName : ""; } } throw new IllegalStateException(); }
private String resolveContext() { for (int i = contextStack.size() - 1; i >= 0; i--) { Object context = contextStack.get(i); if (context instanceof Type) { return ((Type) context).type().toString(); } else if (context instanceof ProtoFile) { String packageName = ((ProtoFile) context).packageName(); return packageName != null ? packageName : ""; } else if (context instanceof Field && ((Field) context).isExtension()) { String packageName = ((Field) context).packageName(); return packageName != null ? packageName : ""; } } throw new IllegalStateException(); }