8000 feat: Parser to consume the api-versioning value from proto (#2630) · googleapis/sdk-platform-java@5faf702 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5faf702

Browse files
zhumin8lqiu96
authored andcommitted
feat: Parser to consume the api-versioning value from proto (#2630)
This is part one to resolve b/330980553, this pr allows read and parse api versioning from proto to service model. Changes included in this pr: - rename current apiVersion to packageVersion. This packageVersion is parsed from package name and exposed in #1075. It was intended to be used in Spring codegen, but not actually used. It is used in generating sample region tags (see details [9ec3531](9ec3531)) - exposing apiVersion from Service model. - Parser.java to parse apiVersion from `ClientProto.apiVersion` to service.
1 parent e6b2b56 commit 5faf702

File tree

15 files changed

+421
-39
lines changed

15 files changed

+421
-39
lines changed

gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/Composer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ static List<GapicClass> prepareExecutableSamples(List<GapicClass> clazzes) {
207207
sample ->
208208
samples.add(
209209
addRegionTagAndHeaderToSample(
210-
sample, gapicClass.apiShortName(), gapicClass.apiVersion())));
210+
sample, gapicClass.apiShortName(), gapicClass.packageVersion())));
211211
clazzesWithSamples.add(gapicClass.withSamples(samples));
212212
});
213213
return clazzesWithSamples;

gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public GapicClass generate(GapicContext context, Service service) {
173173
updateGapicMetadata(context, service, className, grpcRpcsToJavaMethodNames);
174174
return GapicClass.create(kind, classDef, SampleComposerUtil.handleDuplicateSamples(samples))
175175
.withApiShortName(service.apiShortName())
176-
.withApiVersion(service.apiVersion());
176+
.withPackageVersion(service.packageVersion());
177177
}
178178

