Skip to content
This repository was archived by the owner on Jun 28, 2022. It is now read-only.

Commit c5f7f73

Browse files
authored
Merge in gapic_config_v2 (#2721)
* Add Gapic config v2 (#2665) * Whittling down config_v2 (#2666) * Add ConfigV2 Validator (#2672) * AutoValue LongRunningConfig; always use gapic config's polling settings (#2698) * ResourceNameOneofConfig fixes (#2704) * Start parsing GAPIC config v2 (#2703) * Bring back timeout millis in GAPIC config v2 (#2708) * Resource names across different protofiles (#2711) * Fix missing default retries (#2718) * Bug fixes for gapic config v2 parsing (#2717)
1 parent ff1e719 commit c5f7f73

31 files changed

+1347
-377
lines changed

BUILD.bazel

+9-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ _COMPILE_DEPS = [
1313
"@com_fasterxml_jackson_core_jackson_databind//jar",
1414
"@com_google_api_api_common//jar",
1515
"@com_google_api_api_compiler//jar",
16+
"@com_google_api_api_compiler_testing//jar",
1617
"@com_google_api_grpc_proto_google_common_protos__com_google_api_codegen//jar",
1718
"@com_google_auto_value_auto_value//jar",
1819
"@com_google_auto_value_auto_value_annotations//jar",
@@ -31,7 +32,6 @@ _COMPILE_DEPS = [
3132
]
3233

3334
_TEST_COMPILE_DEPS = [
34-
"@com_google_api_api_compiler_testing//jar",
3535
"@com_google_truth_truth//jar",
3636
"@junit_junit//jar",
3737
"@pl_pragmatists_JUnitParams//jar",
@@ -60,9 +60,16 @@ proto_library(
6060
deps = ["@com_google_protobuf//:wrappers_proto"],
6161
)
6262

63+
proto_library(
64+
name = "config_v2_proto",
65+
srcs = ["src/main/proto/com/google/api/codegen/v2/config_v2.proto"],
66+
deps = ["@com_google_protobuf//:wrappers_proto"],
67+
)
68+
6369
java_proto_library(
6470
name = "config_java_proto",
65-
deps = [":config_proto"],
71+
deps = [":config_proto",
72+
":config_v2_proto"],
6673
)
6774

6875
java_binary(

src/main/java/com/google/api/codegen/config/DiscoGapicInterfaceConfig.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ static DiscoGapicInterfaceConfig createInterfaceConfig(
7171
ResourceNameMessageConfigs messageConfigs,
7272
ImmutableMap<String, ResourceNameConfig> resourceNameConfigs) {
7373

74-
RetryCodesConfig retryCodesConfig =
75-
RetryCodesConfig.create(model.getDiagCollector(), interfaceConfigProto);
74+
RetryCodesConfig retryCodesConfig = RetryCodesConfig.create(interfaceConfigProto);
7675
ImmutableMap<String, RetryParamsDefinitionProto> retrySettingsDefinition =
7776
RetryDefinitionsTransformer.createRetrySettingsDefinition(interfaceConfigProto);
7877

src/main/java/com/google/api/codegen/config/FixedResourceNameConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public abstract class FixedResourceNameConfig implements ResourceNameConfig {
3030

3131
public abstract String getFixedValue();
3232

33+
@Nullable
3334
@Override
3435
public abstract ProtoFile getAssignedProtoFile();
3536

src/main/java/com/google/api/codegen/config/GapicInterfaceConfig.java

+26-13
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.List;
3737
import java.util.Map;
3838
import java.util.Map.Entry;
39+
import java.util.Objects;
3940
import javax.annotation.Nullable;
4041

4142
/**
@@ -118,7 +119,6 @@ static GapicInterfaceConfig createInterfaceConfig(
118119

119120
RetryCodesConfig retryCodesConfig =
120121
RetryCodesConfig.create(
121-
diagCollector,
122122
interfaceConfigProto,
123123
new ArrayList<>(interfaceInput.getMethodsToGenerate().keySet()),
124124
protoParser);
@@ -164,19 +164,32 @@ static GapicInterfaceConfig createInterfaceConfig(
164164
}
165165

166166
ImmutableList.Builder<SingleResourceNameConfig> resourcesBuilder = ImmutableList.builder();
167-
for (CollectionConfigProto collectionConfigProto : interfaceConfigProto.getCollectionsList()) {
168-
String entityName = collectionConfigProto.getEntityName();
169-
ResourceNameConfig resourceName = resourceNameConfigs.get(entityName);
170-
if (!(resourceName instanceof SingleResourceNameConfig)) {
171-
diagCollector.addDiag(
172-
Diag.error(
173-
SimpleLocation.TOPLEVEL,
174-
"Inconsistent configuration - single resource name %s specified for interface, "
175-
+ " but was not found in GapicProductConfig configuration.",
176-
entityName));
177-
return null;
167+
if (protoParser.isProtoAnnotationsEnabled()) {
168+
resourceNameConfigs
169+
.values()
170+
.stream()
171+
.filter(
172+
r ->
173+
r.getResourceNameType() == ResourceNameType.SINGLE
174+
&& Objects.equals(r.getAssignedProtoFile(), apiInterface.getFile()))
175+
.map(r -> (SingleResourceNameConfig) r)
176+
.forEach(resourcesBuilder::add);
177+
} else {
178+
for (CollectionConfigProto collectionConfigProto :
179+
interfaceConfigProto.getCollectionsList()) {
180+
String entityName = collectionConfigProto.getEntityName();
181+
ResourceNameConfig resourceName = resourceNameConfigs.get(entityName);
182+
if (!(resourceName instanceof SingleResourceNameConfig)) {
183+
diagCollector.addDiag(
184+
Diag.error(
185+
SimpleLocation.TOPLEVEL,
186+
"Inconsistent configuration - single resource name %s specified for interface, "
187+
+ " but was not found in GapicProductConfig configuration.",
188+
entityName));
189+
return null;
190+
}
191+
resourcesBuilder.add((SingleResourceNameConfig) resourceName);
178192
}
179-
resourcesBuilder.add((SingleResourceNameConfig) resourceName);
180193
}
181194
ImmutableList<SingleResourceNameConfig> singleResourceNames = resourcesBuilder.build();
182195

0 commit comments

Comments
 (0)