diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5c3772c261..cd8f0c42fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,34 +1,5 @@
# Changelog
-## [2.10.3](https://github.com/googleapis/gapic-generator-java/compare/v2.10.2...v2.10.3) (2022-11-01)
-
-
-### Bug Fixes
-
-* Fix REST transport client creation generated javadoc sample ([#1077](https://github.com/googleapis/gapic-generator-java/issues/1077)) ([9ac0ca8](https://github.com/googleapis/gapic-generator-java/commit/9ac0ca80b09077f7880f0029b5d7b090a10a10b8))
-* Fixes regionTag breakage ([#1068](https://github.com/googleapis/gapic-generator-java/issues/1068)) ([bed9f72](https://github.com/googleapis/gapic-generator-java/commit/bed9f721fbafb5f2e974b6f43f8455f2fdb581f7))
-
-## [2.10.2](https://github.com/googleapis/gapic-generator-java/compare/v2.10.1...v2.10.2) (2022-10-24)
-
-
-### Bug Fixes
-
-* **deps:** Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.5 ([#1063](https://github.com/googleapis/gapic-generator-java/issues/1063)) ([80ed62c](https://github.com/googleapis/gapic-generator-java/commit/80ed62cf6aff395d150e394a44fb60da37e9a6ae))
-* Update regionTag to use service name ([#1047](https://github.com/googleapis/gapic-generator-java/issues/1047)) ([68b33c2](https://github.com/googleapis/gapic-generator-java/commit/68b33c23948ffe7a2bf6acd53731d786257f6bd1))
-
-## [2.10.1](https://github.com/googleapis/gapic-generator-java/compare/v2.10.0...v2.10.1) (2022-10-20)
-
-
-### Bug Fixes
-
-* **deps:** Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.2 ([#1035](https://github.com/googleapis/gapic-generator-java/issues/1035)) ([f76634a](https://github.com/googleapis/gapic-generator-java/commit/f76634af8497ef2977376af570d175eb0fe91e6f))
-* **deps:** Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.3 ([#1039](https://github.com/googleapis/gapic-generator-java/issues/1039)) ([9d25e47](https://github.com/googleapis/gapic-generator-java/commit/9d25e477126db35efd111a2b8ee76332b549ce91))
-* **deps:** Update dependency com.google.cloud:google-cloud-shared-dependencies to v3.0.4 ([#1050](https://github.com/googleapis/gapic-generator-java/issues/1050)) ([3b052e2](https://github.com/googleapis/gapic-generator-java/commit/3b052e27bb704124ae3214dd3e8708f8e32afe6c))
-* **deps:** Update dependency org.yaml:snakeyaml to v1.32 ([#1037](https://github.com/googleapis/gapic-generator-java/issues/1037)) ([b520aa0](https://github.com/googleapis/gapic-generator-java/commit/b520aa0d35407daf96123d63c3112b9f29715115))
-* **deps:** Update dependency org.yaml:snakeyaml to v1.33 ([#1043](https://github.com/googleapis/gapic-generator-java/issues/1043)) ([67a5dc5](https://github.com/googleapis/gapic-generator-java/commit/67a5dc5e4dd3302ececd212dd047f5731c4bf74d))
-* Get numeric value for Enum fields if it is configured as query param or path param ([#1042](https://github.com/googleapis/gapic-generator-java/issues/1042)) ([0fdfa67](https://github.com/googleapis/gapic-generator-java/commit/0fdfa67fec84e1983c12b10c7b7ae7a0efa80f4d))
-* Update sample region tag to parse host instead of proto package ([#1040](https://github.com/googleapis/gapic-generator-java/issues/1040)) ([01c14d4](https://github.com/googleapis/gapic-generator-java/commit/01c14d41d4195963c0ed46f310360f39eec6d420))
-
## [2.10.0](https://github.com/googleapis/gapic-generator-java/compare/v2.9.0...v2.10.0) (2022-09-06)
diff --git a/PROPERTIES.bzl b/PROPERTIES.bzl
index 4d5e0f286e..78b7d809c0 100644
--- a/PROPERTIES.bzl
+++ b/PROPERTIES.bzl
@@ -1,5 +1,5 @@
PROPERTIES = {
- "version.com_google_protobuf": "3.21.7",
+ "version.com_google_protobuf": "3.19.1",
# Version of google-java-format is downgraded from 1.8 to 1.7, because 1.8 supports java 11 minimum, while our JRE is java 8.
"version.google_java_format": "1.7",
"version.io_grpc_java": "1.42.1",
@@ -10,7 +10,7 @@ PROPERTIES = {
"maven.com_google_auto_value_auto_value": "com.google.auto.value:auto-value:1.7.2",
"maven.com_google_auto_value_auto_value_annotations": "com.google.auto.value:auto-value-annotations:1.7.2",
"maven.com_google_code_gson": "com.google.code.gson:gson:2.8.6",
- "maven.com_google_protobuf_protobuf_java": "com.google.protobuf:protobuf-java:3.21.7",
+ "maven.com_google_protobuf_protobuf_java": "com.google.protobuf:protobuf-java:3.19.1",
"maven.io_github_java_diff_utils": "io.github.java-diff-utils:java-diff-utils:4.11",
"maven.javax_annotation_javax_annotation_api": "javax.annotation:javax.annotation-api:1.3.2",
diff --git a/pom.xml b/pom.xml
index 76416d39da..10f973578d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
com.google.cloud
google-cloud-shared-dependencies
- 3.0.5
+ 3.0.2
pom
import
@@ -42,7 +42,7 @@
com.google.auto.value
auto-value
- 1.10
+ 1.9
@@ -155,7 +155,7 @@
protobuf-maven-plugin
0.6.1
- com.google.protobuf:protoc:3.21.7:exe:${os.detected.classifier}
+ com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}
@@ -234,7 +234,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.4.1
+ 3.3.0
package
@@ -311,7 +311,7 @@
org.yaml
snakeyaml
- 1.33
+ 1.31
com.google.googlejavaformat
diff --git a/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java b/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java
index b3b2c9d997..0967cea087 100644
--- a/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java
+++ b/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java
@@ -183,7 +183,6 @@ public void visit(TernaryExpr ternaryExpr) {
@Override
public void visit(VariableExpr variableExpr) {
variableExpr.variable().type().accept(this);
- annotations(variableExpr.annotations());
if (variableExpr.exprReferenceExpr() != null) {
variableExpr.exprReferenceExpr().accept(this);
}
diff --git a/src/main/java/com/google/api/generator/gapic/composer/Composer.java b/src/main/java/com/google/api/generator/gapic/composer/Composer.java
index acd914a163..8306930de1 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/Composer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/Composer.java
@@ -15,7 +15,6 @@
package com.google.api.generator.gapic.composer;
import com.google.api.generator.engine.ast.ClassDefinition;
-import com.google.api.generator.engine.ast.CommentStatement;
import com.google.api.generator.gapic.composer.comment.CommentComposer;
import com.google.api.generator.gapic.composer.grpc.GrpcServiceCallableFactoryClassComposer;
import com.google.api.generator.gapic.composer.grpc.GrpcServiceStubClassComposer;
@@ -48,7 +47,8 @@ public static List composeServiceClasses(GapicContext context) {
clazzes.addAll(generateServiceClasses(context));
clazzes.addAll(generateMockClasses(context, context.mixinServices()));
clazzes.addAll(generateResourceNameHelperClasses(context));
- return addApacheLicense(prepareExecutableSamples(clazzes));
+ return addApacheLicense(
+ prepareExecutableSamples(clazzes, context.gapicMetadata().getProtoPackage()));
}
public static GapicPackageInfo composePackageInfo(GapicContext context) {
@@ -190,30 +190,37 @@ public static List generateTestClasses(GapicContext context) {
}
@VisibleForTesting
- static List prepareExecutableSamples(List clazzes) {
- // Include license header, apiShortName, and apiVersion
- List clazzesWithSamples = new ArrayList<>();
- clazzes.forEach(
- gapicClass -> {
- List samples = new ArrayList<>();
- gapicClass
- .samples()
- .forEach(
- sample ->
- samples.add(
- addRegionTagAndHeaderToSample(
- sample, gapicClass.apiShortName(), gapicClass.apiVersion())));
- clazzesWithSamples.add(gapicClass.withSamples(samples));
- });
- return clazzesWithSamples;
+ static List prepareExecutableSamples(List clazzes, String protoPackage) {
+ // parse protoPackage for apiVersion and apiShortName
+ String[] pakkage = protoPackage.split("\\.");
+ String apiVersion;
+ String apiShortName;
+ // e.g. v1, v2, v1beta1
+ if (pakkage[pakkage.length - 1].matches("v[0-9].*")) {
+ apiVersion = pakkage[pakkage.length - 1];
+ apiShortName = pakkage[pakkage.length - 2];
+ } else {
+ apiVersion = "";
+ apiShortName = pakkage[pakkage.length - 1];
+ }
+ // Include license header, apiShortName, and apiVersion
+ return clazzes.stream()
+ .map(
+ gapicClass -> {
+ List samples =
+ gapicClass.samples().stream()
+ .map(
+ sample -> addRegionTagAndHeaderToSample(sample, apiShortName, apiVersion))
+ .collect(Collectors.toList());
+ return gapicClass.withSamples(samples);
+ })
+ .collect(Collectors.toList());
}
- @VisibleForTesting
- protected static Sample addRegionTagAndHeaderToSample(
+ private static Sample addRegionTagAndHeaderToSample(
Sample sample, String apiShortName, String apiVersion) {
- final List header = Arrays.asList(CommentComposer.APACHE_LICENSE_COMMENT);
return sample
- .withHeader(header)
+ .withHeader(Arrays.asList(CommentComposer.APACHE_LICENSE_COMMENT))
.withRegionTag(
sample.regionTag().withApiVersion(apiVersion).withApiShortName(apiShortName));
}
diff --git a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java
index b6095be08b..cf99df8d15 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java
@@ -163,9 +163,7 @@ public GapicClass generate(GapicContext context, Service service) {
.build();
updateGapicMetadata(context, service, className, grpcRpcsToJavaMethodNames);
- return GapicClass.create(kind, classDef, SampleComposerUtil.handleDuplicateSamples(samples))
- .withApiShortName(service.apiShortName())
- .withApiVersion(service.apiVersion());
+ return GapicClass.create(kind, classDef, SampleComposerUtil.handleDuplicateSamples(samples));
}
private static List createClassAnnotations(Service service, TypeStore typeStore) {
@@ -200,11 +198,9 @@ protected List createClassHeaderComments(
ServiceClientHeaderSampleComposer.composeClassHeaderSample(
service, clientType, resourceNames, messageTypes);
Sample credentialsSampleCode =
- ServiceClientHeaderSampleComposer.composeSetCredentialsSample(
- clientType, settingsType, service);
+ ServiceClientHeaderSampleComposer.composeSetCredentialsSample(clientType, settingsType);
Sample endpointSampleCode =
- ServiceClientHeaderSampleComposer.composeSetEndpointSample(
- clientType, settingsType, service);
+ ServiceClientHeaderSampleComposer.composeSetEndpointSample(clientType, settingsType);
samples.addAll(Arrays.asList(classMethodSampleCode, credentialsSampleCode, endpointSampleCode));
return ServiceClientCommentComposer.createClassHeaderComments(
service,
@@ -582,8 +578,7 @@ private static List createServiceMethods(
messageTypes,
typeStore,
resourceNames,
- samples,
- service);
+ samples);
// Collect data for gapic_metadata.json.
grpcRpcToJavaMethodMetadata
@@ -601,8 +596,7 @@ private static List createServiceMethods(
messageTypes,
typeStore,
resourceNames,
- samples,
- service);
+ samples);
// Collect data for gapic_metadata.json.
grpcRpcToJavaMethodMetadata.get(method.name()).add(javaMethodNameFn.apply(generatedMethod));
@@ -642,8 +636,7 @@ private static List createMethodVariants(
Map messageTypes,
TypeStore typeStore,
Map resourceNames,
- List samples,
- Service service) {
+ List samples) {
List javaMethods = new ArrayList<>();
String methodName = JavaStyle.toLowerCamelCase(method.name());
TypeNode methodInputType = method.inputType();
@@ -707,12 +700,7 @@ private static List createMethodVariants(
Optional methodSample =
Optional.of(
ServiceClientHeaderSampleComposer.composeShowcaseMethodSample(
- method,
- typeStore.get(clientName),
- signature,
- resourceNames,
- messageTypes,
- service));
+ method, typeStore.get(clientName), signature, resourceNames, messageTypes));
Optional methodDocSample = Optional.empty();
if (methodSample.isPresent()) {
samples.add(methodSample.get());
@@ -756,8 +744,7 @@ private static MethodDefinition createMethodDefaultMethod(
Map messageTypes,
TypeStore typeStore,
Map resourceNames,
- List samples,
- Service service) {
+ List samples) {
String methodName = JavaStyle.toLowerCamelCase(method.name());
TypeNode methodInputType = method.inputType();
TypeNode methodOutputType =
@@ -801,7 +788,7 @@ private static MethodDefinition createMethodDefaultMethod(
Optional defaultMethodSample =
Optional.of(
ServiceClientMethodSampleComposer.composeCanonicalSample(
- method, typeStore.get(clientName), resourceNames, messageTypes, service));
+ method, typeStore.get(clientName), resourceNames, messageTypes));
Optional defaultMethodDocSample = Optional.empty();
if (defaultMethodSample.isPresent()) {
samples.add(defaultMethodSample.get());
@@ -943,8 +930,7 @@ private static MethodDefinition createCallableMethod(
method,
typeStore.get(ClassNames.getServiceClientClassName(service)),
resourceNames,
- messageTypes,
- service));
+ messageTypes));
} else if (callableMethodKind.equals(CallableMethodKind.PAGED)) {
sampleCode =
Optional.of(
@@ -952,8 +938,7 @@ private static MethodDefinition createCallableMethod(
method,
typeStore.get(ClassNames.getServiceClientClassName(service)),
resourceNames,
- messageTypes,
- service));
+ messageTypes));
} else if (callableMethodKind.equals(CallableMethodKind.REGULAR)) {
if (method.stream().equals(Stream.NONE)) {
sampleCode =
@@ -962,8 +947,7 @@ private static MethodDefinition createCallableMethod(
method,
typeStore.get(ClassNames.getServiceClientClassName(service)),
resourceNames,
- messageTypes,
- service));
+ messageTypes));
} else {
sampleCode =
Optional.of(
@@ -971,8 +955,7 @@ private static MethodDefinition createCallableMethod(
method,
typeStore.get(ClassNames.getServiceClientClassName(service)),
resourceNames,
- messageTypes,
- service));
+ messageTypes));
}
}
Optional sampleDocCode = Optional.empty();
diff --git a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java
index fdfa33f471..68780ed6bc 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java
@@ -126,9 +126,7 @@ public GapicClass generate(GapicContext context, Service service) {
.setMethods(createClassMethods(service, typeStore))
.setNestedClasses(Arrays.asList(createNestedBuilderClass(service, typeStore)))
.build();
- return GapicClass.create(kind, classDef, SampleComposerUtil.handleDuplicateSamples(samples))
- .withApiShortName(service.apiShortName())
- .withApiVersion(service.apiVersion());
+ return GapicClass.create(kind, classDef, SampleComposerUtil.handleDuplicateSamples(samples));
}
private static List createClassHeaderComments(
diff --git a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java
index fe66a11e77..1074173850 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java
@@ -201,9 +201,7 @@ public GapicClass generate(GapicContext context, Service service) {
Arrays.asList(createNestedBuilderClass(service, serviceConfig, typeStore)))
.build();
return GapicClass.create(
- GapicClass.Kind.STUB, classDef, SampleComposerUtil.handleDuplicateSamples(samples))
- .withApiShortName(service.apiShortName())
- .withApiVersion(service.apiVersion());
+ GapicClass.Kind.STUB, classDef, SampleComposerUtil.handleDuplicateSamples(samples));
}
protected MethodDefinition createDefaultCredentialsProviderBuilderMethod() {
diff --git a/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java
index 8933b7b4ed..e600ada5d2 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java
@@ -54,14 +54,12 @@ protected List createClassHeaderComments(
ServiceClientHeaderSampleComposer.composeClassHeaderSample(
service, clientType, resourceNames, messageTypes);
Sample credentialsSampleCode =
- ServiceClientHeaderSampleComposer.composeSetCredentialsSample(
- clientType, settingsType, service);
+ ServiceClientHeaderSampleComposer.composeSetCredentialsSample(clientType, settingsType);
Sample endpointSampleCode =
- ServiceClientHeaderSampleComposer.composeSetEndpointSample(
- clientType, settingsType, service);
+ ServiceClientHeaderSampleComposer.composeSetEndpointSample(clientType, settingsType);
Sample transportSampleCode =
ServiceClientHeaderSampleComposer.composeTransportSample(
- clientType, settingsType, "newHttpJsonBuilder", service);
+ clientType, settingsType, "defaultHttpJsonTransportProviderBuilder");
samples.addAll(
Arrays.asList(
classMethodSampleCode, credentialsSampleCode, endpointSampleCode, transportSampleCode));
diff --git a/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java
index 67e003f50f..fa4d71498c 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java
@@ -59,7 +59,6 @@
import com.google.api.generator.gapic.model.OperationResponse;
import com.google.api.generator.gapic.model.Service;
import com.google.api.generator.gapic.utils.JavaStyle;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableList;
import com.google.protobuf.TypeRegistry;
@@ -75,7 +74,6 @@
import java.util.stream.Collectors;
public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceStubClassComposer {
-
private static final HttpJsonServiceStubClassComposer INSTANCE =
new HttpJsonServiceStubClassComposer();
@@ -942,11 +940,9 @@ private Expr createFieldsExtractorClassInstance(
for (int i = 0; i < descendantFields.length; i++) {
String currFieldName = descendantFields[i];
String bindingFieldMethodName =
- getBindingFieldMethodName(
- httpBindingFieldName,
- descendantFields.length,
- i,
- JavaStyle.toUpperCamelCase(currFieldName));
+ (i < descendantFields.length - 1 || !httpBindingFieldName.isRepeated())
+ ? String.format("get%s", JavaStyle.toUpperCamelCase(currFieldName))
+ : String.format("get%sList", JavaStyle.toUpperCamelCase(currFieldName));
requestFieldGetterExprBuilder =
requestFieldGetterExprBuilder.setMethodName(bindingFieldMethodName);
@@ -1001,7 +997,6 @@ private Expr createFieldsExtractorClassInstance(
}
}
- // Add a fixed query param for numeric enum, see b/232457244 for details
if (restNumericEnumsEnabled && serializerMethodName.equals("putQueryParam")) {
ImmutableList.Builder paramsPutArgs = ImmutableList.builder();
@@ -1028,20 +1023,6 @@ private Expr createFieldsExtractorClassInstance(
.build();
}
- @VisibleForTesting
- String getBindingFieldMethodName(
- HttpBinding httpBindingField, int descendantFieldsLengths, int index, String currFieldName) {
- if (index == descendantFieldsLengths - 1) {
- if (httpBindingField.isRepeated()) {
- return String.format("get%sList", currFieldName);
- }
- if (httpBindingField.isEnum()) {
- return String.format("get%sValue", currFieldName);
- }
- }
- return String.format("get%s", currFieldName);
- }
-
private List getHttpMethodTypeExpr(Method protoMethod) {
return Collections.singletonList(
ValueExpr.withValue(
diff --git a/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientCallableMethodSampleComposer.java b/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientCallableMethodSampleComposer.java
index 342fab52ad..ae1ad2bbb7 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientCallableMethodSampleComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientCallableMethodSampleComposer.java
@@ -48,7 +48,6 @@
import com.google.api.generator.gapic.model.RegionTag;
import com.google.api.generator.gapic.model.ResourceName;
import com.google.api.generator.gapic.model.Sample;
-import com.google.api.generator.gapic.model.Service;
import com.google.api.generator.gapic.utils.JavaStyle;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
@@ -61,7 +60,7 @@
public class ServiceClientCallableMethodSampleComposer {
private static Sample composeUnaryOrLroCallableSample(
- Method method, VariableExpr clientVarExpr, VariableExpr requestVarExpr, Service service) {
+ Method method, VariableExpr clientVarExpr, VariableExpr requestVarExpr) {
List bodyStatements = new ArrayList<>();
// Create api future variable expression, and assign it with a value by invoking callable
// method.
@@ -125,7 +124,7 @@ private static Sample composeUnaryOrLroCallableSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setIsAsynchronous(true)
.build();
@@ -140,8 +139,7 @@ private static Sample composePagedCallableSample(
Method method,
VariableExpr clientVarExpr,
VariableExpr requestVarExpr,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
// Find the repeated field.
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapPaginatedRepeatedField();
@@ -280,7 +278,7 @@ private static Sample composePagedCallableSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setOverloadDisambiguation("Paged")
.setIsAsynchronous(true)
@@ -296,8 +294,7 @@ public static Sample composeLroCallableMethod(
Method method,
TypeNode clientType,
Map resourceNames,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -397,7 +394,7 @@ public static Sample composeLroCallableMethod(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientType.reference().name())
.setRpcName(method.name())
.setIsAsynchronous(true)
.setOverloadDisambiguation("LRO")
@@ -418,8 +415,7 @@ public static Sample composePagedCallableMethod(
Method method,
TypeNode clientType,
Map resourceNames,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -535,7 +531,7 @@ public static Sample composePagedCallableMethod(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientType.reference().name())
.setRpcName(method.name())
.setIsAsynchronous(true)
.build();
@@ -547,8 +543,7 @@ public static Sample composeRegularCallableMethod(
Method method,
TypeNode clientType,
Map resourceNames,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -580,13 +575,13 @@ public static Sample composeRegularCallableMethod(
RegionTag regionTag;
if (method.isPaged()) {
Sample pagedCallable =
- composePagedCallableSample(method, clientVarExpr, requestVarExpr, messageTypes, service);
+ composePagedCallableSample(method, clientVarExpr, requestVarExpr, messageTypes);
bodyStatements.addAll(pagedCallable.body());
regionTag = pagedCallable.regionTag();
} else {
// e.g. echoClient.echoCallable().futureCall(request)
Sample unaryOrLroCallable =
- composeUnaryOrLroCallableSample(method, clientVarExpr, requestVarExpr, service);
+ composeUnaryOrLroCallableSample(method, clientVarExpr, requestVarExpr);
bodyStatements.addAll(unaryOrLroCallable.body());
regionTag = unaryOrLroCallable.regionTag();
}
@@ -606,8 +601,7 @@ public static Sample composeStreamCallableMethod(
Method method,
TypeNode clientType,
Map resourceNames,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -636,19 +630,16 @@ public static Sample composeStreamCallableMethod(
List bodyStatements = new ArrayList<>();
if (method.stream().equals(Method.Stream.SERVER)) {
// e.g. ServerStream stream = echoClient.expandCallable().call(request);
- Sample streamServer =
- composeStreamServerSample(method, clientVarExpr, requestAssignmentExpr, service);
+ Sample streamServer = composeStreamServerSample(method, clientVarExpr, requestAssignmentExpr);
bodyStatements.addAll(streamServer.body());
regionTag = streamServer.regionTag();
} else if (method.stream().equals(Method.Stream.BIDI)) {
// e.g. echoClient.collect().clientStreamingCall(responseObserver);
- Sample streamBidi =
- composeStreamBidiSample(method, clientVarExpr, requestAssignmentExpr, service);
+ Sample streamBidi = composeStreamBidiSample(method, clientVarExpr, requestAssignmentExpr);
bodyStatements.addAll(streamBidi.body());
regionTag = streamBidi.regionTag();
} else if (method.stream().equals(Method.Stream.CLIENT)) {
- Sample streamClient =
- composeStreamClientSample(method, clientVarExpr, requestAssignmentExpr, service);
+ Sample streamClient = composeStreamClientSample(method, clientVarExpr, requestAssignmentExpr);
bodyStatements.addAll(streamClient.body());
regionTag = streamClient.regionTag();
}
@@ -665,10 +656,7 @@ public static Sample composeStreamCallableMethod(
}
private static Sample composeStreamServerSample(
- Method method,
- VariableExpr clientVarExpr,
- AssignmentExpr requestAssignmentExpr,
- Service service) {
+ Method method, VariableExpr clientVarExpr, AssignmentExpr requestAssignmentExpr) {
List bodyExprs = new ArrayList<>();
bodyExprs.add(requestAssignmentExpr);
@@ -729,7 +717,7 @@ private static Sample composeStreamServerSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setIsAsynchronous(true)
.build();
@@ -737,10 +725,7 @@ private static Sample composeStreamServerSample(
}
private static Sample composeStreamBidiSample(
- Method method,
- VariableExpr clientVarExpr,
- AssignmentExpr requestAssignmentExpr,
- Service service) {
+ Method method, VariableExpr clientVarExpr, AssignmentExpr requestAssignmentExpr) {
List bodyExprs = new ArrayList<>();
// Create bidi stream variable expression and assign it with invoking client's bidi stream
@@ -811,7 +796,7 @@ private static Sample composeStreamBidiSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setIsAsynchronous(true)
.build();
@@ -819,10 +804,7 @@ private static Sample composeStreamBidiSample(
}
private static Sample composeStreamClientSample(
- Method method,
- VariableExpr clientVarExpr,
- AssignmentExpr requestAssignmentExpr,
- Service service) {
+ Method method, VariableExpr clientVarExpr, AssignmentExpr requestAssignmentExpr) {
List bodyExprs = new ArrayList<>();
// Create responseObserver variable expression.
@@ -946,7 +928,7 @@ private static Sample composeStreamClientSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setIsAsynchronous(true)
.build();
diff --git a/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java b/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java
index b979f87744..6c3389b865 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java
@@ -53,7 +53,7 @@ public static Sample composeClassHeaderSample(
Map resourceNames,
Map messageTypes) {
if (service.methods().isEmpty()) {
- return ServiceClientMethodSampleComposer.composeEmptyServiceSample(clientType, service);
+ return ServiceClientMethodSampleComposer.composeEmptyServiceSample(clientType);
}
// Use the first pure unary RPC method's sample code as showcase, if no such method exists, use
@@ -67,18 +67,13 @@ public static Sample composeClassHeaderSample(
if (method.stream() == Method.Stream.NONE) {
if (method.methodSignatures().isEmpty()) {
return ServiceClientMethodSampleComposer.composeCanonicalSample(
- method, clientType, resourceNames, messageTypes, service);
+ method, clientType, resourceNames, messageTypes);
}
return composeShowcaseMethodSample(
- method,
- clientType,
- method.methodSignatures().get(0),
- resourceNames,
- messageTypes,
- service);
+ method, clientType, method.methodSignatures().get(0), resourceNames, messageTypes);
}
return ServiceClientCallableMethodSampleComposer.composeStreamCallableMethod(
- method, clientType, resourceNames, messageTypes, service);
+ method, clientType, resourceNames, messageTypes);
}
public static Sample composeShowcaseMethodSample(
@@ -86,8 +81,7 @@ public static Sample composeShowcaseMethodSample(
TypeNode clientType,
List arguments,
Map resourceNames,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -111,20 +105,20 @@ public static Sample composeShowcaseMethodSample(
if (method.isPaged()) {
Sample unaryPagedRpc =
ServiceClientMethodSampleComposer.composePagedSample(
- method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, messageTypes, service);
+ method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, messageTypes);
bodyStatements.addAll(unaryPagedRpc.body());
regionTag = unaryPagedRpc.regionTag();
} else if (method.hasLro()) {
Sample unaryLroRpc =
ServiceClientMethodSampleComposer.composeLroSample(
- method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, service);
+ method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs);
bodyStatements.addAll(unaryLroRpc.body());
regionTag = unaryLroRpc.regionTag();
} else {
// e.g. echoClient.echo(), echoClient.echo(...)
Sample unaryRpc =
ServiceClientMethodSampleComposer.composeSample(
- method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, service);
+ method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs);
bodyStatements.addAll(unaryRpc.body());
regionTag = unaryRpc.regionTag();
}
@@ -140,8 +134,7 @@ public static Sample composeShowcaseMethodSample(
return Sample.builder().setBody(body).setRegionTag(regionTag).build();
}
- public static Sample composeSetCredentialsSample(
- TypeNode clientType, TypeNode settingsType, Service service) {
+ public static Sample composeSetCredentialsSample(TypeNode clientType, TypeNode settingsType) {
// Initialize clientSettings with builder() method.
// e.g. EchoSettings echoSettings =
// EchoSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create("myCredentials")).build();
@@ -213,16 +206,14 @@ public static Sample composeSetCredentialsSample(
ExprStatement.withExpr(initSettingsVarExpr), ExprStatement.withExpr(initClientVarExpr));
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientName)
.setRpcName(rpcName)
.setOverloadDisambiguation("setCredentialsProvider")
.build();
- Sample sample = Sample.builder().setBody(sampleBody).setRegionTag(regionTag).build();
- return sample.withRegionTag(sample.regionTag());
+ return Sample.builder().setBody(sampleBody).setRegionTag(regionTag).build();
}
- public static Sample composeSetEndpointSample(
- TypeNode clientType, TypeNode settingsType, Service service) {
+ public static Sample composeSetEndpointSample(TypeNode clientType, TypeNode settingsType) {
// Initialize client settings with builder() method.
// e.g. EchoSettings echoSettings = EchoSettings.newBuilder().setEndpoint("myEndpoint").build();
String settingsName = JavaStyle.toLowerCamelCase(settingsType.reference().name());
@@ -282,7 +273,7 @@ public static Sample composeSetEndpointSample(
.build();
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientName)
.setRpcName(rpcName)
.setOverloadDisambiguation("setEndpoint")
.build();
@@ -293,7 +284,7 @@ public static Sample composeSetEndpointSample(
}
public static Sample composeTransportSample(
- TypeNode clientType, TypeNode settingsType, String transportBuilderMethod, Service service) {
+ TypeNode clientType, TypeNode settingsType, String transportProviderMethod) {
String settingsName = JavaStyle.toLowerCamelCase(settingsType.reference().name());
String clientName = JavaStyle.toLowerCamelCase(clientType.reference().name());
VariableExpr settingsVarExpr =
@@ -302,11 +293,26 @@ public static Sample composeTransportSample(
MethodInvocationExpr newBuilderMethodExpr =
MethodInvocationExpr.builder()
.setStaticReferenceType(settingsType)
- .setMethodName(transportBuilderMethod)
+ .setMethodName("newBuilder")
.build();
- MethodInvocationExpr buildMethodExpr =
+ MethodInvocationExpr transportChannelProviderArg =
+ MethodInvocationExpr.builder()
+ .setExprReferenceExpr(
+ MethodInvocationExpr.builder()
+ .setStaticReferenceType(settingsType)
+ .setMethodName(transportProviderMethod)
+ .build())
+ .setMethodName("build")
+ .build();
+ MethodInvocationExpr credentialsMethodExpr =
MethodInvocationExpr.builder()
.setExprReferenceExpr(newBuilderMethodExpr)
+ .setArguments(transportChannelProviderArg)
+ .setMethodName("setTransportChannelProvider")
+ .build();
+ MethodInvocationExpr buildMethodExpr =
+ MethodInvocationExpr.builder()
+ .setExprReferenceExpr(credentialsMethodExpr)
.setReturnType(settingsType)
.setMethodName("build")
.build();
@@ -340,7 +346,7 @@ public static Sample composeTransportSample(
ExprStatement.withExpr(initSettingsVarExpr), ExprStatement.withExpr(initClientVarExpr));
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientName)
.setRpcName(rpcName)
.setOverloadDisambiguation("setCredentialsProvider")
.build();
diff --git a/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientMethodSampleComposer.java b/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientMethodSampleComposer.java
index 311ebab5ac..f93383c729 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientMethodSampleComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientMethodSampleComposer.java
@@ -33,7 +33,6 @@
import com.google.api.generator.gapic.model.RegionTag;
import com.google.api.generator.gapic.model.ResourceName;
import com.google.api.generator.gapic.model.Sample;
-import com.google.api.generator.gapic.model.Service;
import com.google.api.generator.gapic.utils.JavaStyle;
import com.google.common.base.Preconditions;
import java.util.ArrayList;
@@ -46,7 +45,7 @@ public class ServiceClientMethodSampleComposer {
// Creates an example for an empty service (no API methods), which is a corner case but can
// happen. Generated example will only show how to instantiate the client class but will not call
// any API methods (because there are no API methods).
- public static Sample composeEmptyServiceSample(TypeNode clientType, Service service) {
+ public static Sample composeEmptyServiceSample(TypeNode clientType) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -57,7 +56,10 @@ public static Sample composeEmptyServiceSample(TypeNode clientType, Service serv
List bodyStatements = new ArrayList<>();
RegionTag regionTag =
- RegionTag.builder().setServiceName(service.name()).setRpcName("emtpy").build();
+ RegionTag.builder()
+ .setServiceName(clientVarExpr.variable().identifier().name())
+ .setRpcName("emtpy")
+ .build();
List body =
Arrays.asList(
@@ -74,8 +76,7 @@ public static Sample composeCanonicalSample(
Method method,
TypeNode clientType,
Map resourceNames,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
VariableExpr clientVarExpr =
VariableExpr.withVariable(
Variable.builder()
@@ -110,19 +111,16 @@ public static Sample composeCanonicalSample(
if (method.isPaged()) {
// e.g. echoClient.pagedExpand(request).iterateAll()
Sample unaryPagedRpc =
- composePagedSample(
- method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, messageTypes, service);
+ composePagedSample(method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, messageTypes);
bodyStatements.addAll(unaryPagedRpc.body());
regionTag = unaryPagedRpc.regionTag();
} else if (method.hasLro()) {
- Sample unaryLroRpc =
- composeLroSample(method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, service);
+ Sample unaryLroRpc = composeLroSample(method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs);
bodyStatements.addAll(unaryLroRpc.body());
regionTag = unaryLroRpc.regionTag();
} else {
// e.g. echoClient.echo(request)
- Sample unaryRpc =
- composeSample(method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs, service);
+ Sample unaryRpc = composeSample(method, clientVarExpr, rpcMethodArgVarExprs, bodyExprs);
bodyStatements.addAll(unaryRpc.body());
regionTag = unaryRpc.regionTag();
}
@@ -142,8 +140,7 @@ static Sample composeSample(
Method method,
VariableExpr clientVarExpr,
List rpcMethodArgVarExprs,
- List bodyExprs,
- Service service) {
+ List bodyExprs) {
// Invoke current method based on return type.
// e.g. if return void, echoClient.echo(..); or,
@@ -172,7 +169,7 @@ static Sample composeSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setOverloadDisambiguation(
SampleComposerUtil.createOverloadDisambiguation(rpcMethodArgVarExprs))
@@ -189,8 +186,7 @@ static Sample composePagedSample(
VariableExpr clientVarExpr,
List rpcMethodArgVarExprs,
List bodyExprs,
- Map messageTypes,
- Service service) {
+ Map messageTypes) {
// Find the repeated field.
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
@@ -247,7 +243,7 @@ static Sample composePagedSample(
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setOverloadDisambiguation(
SampleComposerUtil.createOverloadDisambiguation(rpcMethodArgVarExprs))
@@ -259,8 +255,7 @@ static Sample composeLroSample(
Method method,
VariableExpr clientVarExpr,
List rpcMethodArgVarExprs,
- List bodyExprs,
- Service service) {
+ List bodyExprs) {
// Assign response variable with invoking client's LRO method.
// e.g. if return void, echoClient.waitAsync(ttl).get(); or,
// e.g. if return other type, WaitResponse response = echoClient.waitAsync(ttl).get();
@@ -298,7 +293,7 @@ static Sample composeLroSample(
}
RegionTag regionTag =
RegionTag.builder()
- .setServiceName(service.name())
+ .setServiceName(clientVarExpr.variable().identifier().name())
.setRpcName(method.name())
.setOverloadDisambiguation(
SampleComposerUtil.createOverloadDisambiguation(rpcMethodArgVarExprs))
diff --git a/src/main/java/com/google/api/generator/gapic/composer/samplecode/SettingsSampleComposer.java b/src/main/java/com/google/api/generator/gapic/composer/samplecode/SettingsSampleComposer.java
index 372399ee56..9027f50000 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/samplecode/SettingsSampleComposer.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/samplecode/SettingsSampleComposer.java
@@ -145,7 +145,6 @@ public static Optional composeSettingsSample(
.map(e -> ExprStatement.withExpr(e))
.collect(Collectors.toList());
- // TODO: alicejli edit RegionTag to match other languages
RegionTag regionTag =
RegionTag.builder()
.setServiceName(classType.reference().name())
diff --git a/src/main/java/com/google/api/generator/gapic/composer/utils/ClassNames.java b/src/main/java/com/google/api/generator/gapic/composer/utils/ClassNames.java
index 1228e5d166..c0b717fc0a 100644
--- a/src/main/java/com/google/api/generator/gapic/composer/utils/ClassNames.java
+++ b/src/main/java/com/google/api/generator/gapic/composer/utils/ClassNames.java
@@ -24,8 +24,7 @@ public class ClassNames {
// Using constants since many of these class names are used often.
private static final String MOCK_SERVICE_CLASS_NAME_PATTERN = "Mock%s";
private static final String MOCK_SERVICE_IMPL_CLASS_NAME_PATTERN = "Mock%sImpl";
- private static final String CLIENT_SUFFIX = "Client";
- private static final String SERVICE_CLIENT_CLASS_NAME_PATTERN = "%s" + CLIENT_SUFFIX;
+ private static final String SERVICE_CLIENT_CLASS_NAME_PATTERN = "%sClient";
private static final String SERVICE_CLIENT_TEST_CLASS_NAME_PATTERN = "%sClientTest";
private static final String SERVICE_CLIENT_TRANSPORT_TEST_CLASS_NAME_PATTERN = "%sClient%sTest";
private static final String SERVICE_SETTINGS_CLASS_NAME_PATTERN = "%sSettings";
diff --git a/src/main/java/com/google/api/generator/gapic/model/GapicClass.java b/src/main/java/com/google/api/generator/gapic/model/GapicClass.java
index f05e308290..eee6349fa8 100644
--- a/src/main/java/com/google/api/generator/gapic/model/GapicClass.java
+++ b/src/main/java/com/google/api/generator/gapic/model/GapicClass.java
@@ -35,12 +35,6 @@ public enum Kind {
public abstract List samples();
- // Only used for generating the region tag for samples; therefore only used in select Composers.
- public abstract String apiShortName();
-
- // Only used for generating the region tag for samples; therefore only used in select Composers.
- public abstract String apiVersion();
-
public static GapicClass create(Kind kind, ClassDefinition classDefinition) {
return builder().setKind(kind).setClassDefinition(classDefinition).build();
}
@@ -51,10 +45,7 @@ public static GapicClass create(
}
static Builder builder() {
- return new AutoValue_GapicClass.Builder()
- .setSamples(Collections.emptyList())
- .setApiShortName("")
- .setApiVersion("");
+ return new AutoValue_GapicClass.Builder().setSamples(Collections.emptyList());
}
abstract Builder toBuilder();
@@ -63,14 +54,6 @@ public final GapicClass withSamples(List samples) {
return toBuilder().setSamples(samples).build();
}
- public final GapicClass withApiShortName(String apiShortName) {
- return toBuilder().setApiShortName(apiShortName).build();
- }
-
- public final GapicClass withApiVersion(String apiVersion) {
- return toBuilder().setApiVersion(apiVersion).build();
- }
-
@AutoValue.Builder
abstract static class Builder {
abstract Builder setKind(Kind kind);
@@ -79,10 +62,6 @@ abstract static class Builder {
abstract Builder setSamples(List samples);
- abstract Builder setApiShortName(String apiShortName);
-
- abstract Builder setApiVersion(String apiVersion);
-
abstract GapicClass build();
}
}
diff --git a/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java b/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java
index 696683cefe..e6ecea5c94 100644
--- a/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java
+++ b/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java
@@ -36,54 +36,21 @@ public enum HttpVerb {
@AutoValue
public abstract static class HttpBinding implements Comparable {
-
- // The fully qualified name of the field. e.g. request.complex_object.another_object.name
public abstract String name();
abstract String lowerCamelName();
- // An object that contains all info of the leaf level field
- @Nullable
- public abstract Field field();
+ public abstract boolean isOptional();
- public boolean isOptional() {
- return field() != null && field().isProto3Optional();
- }
-
- public boolean isRepeated() {
- return field() != null && field().isRepeated();
- }
-
- public boolean isEnum() {
- return field() != null && field().isEnum();
- }
+ public abstract boolean isRepeated();
@Nullable
public abstract String valuePattern();
- public static HttpBindings.HttpBinding.Builder builder() {
- return new AutoValue_HttpBindings_HttpBinding.Builder();
- }
-
- @AutoValue.Builder
- public abstract static class Builder {
-
- public abstract HttpBindings.HttpBinding.Builder setName(String name);
-
- public abstract HttpBindings.HttpBinding.Builder setField(Field field);
-
- abstract HttpBindings.HttpBinding.Builder setLowerCamelName(String lowerCamelName);
-
- public abstract HttpBindings.HttpBinding.Builder setValuePattern(String valuePattern);
-
- abstract String name();
-
- abstract HttpBindings.HttpBinding autoBuild();
-
- public HttpBindings.HttpBinding build() {
- setLowerCamelName(JavaStyle.toLowerCamelCase(name()));
- return autoBuild();
- }
+ public static HttpBinding create(
+ String name, boolean isOptional, boolean isRepeated, String valuePattern) {
+ return new AutoValue_HttpBindings_HttpBinding(
+ name, JavaStyle.toLowerCamelCase(name), isOptional, isRepeated, valuePattern);
}
// Do not forget to keep it in sync with equals() implementation.
diff --git a/src/main/java/com/google/api/generator/gapic/model/RegionTag.java b/src/main/java/com/google/api/generator/gapic/model/RegionTag.java
index e4643de654..d98212ef6b 100644
--- a/src/main/java/com/google/api/generator/gapic/model/RegionTag.java
+++ b/src/main/java/com/google/api/generator/gapic/model/RegionTag.java
@@ -20,7 +20,6 @@
import com.google.auto.value.AutoValue;
import com.google.common.base.Preconditions;
-// TODO: alicejli edit RegionTag to match other languages
/**
* This model represents a code sample region tag. Matching region start and end region tag comments
* are used to determine the boundaries of code snippets to be used in documentation.
@@ -138,8 +137,7 @@ public String generate() {
if (!apiVersion().isEmpty()) {
rt = rt + apiVersion() + "_";
}
- rt = rt.toLowerCase() + "generated_" + serviceName() + "_" + rpcName();
- // TODO: @alicejli overloadDisambiguation will need to be updated to match other languages
+ rt = rt + "generated_" + serviceName() + "_" + rpcName();
if (!overloadDisambiguation().isEmpty()) {
rt = rt + "_" + overloadDisambiguation();
}
@@ -149,7 +147,7 @@ public String generate() {
rt = rt + "_sync";
}
- return rt;
+ return rt.toLowerCase();
}
public static CommentStatement generateTag(
diff --git a/src/main/java/com/google/api/generator/gapic/model/Service.java b/src/main/java/com/google/api/generator/gapic/model/Service.java
index 2e3a6be7df..34d3f97b25 100644
--- a/src/main/java/com/google/api/generator/gapic/model/Service.java
+++ b/src/main/java/com/google/api/generator/gapic/model/Service.java
@@ -16,10 +16,8 @@
import com.google.api.generator.engine.ast.TypeNode;
import com.google.auto.value.AutoValue;
-import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
import java.util.List;
import javax.annotation.Nullable;
@@ -52,20 +50,6 @@ public boolean hasDescription() {
return !Strings.isNullOrEmpty(description());
}
- public String apiShortName() {
- if (!Strings.isNullOrEmpty(defaultHost())) {
- return parseApiShortName(defaultHost());
- }
- return "";
- }
-
- public String apiVersion() {
- if (!Strings.isNullOrEmpty(protoPakkage())) {
- return parseApiVersion(protoPakkage());
- }
- return "";
- }
-
public Method operationPollingMethod() {
for (Method method : methods()) {
if (method.isOperationPollingMethod()) {
@@ -143,35 +127,4 @@ public abstract static class Builder {
public abstract Service build();
}
-
- private static String parseApiVersion(String protoPackage) {
- // parse protoPackage for apiVersion
- String[] pakkage = protoPackage.split("\\.");
- String apiVersion;
- // e.g. v1, v2, v1beta1
- if (pakkage[pakkage.length - 1].matches("v[0-9].*")) {
- apiVersion = pakkage[pakkage.length - 1];
- } else {
- apiVersion = "";
- }
- return apiVersion;
- }
-
- // Parse defaultHost for apiShortName for the RegionTag. Need to account for regional default
- // endpoints like
- // "us-east1-pubsub.googleapis.com".
- private static String parseApiShortName(String defaultHost) {
- // If the defaultHost is of the format "**.googleapis.com", take the name before the first
- // period.
- String apiShortName = Iterables.getFirst(Splitter.on(".").split(defaultHost), defaultHost);
- // If the defaultHost is of the format "**-**-**.googleapis.com", take the section before the
- // first period and after the last dash to follow CSharp's implementation here:
- // https://github.com/googleapis/gapic-generator-csharp/blob/main/Google.Api.Generator/Generation/ServiceDetails.cs#L70
- apiShortName = Iterables.getLast(Splitter.on("-").split(apiShortName), defaultHost);
- // `iam-meta-api` service is an exceptional case and is handled as a one-off
- if (defaultHost.contains("iam-meta-api")) {
- apiShortName = "iam";
- }
- return apiShortName;
- }
}
diff --git a/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java b/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java
index 87bcd76abb..bead11e082 100644
--- a/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java
+++ b/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java
@@ -82,11 +82,6 @@ private static HttpBindings parseHttpRuleHelper(
Map patternSampleValues = constructPathValuePatterns(pattern);
// TODO: support nested message fields bindings
- // Nested message fields bindings for query params are already supported as part of
- // https://github.com/googleapis/gax-java/pull/1784,
- // however we need to excludes fields that are already configured for path params and body, see
- // https://github.com/googleapis/googleapis/blob/532289228eaebe77c42438f74b8a5afa85fee1b6/google/api/http.proto#L208 for details,
- // the current logic does not exclude fields that are more than one level deep.
String body = httpRule.getBody();
Set bodyParamNames;
Set queryParamNames;
@@ -138,9 +133,8 @@ private static Set validateAndConstructHttpBindings(
String patternSampleValue =
patternSampleValues != null ? patternSampleValues.get(paramName) : null;
String[] subFields = paramName.split("\\.");
- HttpBinding.Builder httpBindingBuilder = HttpBinding.builder().setName(paramName);
if (inputMessage == null) {
- httpBindings.add(httpBindingBuilder.setValuePattern(patternSampleValue).build());
+ httpBindings.add(HttpBinding.create(paramName, false, false, patternSampleValue));
continue;
}
Message nestedMessage = inputMessage;
@@ -162,7 +156,8 @@ private static Set validateAndConstructHttpBindings(
}
Field field = nestedMessage.fieldMap().get(subFieldName);
httpBindings.add(
- httpBindingBuilder.setValuePattern(patternSampleValue).setField(field).build());
+ HttpBinding.create(
+ paramName, field.isProto3Optional(), field.isRepeated(), patternSampleValue));
}
}
}
diff --git a/src/test/java/com/google/api/generator/engine/writer/ImportWriterVisitorTest.java b/src/test/java/com/google/api/generator/engine/writer/ImportWriterVisitorTest.java
index bd8d62afb7..07be47a996 100644
--- a/src/test/java/com/google/api/generator/engine/writer/ImportWriterVisitorTest.java
+++ b/src/test/java/com/google/api/generator/engine/writer/ImportWriterVisitorTest.java
@@ -363,32 +363,6 @@ public void writeVariableExprImports_nestedReference() {
writerVisitor.write());
}
- @Test
- public void writeVariableExprImports_withAnnotations() {
- Variable variable =
- Variable.builder()
- .setName("expr")
- .setType(TypeNode.withReference(ConcreteReference.withClazz(Expr.class)))
- .build();
-
- VariableExpr variableExpr =
- VariableExpr.builder()
- .setVariable(variable)
- .setIsDecl(true)
- .setAnnotations(
- Arrays.asList(
- AnnotationNode.withType(
- TypeNode.withReference(ConcreteReference.withClazz(Generated.class)))))
- .build();
-
- variableExpr.accept(writerVisitor);
- assertEquals(
- LineFormatter.lines(
- "import com.google.api.generator.engine.ast.Expr;\n",
- "import javax.annotation.Generated;\n\n"),
- writerVisitor.write());
- }
-
@Test
public void writeAnonymousClassExprImports() {
// [Constructing] Function, MethodDefinition>
diff --git a/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java
index d99325fbe8..4bbc779dcf 100644
--- a/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java
+++ b/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java
@@ -15,7 +15,6 @@
package com.google.api.generator.gapic.composer;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import com.google.api.generator.engine.ast.ClassDefinition;
import com.google.api.generator.engine.ast.ScopeNode;
@@ -26,11 +25,11 @@
import com.google.api.generator.gapic.model.GapicClass;
import com.google.api.generator.gapic.model.GapicClass.Kind;
import com.google.api.generator.gapic.model.GapicContext;
-import com.google.api.generator.gapic.model.RegionTag;
import com.google.api.generator.gapic.model.Sample;
import com.google.api.generator.gapic.model.Service;
import com.google.api.generator.test.framework.Assert;
import com.google.api.generator.test.framework.Utils;
+import com.google.common.collect.ImmutableList;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
@@ -42,16 +41,9 @@ public class ComposerTest {
private final Service echoProtoService = context.services().get(0);
private final List clazzes =
Arrays.asList(
- GrpcServiceCallableFactoryClassComposer.instance()
- .generate(context, echoProtoService)
- .withApiShortName(echoProtoService.apiShortName())
- .withApiVersion(echoProtoService.apiVersion()));
- private final Sample sample =
- Sample.builder()
- .setRegionTag(
- RegionTag.builder().setServiceName("serviceName").setRpcName("rpcName").build())
- .build();
- private List ListofSamples = Arrays.asList(new Sample[] {sample});
+ GrpcServiceCallableFactoryClassComposer.instance().generate(context, echoProtoService));
+ private final String protoPackage = context.gapicMetadata().getProtoPackage();
+ private final List samples = clazzes.get(0).samples();
@Test
public void gapicClass_addApacheLicense() {
@@ -73,93 +65,59 @@ public void gapicClass_addApacheLicense() {
@Test
public void composeSamples_showcase() {
- GapicClass testClass = clazzes.get(0).withSamples(ListofSamples);
- List testClassList = Arrays.asList(new GapicClass[] {testClass});
+ for (Sample sample : samples) {
+ assertEquals(
+ "File header will be empty before composing samples",
+ sample.fileHeader(),
+ ImmutableList.of());
+ assertEquals(
+ "ApiShortName will be empty before composing samples",
+ sample.regionTag().apiShortName(),
+ "");
+ assertEquals(
+ "ApiVersion will be empty before composing samples", sample.regionTag().apiVersion(), "");
+ }
List composedSamples =
- Composer.prepareExecutableSamples(testClassList).get(0).samples();
+ Composer.prepareExecutableSamples(clazzes, protoPackage).get(0).samples();
- assertFalse(composedSamples.isEmpty());
for (Sample sample : composedSamples) {
assertEquals(
- "File header should be APACHE",
- Arrays.asList(CommentComposer.APACHE_LICENSE_COMMENT),
- sample.fileHeader());
+ "File header should be apache",
+ sample.fileHeader(),
+ Arrays.asList(CommentComposer.APACHE_LICENSE_COMMENT));
assertEquals(
- "ApiShortName should be Localhost7469",
- "Localhost7469",
- sample.regionTag().apiShortName());
- assertEquals("ApiVersion should be V1Beta1", "V1Beta1", sample.regionTag().apiVersion());
+ "ApiShortName should be showcase", sample.regionTag().apiShortName(), "showcase");
+ assertEquals("ApiVersion should be v1beta1", sample.regionTag().apiVersion(), "v1beta1");
}
}
- @Test
- public void gapicClass_addRegionTagAndHeaderToSample() {
- Sample testSample;
- testSample = Composer.addRegionTagAndHeaderToSample(sample, "showcase", "v1");
- assertEquals("Showcase", testSample.regionTag().apiShortName());
- assertEquals("V1", testSample.regionTag().apiVersion());
- assertEquals(Arrays.asList(CommentComposer.APACHE_LICENSE_COMMENT), testSample.fileHeader());
- }
-
@Test
public void composeSamples_parseProtoPackage() {
-
- String defaultHost = "accessapproval.googleapis.com:443";
String protoPack = "google.cloud.accessapproval.v1";
- Service testService =
- echoProtoService.toBuilder().setDefaultHost(defaultHost).setProtoPakkage(protoPack).build();
- List testClassList = getTestClassListFromService(testService);
List composedSamples =
- Composer.prepareExecutableSamples(testClassList).get(0).samples();
-
- // If samples is empty, the test automatically passes without checking.
- assertFalse(composedSamples.isEmpty());
+ Composer.prepareExecutableSamples(clazzes, protoPack).get(0).samples();
for (Sample sample : composedSamples) {
assertEquals(
- "ApiShortName should be Accessapproval",
+ "ApiShortName should be accessapproval",
sample.regionTag().apiShortName(),
- "Accessapproval");
- assertEquals("ApiVersion should be V1", sample.regionTag().apiVersion(), "V1");
+ "accessapproval");
+ assertEquals("ApiVersion should be v1", sample.regionTag().apiVersion(), "v1");
}
protoPack = "google.cloud.vision.v1p1beta1";
- defaultHost = "vision.googleapis.com";
- testService =
- testService.toBuilder().setDefaultHost(defaultHost).setProtoPakkage(protoPack).build();
- testClassList = getTestClassListFromService(testService);
- composedSamples = Composer.prepareExecutableSamples(testClassList).get(0).samples();
- // If samples is empty, the test automatically passes without checking.
- assertFalse(composedSamples.isEmpty());
-
+ composedSamples = Composer.prepareExecutableSamples(clazzes, protoPack).get(0).samples();
for (Sample sample : composedSamples) {
- assertEquals("ApiShortName should be Vision", sample.regionTag().apiShortName(), "Vision");
- assertEquals("ApiVersion should be V1P1Beta1", sample.regionTag().apiVersion(), "V1P1Beta1");
+ assertEquals("ApiShortName should be vision", sample.regionTag().apiShortName(), "vision");
+ assertEquals("ApiVersion should be v1p1beta1", sample.regionTag().apiVersion(), "v1p1beta1");
}
protoPack = "google.cloud.vision";
- testService =
- testService.toBuilder().setDefaultHost(defaultHost).setProtoPakkage(protoPack).build();
- testClassList = getTestClassListFromService(testService);
- composedSamples = Composer.prepareExecutableSamples(testClassList).get(0).samples();
- // If samples is empty, the test automatically passes without checking.
- assertFalse(composedSamples.isEmpty());
-
+ composedSamples = Composer.prepareExecutableSamples(clazzes, protoPack).get(0).samples();
for (Sample sample : composedSamples) {
- assertEquals("ApiShortName should be Vision", sample.regionTag().apiShortName(), "Vision");
+ assertEquals("ApiShortName should be vision", sample.regionTag().apiShortName(), "vision");
assertEquals("ApiVersion should be empty", sample.regionTag().apiVersion(), "");
}
}
-
- private List getTestClassListFromService(Service testService) {
- GapicClass testClass =
- GrpcServiceCallableFactoryClassComposer.instance()
- .generate(context, testService)
- .withSamples(ListofSamples)
- .withApiShortName(testService.apiShortName())
- .withApiVersion(testService.apiVersion());
- List testClassList = Arrays.asList(new GapicClass[] {testClass});
- return testClassList;
- }
}
diff --git a/src/test/java/com/google/api/generator/gapic/composer/grpc/ServiceClientClassComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/grpc/ServiceClientClassComposerTest.java
index c169c88eb3..fe00c3ca04 100644
--- a/src/test/java/com/google/api/generator/gapic/composer/grpc/ServiceClientClassComposerTest.java
+++ b/src/test/java/com/google/api/generator/gapic/composer/grpc/ServiceClientClassComposerTest.java
@@ -18,7 +18,8 @@
import com.google.api.generator.gapic.model.GapicContext;
import com.google.api.generator.gapic.model.Service;
import com.google.api.generator.test.framework.Assert;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -29,36 +30,11 @@ public class ServiceClientClassComposerTest {
public static Collection