Skip to content

Commit 825dadd

Browse files
authored
feat(gapic-generator): Add NullMarked annotation to generated classes (#13517)
This PR updates the gapic-generator-java to add the JSpecify @NullMarked annotation to all generated class declarations. Adding @NullMarked at the class level defines the class scope as null-safe, establishing that all unannotated types in method signatures (parameters and return types) are nonnull able by default. This is the first phase in onboarding the generated client libraries to compile-time safety validation, see design doc for more details: [go/sdk:java-jspecify-null-annotations-gapic](http://goto.google.com/sdk:java-jspecify-null-annotations-gapic) Classes Annotated: - Client Classes: AbstractServiceClientClassComposer - Settings Classes: AbstractServiceSettingsClassComposer and AbstractServiceStubSettingsClassComposer - Stub Classes: AbstractServiceStubClassComposer and AbstractTransportServiceStubClassComposer - Callable Factories: AbstractServiceCallableFactoryClassComposer - Resource Names: ResourceNameHelperClassComposer, CommonStrings Implementation Changes: - Added JSpecify import statements to class-level generation templates - Registered NullMarked.class and Nullable.class in TypeStore across all class composers to ensure references compile and resolve properly Verification/Testing: - Please refer to this doc: https://docs.google.com/document/d/1h126pbTGqSwtJyl35E2_vQjM9gNtmWETYCM7PObcvmQ/edit?tab=t.0#heading=h.s4q06jxocx8b Revisions: - Mainly to fix the autogenerator, not related to logic: added goldens + dependencies for the build Next Steps: - In the next PR, will add @nullable annotations
1 parent 591cae0 commit 825dadd

289 files changed

Lines changed: 596 additions & 6 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/ComplianceClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.util.List;
4242
import java.util.concurrent.TimeUnit;
4343
import javax.annotation.Generated;
44+
import org.jspecify.annotations.NullMarked;
4445

4546
// AUTO-GENERATED DOCUMENTATION AND CLASS.
4647
/**
@@ -355,6 +356,7 @@
355356
*
356357
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
357358
*/
359+
@NullMarked
358360
@BetaApi
359361
@Generated("by gapic-generator-java")
360362
public class ComplianceClient implements BackgroundResource {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/ComplianceSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.io.IOException;
4444
import java.util.List;
4545
import javax.annotation.Generated;
46+
import org.jspecify.annotations.NullMarked;
4647

4748
// AUTO-GENERATED DOCUMENTATION AND CLASS.
4849
/**
@@ -93,6 +94,7 @@
9394
* Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
9495
* retries.
9596
*/
97+
@NullMarked
9698
@BetaApi
9799
@Generated("by gapic-generator-java")
98100
public class ComplianceSettings extends ClientSettings<ComplianceSettings> {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/EchoClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.util.Map;
5050
import java.util.concurrent.TimeUnit;
5151
import javax.annotation.Generated;
52+
import org.jspecify.annotations.NullMarked;
5253

5354
// AUTO-GENERATED DOCUMENTATION AND CLASS.
5455
/**
@@ -364,6 +365,7 @@
364365
*
365366
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
366367
*/
368+
@NullMarked
367369
@BetaApi
368370
@Generated("by gapic-generator-java")
369371
public class EchoClient implements BackgroundResource {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/EchoSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.io.IOException;
5050
import java.util.List;
5151
import javax.annotation.Generated;
52+
import org.jspecify.annotations.NullMarked;
5253

5354
// AUTO-GENERATED DOCUMENTATION AND CLASS.
5455
/**
@@ -124,6 +125,7 @@
124125
* .build();
125126
* }</pre>
126127
*/
128+
@NullMarked
127129
@BetaApi
128130
@Generated("by gapic-generator-java")
129131
public class EchoSettings extends ClientSettings<EchoSettings> {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/IdentityClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import java.util.List;
4343
import java.util.concurrent.TimeUnit;
4444
import javax.annotation.Generated;
45+
import org.jspecify.annotations.NullMarked;
4546

4647
// AUTO-GENERATED DOCUMENTATION AND CLASS.
4748
/**
@@ -286,6 +287,7 @@
286287
*
287288
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
288289
*/
290+
@NullMarked
289291
@BetaApi
290292
@Generated("by gapic-generator-java")
291293
public class IdentityClient implements BackgroundResource {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/IdentitySettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.io.IOException;
4646
import java.util.List;
4747
import javax.annotation.Generated;
48+
import org.jspecify.annotations.NullMarked;
4849

4950
// AUTO-GENERATED DOCUMENTATION AND CLASS.
5051
/**
@@ -95,6 +96,7 @@
9596
* Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
9697
* retries.
9798
*/
99+
@NullMarked
98100
@BetaApi
99101
@Generated("by gapic-generator-java")
100102
public class IdentitySettings extends ClientSettings<IdentitySettings> {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/MessagingClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import java.util.List;
5151
import java.util.concurrent.TimeUnit;
5252
import javax.annotation.Generated;
53+
import org.jspecify.annotations.NullMarked;
5354

5455
// AUTO-GENERATED DOCUMENTATION AND CLASS.
5556
/**
@@ -449,6 +450,7 @@
449450
*
450451
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
451452
*/
453+
@NullMarked
452454
@BetaApi
453455
@Generated("by gapic-generator-java")
454456
public class MessagingClient implements BackgroundResource {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/MessagingSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import java.io.IOException;
5151
import java.util.List;
5252
import javax.annotation.Generated;
53+
import org.jspecify.annotations.NullMarked;
5354

5455
// AUTO-GENERATED DOCUMENTATION AND CLASS.
5556
/**
@@ -125,6 +126,7 @@
125126
* .build();
126127
* }</pre>
127128
*/
129+
@NullMarked
128130
@BetaApi
129131
@Generated("by gapic-generator-java")
130132
public class MessagingSettings extends ClientSettings<MessagingSettings> {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/SequenceServiceClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.util.List;
4444
import java.util.concurrent.TimeUnit;
4545
import javax.annotation.Generated;
46+
import org.jspecify.annotations.NullMarked;
4647

4748
// AUTO-GENERATED DOCUMENTATION AND CLASS.
4849
/**
@@ -309,6 +310,7 @@
309310
*
310311
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
311312
*/
313+
@NullMarked
312314
@BetaApi
313315
@Generated("by gapic-generator-java")
314316
public class SequenceServiceClient implements BackgroundResource {

java-showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/SequenceServiceSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.io.IOException;
4646
import java.util.List;
4747
import javax.annotation.Generated;
48+
import org.jspecify.annotations.NullMarked;
4849

4950
// AUTO-GENERATED DOCUMENTATION AND CLASS.
5051
/**
@@ -96,6 +97,7 @@
9697
* Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
9798
* retries.
9899
*/
100+
@NullMarked
99101
@BetaApi
100102
@Generated("by gapic-generator-java")
101103
public class SequenceServiceSettings extends ClientSettings<SequenceServiceSettings> {

0 commit comments

Comments
 (0)