Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.
This repository was archived by the owner on May 14, 2026. It is now read-only.

cannot use "case" as a field name #956

Description

@alexander-fenster

If a field is named case in the protos, the generator fails with the following exception:

Exception in thread "main" com.google.api.generator.engine.ast.IdentifierNode$InvalidIdentifierException: Name case cannot be a keyword.
	at com.google.api.generator.engine.ast.IdentifierNode$Builder.build(IdentifierNode.java:99)
	at com.google.api.generator.engine.ast.IdentifierNode$Builder.buildVariableIdentifier(IdentifierNode.java:63)
	at com.google.api.generator.engine.ast.Variable$Builder.build(Variable.java:46)
	at com.google.api.generator.gapic.composer.common.AbstractServiceClientClassComposer.lambda$createMethodVariants$6(AbstractServiceClientClassComposer.java:668)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
	at com.google.api.generator.gapic.composer.common.AbstractServiceClientClassComposer.createMethodVariants(AbstractServiceClientClassComposer.java:671)
	at com.google.api.generator.gapic.composer.common.AbstractServiceClientClassComposer.createServiceMethods(AbstractServiceClientClassComposer.java:578)
	at com.google.api.generator.gapic.composer.common.AbstractServiceClientClassComposer.createClassMethods(AbstractServiceClientClassComposer.java:216)
	at com.google.api.generator.gapic.composer.common.AbstractServiceClientClassComposer.generate(AbstractServiceClientClassComposer.java:150)
	at com.google.api.generator.gapic.composer.Composer.lambda$generateClientSettingsClasses$3(Composer.java:134)
	at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:422)
	at com.google.api.generator.gapic.composer.Composer.generateClientSettingsClasses(Composer.java:122)
	at com.google.api.generator.gapic.composer.Composer.generateServiceClasses(Composer.java:58)
	at com.google.api.generator.gapic.composer.Composer.composeServiceClasses(Composer.java:45)
	at com.google.api.generator.gapic.Generator.generateGapic(Generator.java:30)
	at com.google.api.generator.Main.main(Main.java:28)
--java_gapic_out: protoc-gen-java_gapic: Plugin failed with status code 1.

AIP-140 suggests that the APIs should not use possible keywords in names but does not forbid it, and this specific API won't be able to rename it because it's already public.

Activity

  1. added
    type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
    priority: p2Moderately-important priority. Fix may not be included in next release.
    on Feb 25, 2022
  2. suztomo commented on Feb 25, 2022

    @suztomo
    Member
  3. suztomo commented on Feb 25, 2022

    @suztomo
    Member

    @alexander-fenster (Aside from deciding what to do with gapic-generator-java) Do you know who introduced the "case" field. Is it possible to provide the feedback to the person (and approvers) that you are suffering the "case" field conflicting with Java's keywords?

    Do other gapic-generators work fine for the field?

  4. alexander-fenster commented on Mar 1, 2022

    @alexander-fenster
    ContributorAuthor

    @suztomo I added a comment in the internal issue 221506923 because the offending proto is not yet public.

  5. yihanzhen commented on Mar 2, 2022

    @yihanzhen
    Contributor

    I had a similar issue when I tried to generate Java libraries for artifactregistry API where a resource name has the collection name "package" in it (proto link). The resource should have be annotated with google.api.resource but doing so would cause Java generation to fail.

    Let me know if you want me to create a separate issue or paste you the full stacktrace.

  6. alicejli commented on May 31, 2022

    @alicejli
    Contributor

    @vam-google pushed a fix for a related issue here: #985 that solves this issue as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions