Skip to content

Commit e61751e

Browse files
committed
fix(resnames): filter out mixin services from resname pkg candidates
1 parent eaf4592 commit e61751e

8 files changed

Lines changed: 27 additions & 9 deletions

File tree

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ public class Parser {
8787
"google.iam.v1.IAMPolicy",
8888
"google.longrunning.Operations",
8989
"google.cloud.location.Locations");
90+
// These must be kept in sync with the above protos' java_package options.
91+
private static final Set<String> MIXIN_JAVA_PACKAGE_ALLOWLIST =
92+
ImmutableSet.of("com.google.iam.v1", "com.google.longrunning", "com.google.cloud.location");
9093

9194
// Allow other parsers to access this.
9295
protected static final SourceCodeInfoParser SOURCE_CODE_INFO_PARSER = new SourceCodeInfoParser();
@@ -574,7 +577,7 @@ public static Map<String, Message> updateResourceNamesInMessages(
574577
}
575578

576579
public static Map<String, ResourceName> parseResourceNames(CodeGeneratorRequest request) {
577-
@VisibleForTesting String javaPackage = parseServiceJavaPackage(request);
580+
String javaPackage = parseServiceJavaPackage(request);
578581
Map<String, FileDescriptor> fileDescriptors = getFilesToGenerate(request);
579582
Map<String, ResourceName> resourceNames = new HashMap<>();
580583
for (String fileToGenerate : request.getFileToGenerateList()) {
@@ -917,8 +920,23 @@ private static String parseServiceJavaPackage(CodeGeneratorRequest request) {
917920
}
918921
}
919922

923+
// Filter out mixin packages.
924+
Map<String, Integer> processedJavaPackageCount =
925+
javaPackageCount.entrySet().stream()
926+
.filter(e -> !MIXIN_JAVA_PACKAGE_ALLOWLIST.contains(e.getKey()))
927+
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
928+
929+
// An empty map indicates that only mixin packages were present, which means that we're
930+
// generating a standalone client for a mixin.
931+
if (processedJavaPackageCount.isEmpty()) {
932+
processedJavaPackageCount = javaPackageCount;
933+
}
934+
920935
String finalJavaPackage =
921-
javaPackageCount.entrySet().stream().max(Map.Entry.comparingByValue()).get().getKey();
936+
processedJavaPackageCount.entrySet().stream()
937+
.max(Map.Entry.comparingByValue())
938+
.get()
939+
.getKey();
922940
Preconditions.checkState(
923941
!Strings.isNullOrEmpty(finalJavaPackage), "No service Java package found");
924942
return finalJavaPackage;

test/integration/goldens/pubsub/com/google/cloud/pubsub/v1/SchemaServiceClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.google.common.util.concurrent.MoreExecutors;
3232
import com.google.iam.v1.GetIamPolicyRequest;
3333
import com.google.iam.v1.Policy;
34-
import com.google.iam.v1.ProjectName;
3534
import com.google.iam.v1.SetIamPolicyRequest;
3635
import com.google.iam.v1.TestIamPermissionsRequest;
3736
import com.google.iam.v1.TestIamPermissionsResponse;
@@ -41,6 +40,7 @@
4140
import com.google.pubsub.v1.GetSchemaRequest;
4241
import com.google.pubsub.v1.ListSchemasRequest;
4342
import com.google.pubsub.v1.ListSchemasResponse;
43+
import com.google.pubsub.v1.ProjectName;
4444
import com.google.pubsub.v1.Schema;
4545
import com.google.pubsub.v1.SchemaName;
4646
import com.google.pubsub.v1.ValidateMessageRequest;

test/integration/goldens/pubsub/com/google/cloud/pubsub/v1/SchemaServiceClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import com.google.iam.v1.GetIamPolicyRequest;
3131
import com.google.iam.v1.GetPolicyOptions;
3232
import com.google.iam.v1.Policy;
33-
import com.google.iam.v1.ProjectName;
3433
import com.google.iam.v1.SetIamPolicyRequest;
3534
import com.google.iam.v1.TestIamPermissionsRequest;
3635
import com.google.iam.v1.TestIamPermissionsResponse;
@@ -43,6 +42,7 @@
4342
import com.google.pubsub.v1.GetSchemaRequest;
4443
import com.google.pubsub.v1.ListSchemasRequest;
4544
import com.google.pubsub.v1.ListSchemasResponse;
45+
import com.google.pubsub.v1.ProjectName;
4646
import com.google.pubsub.v1.Schema;
4747
import com.google.pubsub.v1.SchemaName;
4848
import com.google.pubsub.v1.ValidateMessageRequest;

test/integration/goldens/pubsub/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import com.google.common.util.concurrent.MoreExecutors;
3333
import com.google.iam.v1.GetIamPolicyRequest;
3434
import com.google.iam.v1.Policy;
35-
import com.google.iam.v1.ProjectName;
3635
import com.google.iam.v1.SetIamPolicyRequest;
3736
import com.google.iam.v1.TestIamPermissionsRequest;
3837
import com.google.iam.v1.TestIamPermissionsResponse;
@@ -49,6 +48,7 @@
4948
import com.google.pubsub.v1.ListSubscriptionsResponse;
5049
import com.google.pubsub.v1.ModifyAckDeadlineRequest;
5150
import com.google.pubsub.v1.ModifyPushConfigRequest;
51+
import com.google.pubsub.v1.ProjectName;
5252
import com.google.pubsub.v1.PullRequest;
5353
import com.google.pubsub.v1.PullResponse;
5454
import com.google.pubsub.v1.PushConfig;

test/integration/goldens/pubsub/com/google/cloud/pubsub/v1/SubscriptionAdminClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import com.google.iam.v1.GetIamPolicyRequest;
3636
import com.google.iam.v1.GetPolicyOptions;
3737
import com.google.iam.v1.Policy;
38-
import com.google.iam.v1.ProjectName;
3938
import com.google.iam.v1.SetIamPolicyRequest;
4039
import com.google.iam.v1.TestIamPermissionsRequest;
4140
import com.google.iam.v1.TestIamPermissionsResponse;
@@ -59,6 +58,7 @@
5958
import com.google.pubsub.v1.ListSubscriptionsResponse;
6059
import com.google.pubsub.v1.ModifyAckDeadlineRequest;
6160
import com.google.pubsub.v1.ModifyPushConfigRequest;
61+
import com.google.pubsub.v1.ProjectName;
6262
import com.google.pubsub.v1.PullRequest;
6363
import com.google.pubsub.v1.PullResponse;
6464
import com.google.pubsub.v1.PushConfig;

test/integration/goldens/pubsub/com/google/cloud/pubsub/v1/TopicAdminClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.google.common.util.concurrent.MoreExecutors;
3232
import com.google.iam.v1.GetIamPolicyRequest;
3333
import com.google.iam.v1.Policy;
34-
import com.google.iam.v1.ProjectName;
3534
import com.google.iam.v1.SetIamPolicyRequest;
3635
import com.google.iam.v1.TestIamPermissionsRequest;
3736
import com.google.iam.v1.TestIamPermissionsResponse;
@@ -46,6 +45,7 @@
4645
import com.google.pubsub.v1.ListTopicSubscriptionsResponse;
4746
import com.google.pubsub.v1.ListTopicsRequest;
4847
import com.google.pubsub.v1.ListTopicsResponse;
48+
import com.google.pubsub.v1.ProjectName;
4949
import com.google.pubsub.v1.PublishRequest;
5050
import com.google.pubsub.v1.PublishResponse;
5151
import com.google.pubsub.v1.PubsubMessage;

test/integration/goldens/pubsub/com/google/cloud/pubsub/v1/TopicAdminClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import com.google.iam.v1.GetIamPolicyRequest;
3333
import com.google.iam.v1.GetPolicyOptions;
3434
import com.google.iam.v1.Policy;
35-
import com.google.iam.v1.ProjectName;
3635
import com.google.iam.v1.SetIamPolicyRequest;
3736
import com.google.iam.v1.TestIamPermissionsRequest;
3837
import com.google.iam.v1.TestIamPermissionsResponse;
@@ -51,6 +50,7 @@
5150
import com.google.pubsub.v1.ListTopicsRequest;
5251
import com.google.pubsub.v1.ListTopicsResponse;
5352
import com.google.pubsub.v1.MessageStoragePolicy;
53+
import com.google.pubsub.v1.ProjectName;
5454
import com.google.pubsub.v1.PublishRequest;
5555
import com.google.pubsub.v1.PublishResponse;
5656
import com.google.pubsub.v1.PubsubMessage;

test/integration/goldens/pubsub/com/google/iam/v1/ProjectName.java renamed to test/integration/goldens/pubsub/com/google/pubsub/v1/ProjectName.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.google.iam.v1;
17+
package com.google.pubsub.v1;
1818

1919
import com.google.api.pathtemplate.PathTemplate;
2020
import com.google.api.resourcenames.ResourceName;

0 commit comments

Comments
 (0)