|
26 | 26 | import com.google.api.generator.test.framework.Utils;
|
27 | 27 | import com.google.protobuf.Descriptors.FileDescriptor;
|
28 | 28 | import com.google.protobuf.Descriptors.ServiceDescriptor;
|
| 29 | +import com.google.pubsub.v1.PubsubProto; |
29 | 30 | import com.google.showcase.v1beta1.EchoOuterClass;
|
30 | 31 | import com.google.showcase.v1beta1.TestingOuterClass;
|
| 32 | +import google.cloud.CommonResources; |
31 | 33 | import java.nio.file.Path;
|
32 | 34 | import java.nio.file.Paths;
|
| 35 | +import java.util.HashMap; |
33 | 36 | import java.util.HashSet;
|
34 | 37 | import java.util.List;
|
35 | 38 | import java.util.Map;
|
@@ -82,4 +85,33 @@ public void generateGrpcServiceStubClass_httpBindings() {
|
82 | 85 | Paths.get(ComposerConstants.GOLDENFILES_DIRECTORY, "GrpcTestingStub.golden");
|
83 | 86 | Assert.assertCodeEquals(goldenFilePath, visitor.write());
|
84 | 87 | }
|
| 88 | + |
| 89 | + @Test |
| 90 | + public void generateGrpcServiceStubClass_httpBindingsWithSubMessageFields() { |
| 91 | + FileDescriptor serviceFileDescriptor = PubsubProto.getDescriptor(); |
| 92 | + FileDescriptor commonResourcesFileDescriptor = CommonResources.getDescriptor(); |
| 93 | + ServiceDescriptor serviceDescriptor = serviceFileDescriptor.getServices().get(0); |
| 94 | + assertEquals("Publisher", serviceDescriptor.getName()); |
| 95 | + |
| 96 | + Map<String, ResourceName> resourceNames = new HashMap<>(); |
| 97 | + resourceNames.putAll(Parser.parseResourceNames(serviceFileDescriptor)); |
| 98 | + resourceNames.putAll(Parser.parseResourceNames(commonResourcesFileDescriptor)); |
| 99 | + |
| 100 | + Map<String, Message> messageTypes = Parser.parseMessages(serviceFileDescriptor); |
| 101 | + |
| 102 | + Set<ResourceName> outputResourceNames = new HashSet<>(); |
| 103 | + List<Service> services = |
| 104 | + Parser.parseService( |
| 105 | + serviceFileDescriptor, messageTypes, resourceNames, outputResourceNames); |
| 106 | + |
| 107 | + Service service = services.get(0); |
| 108 | + GapicClass clazz = GrpcServiceStubClassComposer.instance().generate(service, messageTypes); |
| 109 | + |
| 110 | + JavaWriterVisitor visitor = new JavaWriterVisitor(); |
| 111 | + clazz.classDefinition().accept(visitor); |
| 112 | + Utils.saveCodegenToFile(this.getClass(), "GrpcPublisherStub.golden", visitor.write()); |
| 113 | + Path goldenFilePath = |
| 114 | + Paths.get(ComposerConstants.GOLDENFILES_DIRECTORY, "GrpcPublisherStub.golden"); |
| 115 | + Assert.assertCodeEquals(goldenFilePath, visitor.write()); |
| 116 | + } |
85 | 117 | }
|
0 commit comments