diff --git a/src/main/java/com/google/api/generator/gapic/model/Message.java b/src/main/java/com/google/api/generator/gapic/model/Message.java index 14c9b9cf12..ea44a02d0b 100644 --- a/src/main/java/com/google/api/generator/gapic/model/Message.java +++ b/src/main/java/com/google/api/generator/gapic/model/Message.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.IntStream; import javax.annotation.Nullable; @AutoValue @@ -33,6 +34,12 @@ public abstract class Message { // a specific field. public abstract ImmutableList fields(); + // String :: number value map for enums. + // TODO(unsupported): Consider making enums a separate POJO. However, that would require + // passing in a map of Message and another map of Enum types, which is not needed for + // 99.99% of protobuf generation. + public abstract ImmutableMap enumValues(); + public abstract TypeNode type(); public abstract ImmutableMap fieldMap(); @@ -49,6 +56,10 @@ public abstract class Message { public abstract Builder toBuilder(); + public boolean isEnum() { + return !enumValues().isEmpty(); + } + public boolean hasResource() { return resource() != null; } @@ -66,7 +77,11 @@ public Field findAndUnwrapFirstRepeatedField() { } public static Builder builder() { - return new AutoValue_Message.Builder().setOuterNestedTypes(Collections.emptyList()); + return new AutoValue_Message.Builder() + .setOuterNestedTypes(Collections.emptyList()) + .setFields(Collections.emptyList()) + .setFieldMap(Collections.emptyMap()) + .setEnumValues(Collections.emptyMap()); } @AutoValue.Builder @@ -75,6 +90,15 @@ public abstract static class Builder { public abstract Builder setFields(List fields); + public Builder setEnumValues(List names, List numbers) { + return setEnumValues( + IntStream.range(0, names.size()) + .boxed() + .collect(Collectors.toMap(i -> names.get(i), i -> numbers.get(i)))); + } + + public abstract Builder setEnumValues(Map enumValues); + public abstract Builder setType(TypeNode type); public abstract Builder setResource(ResourceName resource); @@ -85,11 +109,20 @@ public abstract static class Builder { abstract ImmutableList fields(); + abstract ImmutableMap enumValues(); + abstract Message autoBuild(); public Message build() { - setFieldMap(fields().stream().collect(Collectors.toMap(f -> f.name(), f -> f))); - return autoBuild(); + Message message = autoBuild(); + if (!message.fields().isEmpty()) { + message = + message + .toBuilder() + .setFieldMap(fields().stream().collect(Collectors.toMap(f -> f.name(), f -> f))) + .autoBuild(); + } + return message; } } } diff --git a/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java b/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java index fb7f089d3e..55ef078aa1 100644 --- a/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java +++ b/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java @@ -45,6 +45,8 @@ import com.google.protobuf.DescriptorProtos.ServiceOptions; import com.google.protobuf.Descriptors.Descriptor; import com.google.protobuf.Descriptors.DescriptorValidationException; +import com.google.protobuf.Descriptors.EnumDescriptor; +import com.google.protobuf.Descriptors.EnumValueDescriptor; import com.google.protobuf.Descriptors.FieldDescriptor; import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.MethodDescriptor; @@ -121,6 +123,7 @@ public static GapicContext parse(CodeGeneratorRequest request) { // While this takes an extra pass through the protobufs, the extra time is relatively trivial // and is worth the larger reduced maintenance cost. Map messages = parseMessages(request, outputResourceReferencesSeen); + Map resourceNames = parseResourceNames(request); messages = updateResourceNamesInMessages(messages, resourceNames.values()); @@ -343,6 +346,20 @@ public static Map parseMessages( for (Descriptor messageDescriptor : fileDescriptor.getMessageTypes()) { messages.putAll(parseMessages(messageDescriptor, outputResourceReferencesSeen)); } + // We treat enums as messages since we primarily care only about the type representation. + for (EnumDescriptor enumDescriptor : fileDescriptor.getEnumTypes()) { + String name = enumDescriptor.getName(); + List valueDescriptors = enumDescriptor.getValues(); + messages.put( + name, + Message.builder() + .setType(TypeParser.parseType(enumDescriptor)) + .setName(name) + .setEnumValues( + valueDescriptors.stream().map(v -> v.getName()).collect(Collectors.toList()), + valueDescriptors.stream().map(v -> v.getNumber()).collect(Collectors.toList())) + .build()); + } return messages; } diff --git a/src/main/java/com/google/api/generator/gapic/protoparser/TypeParser.java b/src/main/java/com/google/api/generator/gapic/protoparser/TypeParser.java index 82e8637bd3..aef1c1dff7 100644 --- a/src/main/java/com/google/api/generator/gapic/protoparser/TypeParser.java +++ b/src/main/java/com/google/api/generator/gapic/protoparser/TypeParser.java @@ -89,6 +89,10 @@ public static TypeNode parseType(@Nonnull Descriptor messageDescriptor) { return TypeNode.withReference(parseMessageReference(messageDescriptor)); } + public static TypeNode parseType(@Nonnull EnumDescriptor enumDescriptor) { + return TypeNode.withReference(parseEnumReference(enumDescriptor)); + } + public static String getPackage(FileDescriptor fileDescriptor) { String pakkage = fileDescriptor.getOptions().getJavaPackage(); if (Strings.isNullOrEmpty(pakkage)) { @@ -177,8 +181,29 @@ static Reference parseMessageReference(@Nonnull Descriptor messageDescriptor) { static Reference parseEnumReference(@Nonnull EnumDescriptor enumDescriptor) { // This is similar to parseMessageReference, but we make it a separate method because // EnumDescriptor and Descriptor are sibling types. + FileOptions fileOptions = enumDescriptor.getFile().getOptions(); + String javaOuterClassname = + fileOptions.hasJavaOuterClassname() ? fileOptions.getJavaOuterClassname() : null; + + // Some older protos don't have java_multiple_files option set, and don't have the outer + // classname option set either. + if (!fileOptions.getJavaMultipleFiles() && !fileOptions.hasJavaOuterClassname()) { + String fullFilePath = JavaStyle.toUpperCamelCase(enumDescriptor.getFile().getName()); + javaOuterClassname = + JavaStyle.toUpperCamelCase( + fullFilePath.substring( + fullFilePath.lastIndexOf("/") + 1, fullFilePath.lastIndexOf("."))); + } + + boolean hasJavaOuterClass = + !Strings.isNullOrEmpty(javaOuterClassname) && !fileOptions.getJavaMultipleFiles(); List outerNestedTypeNames = new ArrayList<>(); + if (hasJavaOuterClass) { + outerNestedTypeNames.add(javaOuterClassname); + } + Descriptor containingType = enumDescriptor.getContainingType(); + // Handles nesting. while (containingType != null) { // Outermost type in the nested type hierarchy lies at index 0. @@ -194,11 +219,18 @@ static Reference parseEnumReference(@Nonnull EnumDescriptor enumDescriptor) { .setEnclosingClassNames(outerNestedTypeNames) .build(); String protoPackage = enumDescriptor.getFile().getPackage(); + String enumFullName = enumDescriptor.getFullName(); + if (hasJavaOuterClass) { + enumFullName = + String.format( + "%s.%s.%s", + enumFullName.substring(0, enumFullName.lastIndexOf(DOT)), + javaOuterClassname, + enumFullName.substring(enumFullName.lastIndexOf(DOT) + 1)); + } + Preconditions.checkState( - enumReference - .fullName() - .replace(pakkage, protoPackage) - .equals(enumDescriptor.getFullName()), + enumReference.fullName().replace(pakkage, protoPackage).equals(enumFullName), String.format( "Parsed enum name %s does not match actual name %s", enumReference.fullName().replace(pakkage, ""), diff --git a/src/test/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposerTest.java index 2e80416d64..c77706820a 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposerTest.java @@ -20,7 +20,6 @@ import com.google.api.generator.engine.ast.Expr; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.engine.writer.JavaWriterVisitor; -import com.google.api.generator.gapic.composer.defaultvalue.DefaultValueComposer; import com.google.api.generator.gapic.model.Field; import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.ResourceName; @@ -273,6 +272,7 @@ public void createSimpleMessage_containsMessagesEnumsAndResourceName() { "EchoRequest.newBuilder().setName(" + "FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())" + ".setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())" + + ".setSeverity(Severity.forNumber(0))" + ".setFoobar(Foobar.newBuilder().build()).build()", writerVisitor.write()); } diff --git a/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClient.golden b/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClient.golden index 0779b4d092..4f8aa3c1ed 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClient.golden +++ b/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClient.golden @@ -314,6 +314,7 @@ public class EchoClient implements BackgroundResource { * EchoRequest.newBuilder() * .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) * .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + * .setSeverity(Severity.forNumber(0)) * .setFoobar(Foobar.newBuilder().build()) * .build(); * EchoResponse response = echoClient.echo(request); @@ -337,6 +338,7 @@ public class EchoClient implements BackgroundResource { * EchoRequest.newBuilder() * .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) * .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + * .setSeverity(Severity.forNumber(0)) * .setFoobar(Foobar.newBuilder().build()) * .build(); * ApiFuture future = echoClient.echoCallable().futureCall(request); @@ -397,6 +399,7 @@ public class EchoClient implements BackgroundResource { * EchoRequest.newBuilder() * .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) * .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + * .setSeverity(Severity.forNumber(0)) * .setFoobar(Foobar.newBuilder().build()) * .build(); * requestObserver.onNext(request); @@ -418,6 +421,7 @@ public class EchoClient implements BackgroundResource { * EchoRequest.newBuilder() * .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) * .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + * .setSeverity(Severity.forNumber(0)) * .setFoobar(Foobar.newBuilder().build()) * .build(); * bidiStream.send(request); @@ -442,6 +446,7 @@ public class EchoClient implements BackgroundResource { * EchoRequest.newBuilder() * .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) * .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + * .setSeverity(Severity.forNumber(0)) * .setFoobar(Foobar.newBuilder().build()) * .build(); * bidiStream.send(request); diff --git a/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden b/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden index 216a007562..fe7682e159 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden +++ b/src/test/java/com/google/api/generator/gapic/composer/goldens/EchoClientTest.golden @@ -79,7 +79,10 @@ public class EchoClientTest { @Test public void echoTest() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); EchoResponse actualResponse = client.echo(); @@ -105,6 +108,7 @@ public class EchoClientTest { EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); client.echo(request); @@ -117,7 +121,10 @@ public class EchoClientTest { @Test public void echoTest2() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); ResourceName parent = FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]"); @@ -153,7 +160,10 @@ public class EchoClientTest { @Test public void echoTest3() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); Status error = Status.newBuilder().build(); @@ -189,7 +199,10 @@ public class EchoClientTest { @Test public void echoTest4() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); FoobarName name = FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]"); @@ -225,7 +238,10 @@ public class EchoClientTest { @Test public void echoTest5() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); String content = "content951530617"; @@ -261,7 +277,10 @@ public class EchoClientTest { @Test public void echoTest6() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); String name = "name3373707"; @@ -297,7 +316,10 @@ public class EchoClientTest { @Test public void echoTest7() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); String parent = "parent-995424086"; @@ -333,7 +355,10 @@ public class EchoClientTest { @Test public void echoTest8() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); String content = "content951530617"; @@ -372,7 +397,10 @@ public class EchoClientTest { @Test public void expandTest() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); ExpandRequest request = ExpandRequest.newBuilder().setContent("content951530617").setInfo("info3237038").build(); @@ -412,12 +440,16 @@ public class EchoClientTest { @Test public void collectTest() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); EchoRequest request = EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); @@ -442,6 +474,7 @@ public class EchoClientTest { EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); @@ -465,12 +498,16 @@ public class EchoClientTest { @Test public void chatTest() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); EchoRequest request = EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); @@ -495,6 +532,7 @@ public class EchoClientTest { EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); @@ -518,12 +556,16 @@ public class EchoClientTest { @Test public void chatAgainTest() throws Exception { EchoResponse expectedResponse = - EchoResponse.newBuilder().setContent("content951530617").build(); + EchoResponse.newBuilder() + .setContent("content951530617") + .setSeverity(Severity.forNumber(0)) + .build(); mockEcho.addResponse(expectedResponse); EchoRequest request = EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); @@ -548,6 +590,7 @@ public class EchoClientTest { EchoRequest.newBuilder() .setName(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) .setParent(FoobarName.ofProjectFoobarName("[PROJECT]", "[FOOBAR]").toString()) + .setSeverity(Severity.forNumber(0)) .setFoobar(Foobar.newBuilder().build()) .build(); diff --git a/src/test/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientSampleCodeComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientSampleCodeComposerTest.java index c758a8ec26..fbfc42dec0 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientSampleCodeComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientSampleCodeComposerTest.java @@ -21,7 +21,6 @@ import com.google.api.generator.engine.ast.Reference; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.engine.ast.VaporReference; -import com.google.api.generator.gapic.composer.samplecode.ServiceClientSampleCodeComposer; import com.google.api.generator.gapic.model.Field; import com.google.api.generator.gapic.model.LongrunningOperation; import com.google.api.generator.gapic.model.Message; @@ -68,7 +67,9 @@ public void composeClassHeaderMethodSampleCode_unaryRpc() { .setName("EchoClient") .setPakkage(SHOWCASE_PACKAGE_NAME) .build()); - String results = ServiceClientSampleCodeComposer.composeClassHeaderMethodSampleCode(echoProtoService, clientType, resourceNames, messageTypes); + String results = + ServiceClientSampleCodeComposer.composeClassHeaderMethodSampleCode( + echoProtoService, clientType, resourceNames, messageTypes); String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", @@ -127,16 +128,17 @@ public void composeClassHeaderMethodSampleCode_firstMethodIsNotUnaryRpc() { .setLro(lro) .setMethodSignatures(Arrays.asList(Arrays.asList(ttl))) .build(); - Service service = Service.builder() - .setName("Echo") - .setDefaultHost("localhost:7469") - .setOauthScopes(Arrays.asList("https://www.googleapis.com/auth/cloud-platform")) - .setPakkage(SHOWCASE_PACKAGE_NAME) - .setProtoPakkage(SHOWCASE_PACKAGE_NAME) - .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) - .setOverriddenName("Echo") - .setMethods(Arrays.asList(method)) - .build(); + Service service = + Service.builder() + .setName("Echo") + .setDefaultHost("localhost:7469") + .setOauthScopes(Arrays.asList("https://www.googleapis.com/auth/cloud-platform")) + .setPakkage(SHOWCASE_PACKAGE_NAME) + .setProtoPakkage(SHOWCASE_PACKAGE_NAME) + .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) + .setOverriddenName("Echo") + .setMethods(Arrays.asList(method)) + .build(); TypeNode clientType = TypeNode.withReference( VaporReference.builder() @@ -168,7 +170,10 @@ public void composeClassHeaderMethodSampleCode_firstMethodHasNoSignatures() { .build()); TypeNode outputType = TypeNode.withReference( - VaporReference.builder().setName("EchoResponse").setPakkage(SHOWCASE_PACKAGE_NAME).build()); + VaporReference.builder() + .setName("EchoResponse") + .setPakkage(SHOWCASE_PACKAGE_NAME) + .build()); Method method = Method.builder() .setName("Echo") @@ -176,16 +181,17 @@ public void composeClassHeaderMethodSampleCode_firstMethodHasNoSignatures() { .setOutputType(outputType) .setMethodSignatures(Collections.emptyList()) .build(); - Service service = Service.builder() - .setName("Echo") - .setDefaultHost("localhost:7469") - .setOauthScopes(Arrays.asList("https://www.googleapis.com/auth/cloud-platform")) - .setPakkage(SHOWCASE_PACKAGE_NAME) - .setProtoPakkage(SHOWCASE_PACKAGE_NAME) - .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) - .setOverriddenName("Echo") - .setMethods(Arrays.asList(method)) - .build(); + Service service = + Service.builder() + .setName("Echo") + .setDefaultHost("localhost:7469") + .setOauthScopes(Arrays.asList("https://www.googleapis.com/auth/cloud-platform")) + .setPakkage(SHOWCASE_PACKAGE_NAME) + .setProtoPakkage(SHOWCASE_PACKAGE_NAME) + .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) + .setOverriddenName("Echo") + .setMethods(Arrays.asList(method)) + .build(); TypeNode clientType = TypeNode.withReference( VaporReference.builder() @@ -200,8 +206,11 @@ public void composeClassHeaderMethodSampleCode_firstMethodHasNoSignatures() { "try (EchoClient echoClient = EchoClient.create()) {\n", " EchoRequest request =\n", " EchoRequest.newBuilder()\n", - " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", - " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", + " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setSeverity(Severity.forNumber(0))\n", " .setFoobar(Foobar.newBuilder().build())\n", " .build();\n", " EchoResponse response = echoClient.echo(request);\n", @@ -233,28 +242,32 @@ public void composeClassHeaderMethodSampleCode_firstMethodIsStream() { .setOutputType(outputType) .setStream(Stream.SERVER) .build(); - Service service = Service.builder() - .setName("Echo") - .setDefaultHost("localhost:7469") - .setOauthScopes(Arrays.asList("https://www.googleapis.com/auth/cloud-platform")) - .setPakkage(SHOWCASE_PACKAGE_NAME) - .setProtoPakkage(SHOWCASE_PACKAGE_NAME) - .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) - .setOverriddenName("Echo") - .setMethods(Arrays.asList(method)) - .build(); + Service service = + Service.builder() + .setName("Echo") + .setDefaultHost("localhost:7469") + .setOauthScopes(Arrays.asList("https://www.googleapis.com/auth/cloud-platform")) + .setPakkage(SHOWCASE_PACKAGE_NAME) + .setProtoPakkage(SHOWCASE_PACKAGE_NAME) + .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) + .setOverriddenName("Echo") + .setMethods(Arrays.asList(method)) + .build(); TypeNode clientType = TypeNode.withReference( VaporReference.builder() .setName("EchoClient") .setPakkage(SHOWCASE_PACKAGE_NAME) .build()); - String results = ServiceClientSampleCodeComposer.composeClassHeaderMethodSampleCode(service, clientType, resourceNames, messageTypes); + String results = + ServiceClientSampleCodeComposer.composeClassHeaderMethodSampleCode( + service, clientType, resourceNames, messageTypes); String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", " ExpandRequest request =\n", - " ExpandRequest.newBuilder().setContent(\"content951530617\").setInfo(\"info3237038\").build();\n", + " " + + " ExpandRequest.newBuilder().setContent(\"content951530617\").setInfo(\"info3237038\").build();\n", " ServerStream stream = echoClient.expandCallable().call(request);\n", " for (EchoResponse response : stream) {\n", " // Do something when a response is received.\n", @@ -278,7 +291,8 @@ public void composeClassHeaderCredentialsSampleCode() { .setPakkage(SHOWCASE_PACKAGE_NAME) .build()); String results = - ServiceClientSampleCodeComposer.composeClassHeaderCredentialsSampleCode(clientType, settingsType); + ServiceClientSampleCodeComposer.composeClassHeaderCredentialsSampleCode( + clientType, settingsType); String expected = LineFormatter.lines( "EchoSettings echoSettings =\n", @@ -304,10 +318,12 @@ public void composeClassHeaderEndpointSampleCode() { .setPakkage(SHOWCASE_PACKAGE_NAME) .build()); String results = - ServiceClientSampleCodeComposer.composeClassHeaderEndpointSampleCode(clientType, settingsType); + ServiceClientSampleCodeComposer.composeClassHeaderEndpointSampleCode( + clientType, settingsType); String expected = LineFormatter.lines( - "EchoSettings echoSettings = EchoSettings.newBuilder().setEndpoint(myEndpoint).build();\n", + "EchoSettings echoSettings =" + + " EchoSettings.newBuilder().setEndpoint(myEndpoint).build();\n", "EchoClient echoClient = EchoClient.create(echoSettings);"); assertEquals(expected, results); } @@ -408,7 +424,8 @@ public void validComposeRpcMethodHeaderSampleCode_pureUnaryRpcWithResourceNameMe String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", - " ResourceName parent = FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\");\n", + " ResourceName parent = FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\");\n", " EchoResponse response = echoClient.echo(parent);\n", "}"); assertEquals(expected, results); @@ -529,7 +546,8 @@ public void validComposeRpcMethodHeaderSampleCode_pureUnaryRpcWithResourceNameMe String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", - " String name = FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString();\n", + " String name = FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString();\n", " EchoResponse response = echoClient.echo(name);\n", "}"); assertEquals(expected, results); @@ -586,7 +604,8 @@ public void validComposeRpcMethodHeaderSampleCode_pureUnaryRpcWithResourceNameMe String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", - " String parent = FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString();\n", + " String parent = FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString();\n", " EchoResponse response = echoClient.echo(parent);\n", "}"); assertEquals(expected, results); @@ -719,7 +738,8 @@ public void validComposeRpcMethodHeaderSampleCode_pureUnaryRpcWithIsMessageMetho String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", - " String displayName = FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString();\n", + " String displayName = FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString();\n", " String otherName = \"otherName-1946065477\";\n", " EchoResponse response = echoClient.echo(displayName, otherName);\n", "}"); @@ -1018,7 +1038,8 @@ public void validComposeRpcMethodHeaderSampleCode_pagedRpcWithMultipleMethodArgu "try (EchoClient echoClient = EchoClient.create()) {\n", " List resourceName = new ArrayList<>();\n", " String filter = \"filter-1274492040\";\n", - " for (Content element : echoClient.listContent(resourceName, filter).iterateAll()) {\n", + " for (Content element : echoClient.listContent(resourceName, filter).iterateAll())" + + " {\n", " // doThingsWith(element);\n", " }\n", "}"); @@ -1611,8 +1632,11 @@ public void validComposeRpcDefaultMethodHeaderSampleCode_pureUnaryReturnVoid() { "try (EchoClient echoClient = EchoClient.create()) {\n", " EchoRequest request =\n", " EchoRequest.newBuilder()\n", - " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", - " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", + " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setSeverity(Severity.forNumber(0))\n", " .setFoobar(Foobar.newBuilder().build())\n", " .build();\n", " echoClient.echo(request);\n", @@ -1658,8 +1682,11 @@ public void validComposeRpcDefaultMethodHeaderSampleCode_pureUnaryReturnResponse "try (EchoClient echoClient = EchoClient.create()) {\n", " EchoRequest request =\n", " EchoRequest.newBuilder()\n", - " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", - " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", + " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setSeverity(Severity.forNumber(0))\n", " .setFoobar(Foobar.newBuilder().build())\n", " .build();\n", " EchoResponse response = echoClient.echo(request);\n", @@ -1818,7 +1845,8 @@ public void validComposePagedCallableMethodHeaderSampleCode() { " .setPageSize(883849137)\n", " .setPageToken(\"pageToken873572522\")\n", " .build();\n", - " ApiFuture future = echoClient.pagedExpandPagedCallable().futureCall(request);\n", + " ApiFuture future =" + + " echoClient.pagedExpandPagedCallable().futureCall(request);\n", " // Do something.\n", " for (EchoResponse element : future.get().iterateAll()) {\n", " // doThingsWith(element);\n", @@ -1989,7 +2017,8 @@ public void validComposeStreamCallableMethodHeaderSampleCode_serverStream() { LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", " ExpandRequest request =\n", - " ExpandRequest.newBuilder().setContent(\"content951530617\").setInfo(\"info3237038\").build();\n", + " " + + " ExpandRequest.newBuilder().setContent(\"content951530617\").setInfo(\"info3237038\").build();\n", " ServerStream stream = echoClient.expandCallable().call(request);\n", " for (EchoResponse response : stream) {\n", " // Do something when a response is received.\n", @@ -2071,11 +2100,15 @@ public void validComposeStreamCallableMethodHeaderSampleCode_bidiStream() { String expected = LineFormatter.lines( "try (EchoClient echoClient = EchoClient.create()) {\n", - " BidiStream bidiStream = echoClient.chatCallable().call();\n", + " BidiStream bidiStream =" + + " echoClient.chatCallable().call();\n", " EchoRequest request =\n", " EchoRequest.newBuilder()\n", - " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", - " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", + " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setSeverity(Severity.forNumber(0))\n", " .setFoobar(Foobar.newBuilder().build())\n", " .build();\n", " bidiStream.send(request);\n", @@ -2180,8 +2213,11 @@ public void validComposeStreamCallableMethodHeaderSampleCode_clientStream() { " echoClient.collect().clientStreamingCall(responseObserver);\n", " EchoRequest request =\n", " EchoRequest.newBuilder()\n", - " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", - " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", + " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setSeverity(Severity.forNumber(0))\n", " .setFoobar(Foobar.newBuilder().build())\n", " .build();\n", " requestObserver.onNext(request);\n", @@ -2251,11 +2287,7 @@ public void validComposeRegularCallableMethodHeaderSampleCode_unaryRpc() { .setPakkage(SHOWCASE_PACKAGE_NAME) .build()); Method method = - Method.builder() - .setName("Echo") - .setInputType(inputType) - .setOutputType(outputType) - .build(); + Method.builder().setName("Echo").setInputType(inputType).setOutputType(outputType).build(); String results = ServiceClientSampleCodeComposer.composeRegularCallableMethodHeaderSampleCode( method, clientType, resourceNames, messageTypes); @@ -2264,8 +2296,11 @@ public void validComposeRegularCallableMethodHeaderSampleCode_unaryRpc() { "try (EchoClient echoClient = EchoClient.create()) {\n", " EchoRequest request =\n", " EchoRequest.newBuilder()\n", - " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", - " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\", \"[FOOBAR]\").toString())\n", + " .setName(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setParent(FoobarName.ofProjectFoobarName(\"[PROJECT]\"," + + " \"[FOOBAR]\").toString())\n", + " .setSeverity(Severity.forNumber(0))\n", " .setFoobar(Foobar.newBuilder().build())\n", " .build();\n", " ApiFuture future = echoClient.echoCallable().futureCall(request);\n", @@ -2351,10 +2386,7 @@ public void validComposeRegularCallableMethodHeaderSampleCode_lroRpcWithReturnVo VaporReference.builder().setName("Operation").setPakkage(LRO_PACKAGE_NAME).build()); TypeNode responseType = TypeNode.withReference( - VaporReference.builder() - .setName("Empty") - .setPakkage(PROTO_PACKAGE_NAME) - .build()); + VaporReference.builder().setName("Empty").setPakkage(PROTO_PACKAGE_NAME).build()); TypeNode metadataType = TypeNode.withReference( VaporReference.builder() @@ -2460,11 +2492,7 @@ public void invalidComposeRegularCallableMethodHeaderSampleCode_noExistMethodReq .setPakkage(SHOWCASE_PACKAGE_NAME) .build()); Method method = - Method.builder() - .setName("Echo") - .setInputType(inputType) - .setOutputType(outputType) - .build(); + Method.builder().setName("Echo").setInputType(inputType).setOutputType(outputType).build(); assertThrows( NullPointerException.class, () -> diff --git a/test/integration/goldens/asset/AssetServiceClient.java b/test/integration/goldens/asset/AssetServiceClient.java index 81f1dcb617..c22e2a50dc 100644 --- a/test/integration/goldens/asset/AssetServiceClient.java +++ b/test/integration/goldens/asset/AssetServiceClient.java @@ -52,6 +52,7 @@ * BatchGetAssetsHistoryRequest.newBuilder() * .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) * .addAllAssetNames(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setReadTimeWindow(TimeWindow.newBuilder().build()) * .build(); * BatchGetAssetsHistoryResponse response = assetServiceClient.batchGetAssetsHistory(request); @@ -187,6 +188,7 @@ public final OperationsClient getOperationsClient() { * .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) * .setReadTime(Timestamp.newBuilder().build()) * .addAllAssetTypes(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setOutputConfig(OutputConfig.newBuilder().build()) * .build(); * ExportAssetsResponse response = assetServiceClient.exportAssetsAsync(request).get(); @@ -221,6 +223,7 @@ public final OperationFuture exportAs * .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) * .setReadTime(Timestamp.newBuilder().build()) * .addAllAssetTypes(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setOutputConfig(OutputConfig.newBuilder().build()) * .build(); * OperationFuture future = @@ -255,6 +258,7 @@ public final OperationFuture exportAs * .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) * .setReadTime(Timestamp.newBuilder().build()) * .addAllAssetTypes(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setOutputConfig(OutputConfig.newBuilder().build()) * .build(); * ApiFuture future = assetServiceClient.exportAssetsCallable().futureCall(request); @@ -283,6 +287,7 @@ public final UnaryCallable exportAssetsCallable( * BatchGetAssetsHistoryRequest.newBuilder() * .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) * .addAllAssetNames(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setReadTimeWindow(TimeWindow.newBuilder().build()) * .build(); * BatchGetAssetsHistoryResponse response = assetServiceClient.batchGetAssetsHistory(request); @@ -313,6 +318,7 @@ public final BatchGetAssetsHistoryResponse batchGetAssetsHistory( * BatchGetAssetsHistoryRequest.newBuilder() * .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) * .addAllAssetNames(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setReadTimeWindow(TimeWindow.newBuilder().build()) * .build(); * ApiFuture future = diff --git a/test/integration/goldens/asset/AssetServiceClientTest.java b/test/integration/goldens/asset/AssetServiceClientTest.java index f12688c9d7..b2f1a516c8 100644 --- a/test/integration/goldens/asset/AssetServiceClientTest.java +++ b/test/integration/goldens/asset/AssetServiceClientTest.java @@ -108,6 +108,7 @@ public void exportAssetsTest() throws Exception { .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .setReadTime(Timestamp.newBuilder().build()) .addAllAssetTypes(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setOutputConfig(OutputConfig.newBuilder().build()) .build(); @@ -140,6 +141,7 @@ public void exportAssetsExceptionTest() throws Exception { .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .setReadTime(Timestamp.newBuilder().build()) .addAllAssetTypes(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setOutputConfig(OutputConfig.newBuilder().build()) .build(); client.exportAssetsAsync(request).get(); @@ -163,6 +165,7 @@ public void batchGetAssetsHistoryTest() throws Exception { BatchGetAssetsHistoryRequest.newBuilder() .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .addAllAssetNames(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setReadTimeWindow(TimeWindow.newBuilder().build()) .build(); @@ -194,6 +197,7 @@ public void batchGetAssetsHistoryExceptionTest() throws Exception { BatchGetAssetsHistoryRequest.newBuilder() .setParent(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .addAllAssetNames(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setReadTimeWindow(TimeWindow.newBuilder().build()) .build(); client.batchGetAssetsHistory(request); @@ -210,6 +214,7 @@ public void createFeedTest() throws Exception { .setName(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .addAllAssetNames(new ArrayList()) .addAllAssetTypes(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setFeedOutputConfig(FeedOutputConfig.newBuilder().build()) .setCondition(Expr.newBuilder().build()) .build(); @@ -252,6 +257,7 @@ public void getFeedTest() throws Exception { .setName(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .addAllAssetNames(new ArrayList()) .addAllAssetTypes(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setFeedOutputConfig(FeedOutputConfig.newBuilder().build()) .setCondition(Expr.newBuilder().build()) .build(); @@ -294,6 +300,7 @@ public void getFeedTest2() throws Exception { .setName(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .addAllAssetNames(new ArrayList()) .addAllAssetTypes(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setFeedOutputConfig(FeedOutputConfig.newBuilder().build()) .setCondition(Expr.newBuilder().build()) .build(); @@ -372,6 +379,7 @@ public void updateFeedTest() throws Exception { .setName(FeedName.ofProjectFeedName("[PROJECT]", "[FEED]").toString()) .addAllAssetNames(new ArrayList()) .addAllAssetTypes(new ArrayList()) + .setContentType(ContentType.forNumber(0)) .setFeedOutputConfig(FeedOutputConfig.newBuilder().build()) .setCondition(Expr.newBuilder().build()) .build(); diff --git a/test/integration/goldens/asset/package-info.java b/test/integration/goldens/asset/package-info.java index 1d38c8e91e..47d4e62d22 100644 --- a/test/integration/goldens/asset/package-info.java +++ b/test/integration/goldens/asset/package-info.java @@ -29,6 +29,7 @@ * BatchGetAssetsHistoryRequest.newBuilder() * .setParent(ProjectName.of("[PROJECT]").toString()) * .addAllAssetNames(new ArrayList()) + * .setContentType(ContentType.forNumber(0)) * .setReadTimeWindow(TimeWindow.newBuilder().build()) * .build(); * BatchGetAssetsHistoryResponse response = assetServiceClient.batchGetAssetsHistory(request); diff --git a/test/integration/goldens/logging/ConfigClientTest.java b/test/integration/goldens/logging/ConfigClientTest.java index ddaee28039..3ba857b117 100644 --- a/test/integration/goldens/logging/ConfigClientTest.java +++ b/test/integration/goldens/logging/ConfigClientTest.java @@ -42,6 +42,7 @@ import com.google.logging.v2.GetCmekSettingsRequest; import com.google.logging.v2.GetExclusionRequest; import com.google.logging.v2.GetSinkRequest; +import com.google.logging.v2.LifecycleState; import com.google.logging.v2.ListBucketsRequest; import com.google.logging.v2.ListBucketsResponse; import com.google.logging.v2.ListExclusionsRequest; @@ -350,6 +351,7 @@ public void getBucketTest() throws Exception { .setCreateTime(Timestamp.newBuilder().build()) .setUpdateTime(Timestamp.newBuilder().build()) .setRetentionDays(1544391896) + .setLifecycleState(LifecycleState.forNumber(0)) .build(); mockConfigServiceV2.addResponse(expectedResponse); @@ -404,6 +406,7 @@ public void updateBucketTest() throws Exception { .setCreateTime(Timestamp.newBuilder().build()) .setUpdateTime(Timestamp.newBuilder().build()) .setRetentionDays(1544391896) + .setLifecycleState(LifecycleState.forNumber(0)) .build(); mockConfigServiceV2.addResponse(expectedResponse);