179179
private static List<AnnotationNode> createClassAnnotations(Service service, TypeStore typeStore) {

gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public GapicClass generate(GapicContext context, Service service) {
128128
.build();
129129
return GapicClass.create(kind, classDef, SampleComposerUtil.handleDuplicateSamples(samples))
130130
.withApiShortName(service.apiShortName())
131-
.withApiVersion(service.apiVersion());
131+
.withPackageVersion(service.packageVersion());
132132
}
133133

134134
private static List<CommentStatement> createClassHeaderComments(

gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public GapicClass generate(GapicContext context, Service service) {
204204
return GapicClass.create(
205205
GapicClass.Kind.STUB, classDef, SampleComposerUtil.handleDuplicateSamples(samples))
206206
.withApiShortName(service.apiShortName())
207-
.withApiVersion(service.apiVersion());
207+
.withPackageVersion(service.packageVersion());
208208
}
209209

210210
protected MethodDefinition createDefaultCredentialsProviderBuilderMethod() {

gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public enum Kind {
4343
public abstract String apiShortName();
4444

4545
// Only used for generating the region tag for samples; therefore only used in select Composers.
46-
public abstract String apiVersion();
46+
public abstract String packageVersion();
4747

4848
/**
4949
* Create a GapicClass with minimal information. This is intended to be used for GapicClasses that
@@ -76,7 +76,7 @@ static Builder builder() {
7676
return new AutoValue_GapicClass.Builder()
7777
.setSamples(Collections.emptyList())
7878
.setApiShortName("")
79-
.setApiVersion("");
79+
.setPackageVersion("");
8080
}
8181

8282
abstract Builder toBuilder();
@@ -89,8 +89,8 @@ public final GapicClass withApiShortName(String apiShortName) {
8989
return toBuilder().setApiShortName(apiShortName).build();
9090
}
9191

92-
public final GapicClass withApiVersion(String apiVersion) {
93-
return toBuilder().setApiVersion(apiVersion).build();
92+
public final GapicClass withPackageVersion(String packageVersion) {
93+
return toBuilder().setPackageVersion(packageVersion).build();
9494
}
9595

9696
@AutoValue.Builder
@@ -103,7 +103,7 @@ abstract static class Builder {
103103

104104
abstract Builder setApiShortName(String apiShortName);
105105

106-
abstract Builder setApiVersion(String apiVersion);
106+
abstract Builder setPackageVersion(String packageVersion);
107107

108108
abstract GapicClass build();
109109
}

gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
public abstract class Service {
2828
public abstract String name();
2929

30+
@Nullable
31+
public abstract String apiVersion();
32+
3033
public abstract String defaultHost();
3134

3235
public abstract ImmutableList<String> oauthScopes();
@@ -52,6 +55,10 @@ public boolean hasDescription() {
5255
return !Strings.isNullOrEmpty(description());
5356
}
5457

58+
public boolean hasApiVersion() {
59+
return !Strings.isNullOrEmpty(apiVersion());
60+
}
61+
5562
public String hostServiceName() {
5663
// Host Service Name is guaranteed to exist and be non-null and non-empty
5764
// Parser will fail if the default host is not supplied
@@ -65,9 +72,9 @@ public String apiShortName() {
6572
return "";
6673
}
6774

68-
public String apiVersion() {
75+
public String packageVersion() {
6976
if (!Strings.isNullOrEmpty(protoPakkage())) {
70-
return parseApiVersion(protoPakkage());
77+
return parsePackageVersion(protoPakkage());
7178
}
7279
return "";
7380
}
@@ -158,6 +165,8 @@ public abstract static class Builder {
158165

159166
public abstract Builder setOverriddenName(String overriddenName);
160167

168+
public abstract Builder setApiVersion(String apiVersion);
169+
161170
public abstract Builder setDefaultHost(String defaultHost);
162171

163172
public abstract Builder setOauthScopes(List<String> oauthScopes);
@@ -177,17 +186,17 @@ public abstract static class Builder {
177186
public abstract Service build();
178187
}
179188

180-
private static String parseApiVersion(String protoPackage) {
181-
// parse protoPackage for apiVersion
189+
private static String parsePackageVersion(String protoPackage) {
190+
// parse protoPackage for packageVersion
182191
String[] pakkage = protoPackage.split("\\.");
183-
String apiVersion;
192+
String packageVersion;
184193
// e.g. v1, v2, v1beta1
185194
if (pakkage[pakkage.length - 1].matches("v[0-9].*")) {
186-
apiVersion = pakkage[pakkage.length - 1];
195+
packageVersion = pakkage[pakkage.length - 1];
187196
} else {
188-
apiVersion = "";
197+
packageVersion = "";
189198
}
190-
return apiVersion;
199+
return packageVersion;
191200
}
192201

193202
// Parse the service name from the default host configured in the protos

gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,11 @@ public static List<Service> parseService(
470470
}
471471
}
472472

473+
if (serviceOptions.hasExtension(ClientProto.apiVersion)) {
474+
String apiVersion = serviceOptions.getExtension(ClientProto.apiVersion);
475+
serviceBuilder.setApiVersion(apiVersion);
476+
}
477+
473478
String serviceName = s.getName();
474479
String overriddenServiceName = serviceName;
475480
String pakkage = TypeParser.getPackage(fileDescriptor);

gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/ComposerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class ComposerTest {
4545
GrpcServiceCallableFactoryClassComposer.instance()
4646
.generate(context, echoProtoService)
4747
.withApiShortName(echoProtoService.apiShortName())
48-
.withApiVersion(echoProtoService.apiVersion()));
48+
.withPackageVersion(echoProtoService.packageVersion()));
4949
private final Sample sample =
5050
Sample.builder()
5151
.setRegionTag(
@@ -160,7 +160,7 @@ private List<GapicClass> getTestClassListFromService(Service testService) {
160160
.generate(context, testService)
161161
.withSamples(ListofSamples)
162162
.withApiShortName(testService.apiShortName())
163-
.withApiVersion(testService.apiVersion());
163+
.withPackageVersion(testService.packageVersion());
164164
List<GapicClass> testClassList = Arrays.asList(new GapicClass[] {testClass});
165165
return testClassList;
166166
}

gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/ServiceClientClassComposerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public static Collection<Object[]> data() {
7272
public String apiShortNameExpected;
7373

7474
@Parameterized.Parameter(3)
75-
public String apiVersionExpected;
75+
public String packageVersionExpected;
7676

7777
@Test
7878
public void generateServiceClientClasses() {
@@ -83,6 +83,6 @@ public void generateServiceClientClasses() {
8383
Assert.assertGoldenSamples(
8484
this.getClass(), name, clazz.classDefinition().packageString(), clazz.samples());
8585
Assert.assertCodeEquals(clazz.apiShortName(), apiShortNameExpected);
86-
Assert.assertCodeEquals(clazz.apiVersion(), apiVersionExpected);
86+
Assert.assertCodeEquals(clazz.packageVersion(), packageVersionExpected);
8787
}
8888
}

gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/ServiceSettingsClassComposerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public static Collection<Object[]> data() {
5555
public String apiShortNameExpected;
5656

5757
@Parameterized.Parameter(3)
58-
public String apiVersionExpected;
58+
public String packageVersionExpected;
5959

6060
@Test
6161
public void generateServiceSettingsClasses() {
@@ -69,6 +69,6 @@ public void generateServiceSettingsClasses() {
6969
clazz.classDefinition().packageString(),
7070
clazz.samples());
7171
Assert.assertCodeEquals(clazz.apiShortName(), apiShortNameExpected);
72-
Assert.assertCodeEquals(clazz.apiVersion(), apiVersionExpected);
72+
Assert.assertCodeEquals(clazz.packageVersion(), packageVersionExpected);
7373
}
7474
}

0 commit comments

Comments
 (0)
0