private TypeSpec builder(NameAllocator nameAllocator, MessageType type, ClassName javaType, ClassName builderType) { TypeSpec.Builder result = TypeSpec.classBuilder("Builder") .addModifiers(PUBLIC, STATIC, FINAL); result.superclass(builderOf(javaType, builderType)); for (Field field : type.fieldsAndOneOfFields()) { String fieldName = nameAllocator.get(field); result.addField(fieldType(field), fieldName, PUBLIC); } result.addMethod(builderNoArgsConstructor(nameAllocator, type)); for (Field field : type.fields()) { result.addMethod(setter(nameAllocator, builderType, null, field)); } for (OneOf oneOf : type.oneOfs()) { for (Field field : oneOf.fields()) { result.addMethod(setter(nameAllocator, builderType, oneOf, field)); } } result.addMethod(builderBuild(nameAllocator, type, javaType)); return result.build(); }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
.addStatement("super($N, $N)", adapterName, unknownFieldsName); for (OneOf oneOf : type.oneOfs()) { if (oneOf.fields().size() < 2) continue; CodeBlock.Builder fieldNamesBuilder = CodeBlock.builder();
@Test public void retainFieldRetainsOneOf() throws Exception { Schema schema = new RepoBuilder() .add("service.proto", "" + "message Message {\n" + " oneof selection {\n" + " string a = 1;\n" + " string b = 2;\n" + " }\n" + " optional string c = 3;\n" + "}\n") .schema(); Schema pruned = schema.prune(new IdentifierSet.Builder() .include("Message#b") .build()); MessageType message = (MessageType) pruned.getType("Message"); OneOf onlyOneOf = getOnlyElement(message.oneOfs()); assertThat(onlyOneOf.name()).isEqualTo("selection"); assertThat(getOnlyElement(onlyOneOf.fields()).name()).isEqualTo("b"); assertThat(message.field("a")).isNull(); assertThat(message.field("c")).isNull(); }
@Test public void retainFieldPrunesOneOf() throws Exception { Schema schema = new RepoBuilder() .add("service.proto", "" + "message Message {\n" + " oneof selection {\n" + " string a = 1;\n" + " string b = 2;\n" + " }\n" + " optional string c = 3;\n" + "}\n") .schema(); Schema pruned = schema.prune(new IdentifierSet.Builder() .include("Message#c") .build()); assertThat(((MessageType) pruned.getType("Message")).oneOfs()).isEmpty(); }
private TypeSpec builder(NameAllocator nameAllocator, MessageType type, ClassName javaType, ClassName builderType) { TypeSpec.Builder result = TypeSpec.classBuilder("Builder") .addModifiers(PUBLIC, STATIC, FINAL); result.superclass(builderOf(javaType, builderType)); for (Field field : type.fieldsAndOneOfFields()) { String fieldName = nameAllocator.get(field); result.addField(fieldType(field), fieldName, PUBLIC); } result.addMethod(builderNoArgsConstructor(nameAllocator, type)); for (Field field : type.fields()) { result.addMethod(setter(nameAllocator, builderType, null, field)); } for (OneOf oneOf : type.oneOfs()) { for (Field field : oneOf.fields()) { result.addMethod(setter(nameAllocator, builderType, oneOf, field)); } } result.addMethod(builderBuild(nameAllocator, type, javaType)); return result.build(); }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
.addStatement("super($N, $N)", adapterName, unknownFieldsName); for (OneOf oneOf : type.oneOfs()) { if (oneOf.fields().size() < 2) continue; CodeBlock.Builder fieldNamesBuilder = CodeBlock.builder();
.addModifiers(PUBLIC); for (OneOf oneOf : type.oneOfs()) { if (oneOf.fields().size() < 2) { continue;
fieldBuilder.addAnnotation(wireFieldAnnotation(field, type.oneOfs())); fieldBuilder.addAnnotation(jsonPropertyAnnotation(field));