Skip to content

Commit b1aab81

Browse files
committed
feat: add NullMarked annotation to generated client, stub, and resource name classes
1 parent 7f4c73a commit b1aab81

66 files changed

Lines changed: 145 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.

sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import java.util.List;
4949
import java.util.stream.Collectors;
5050
import javax.annotation.Generated;
51+
import org.jspecify.annotations.NullMarked;
5152

5253
public abstract class AbstractServiceCallableFactoryClassComposer implements ClassComposer {
5354
private final TransportContext transportContext;
@@ -93,6 +94,7 @@ public GapicClass generate(GapicContext context, Service service) {
9394

9495
protected List<AnnotationNode> createClassAnnotations(Service service, TypeStore typeStore) {
9596
List<AnnotationNode> annotations = new ArrayList<>();
97+
annotations.add(AnnotationNode.withType(typeStore.get("NullMarked")));
9698
if (!PackageChecker.isGaApi(service.pakkage())) {
9799
annotations.add(AnnotationNode.withType(typeStore.get("BetaApi")));
98100
}
@@ -349,7 +351,8 @@ private TypeStore createTypes(Service service) {
349351
UnaryCallSettings.class,
350352
UnaryCallable.class,
351353
Generated.class,
352-
UnsupportedOperationException.class);
354+
UnsupportedOperationException.class,
355+
NullMarked.class);
353356
return new TypeStore(concreteClazzes);
354357
}
355358
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
import java.util.function.Function;
104104
import java.util.stream.Collectors;
105105
import javax.annotation.Generated;
106+
import org.jspecify.annotations.NullMarked;
106107

107108
public abstract class AbstractServiceClientClassComposer implements ClassComposer {
108109
private static final String CALLABLE_NAME_PATTERN = "%sCallable";
@@ -193,6 +194,7 @@ public GapicClass generate(GapicContext context, Service service) {
193194

194195
private static List<AnnotationNode> createClassAnnotations(Service service, TypeStore typeStore) {
195196
List<AnnotationNode> annotations = new ArrayList<>();
197+
annotations.add(AnnotationNode.withType(typeStore.get("NullMarked")));
196198
if (!PackageChecker.isGaApi(service.pakkage())) {
197199
annotations.add(AnnotationNode.withType(typeStore.get("BetaApi")));
198200
}
@@ -1786,6 +1788,7 @@ private static TypeStore createTypes(Service service, Map<String, Message> messa
17861788
InterruptedException.class,
17871789
IOException.class,
17881790
MoreExecutors.class,
1791+
NullMarked.class,
17891792
Objects.class,
17901793
Operation.class,
17911794
OperationFuture.class,

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
import java.util.function.Function;
8080
import java.util.stream.Collectors;
8181
import javax.annotation.Generated;
82+
import org.jspecify.annotations.NullMarked;
8283

8384
public abstract class AbstractServiceSettingsClassComposer implements ClassComposer {
8485
private static final String BUILDER_CLASS_NAME = "Builder";
@@ -204,6 +205,7 @@ private static List<CommentStatement> createClassHeaderComments(
204205

205206
private static List<AnnotationNode> createClassAnnotations(Service service) {
206207
List<AnnotationNode> annotations = new ArrayList<>();
208+
annotations.add(AnnotationNode.withType(FIXED_TYPESTORE.get("NullMarked")));
207209
if (!PackageChecker.isGaApi(service.pakkage())) {
208210
annotations.add(AnnotationNode.withType(FIXED_TYPESTORE.get("BetaApi")));
209211
}
@@ -847,7 +849,8 @@ private static TypeStore createStaticTypes() {
847849
StreamingCallSettings.class,
848850
StubSettings.class,
849851
TransportChannelProvider.class,
850-
UnaryCallSettings.class);
852+
UnaryCallSettings.class,
853+
NullMarked.class);
851854
return new TypeStore(concreteClazzes);
852855
}
853856

sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubClassComposer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.Map;
5555
import java.util.stream.Collectors;
5656
import javax.annotation.Generated;
57+
import org.jspecify.annotations.NullMarked;
5758

5859
public abstract class AbstractServiceStubClassComposer implements ClassComposer {
5960

@@ -93,6 +94,7 @@ public GapicClass generate(GapicContext context, Service service) {
9394

9495
private static List<AnnotationNode> createClassAnnotations(Service service, TypeStore typeStore) {
9596
List<AnnotationNode> annotations = new ArrayList<>();
97+
annotations.add(AnnotationNode.withType(typeStore.get("NullMarked")));
9698
if (!PackageChecker.isGaApi(service.pakkage())) {
9799
annotations.add(AnnotationNode.withType(typeStore.get("BetaApi")));
98100
}
@@ -270,7 +272,8 @@ private static TypeStore createTypes(Service service, Map<String, Message> messa
270272
OperationCallable.class,
271273
ServerStreamingCallable.class,
272274
UnaryCallable.class,
273-
UnsupportedOperationException.class);
275+
UnsupportedOperationException.class,
276+
NullMarked.class);
274277
TypeStore typeStore = new TypeStore(concreteClazzes);
275278

276279
typeStore.put("com.google.longrunning.stub", "OperationsStub");

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
import java.util.stream.Collectors;
125125
import javax.annotation.Generated;
126126
import javax.annotation.Nullable;
127+
import org.jspecify.annotations.NullMarked;
127128

128129
public abstract class AbstractServiceStubSettingsClassComposer implements ClassComposer {
129130
private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create();
@@ -411,6 +412,7 @@ protected MethodDefinition createApiClientHeaderProviderBuilderMethod(
411412

412413
private List<AnnotationNode> createClassAnnotations(Service service) {
413414
List<AnnotationNode> annotations = new ArrayList<>();
415+
annotations.add(AnnotationNode.withType(FIXED_TYPESTORE.get("NullMarked")));
414416
if (!PackageChecker.isGaApi(service.pakkage())) {
415417
annotations.add(AnnotationNode.withType(FIXED_TYPESTORE.get("BetaApi")));
416418
}
@@ -2217,7 +2219,8 @@ private static TypeStore createStaticTypes() {
22172219
SuppressWarnings.class,
22182220
TransportChannelProvider.class,
22192221
UnaryCallSettings.class,
2220-
UnaryCallable.class);
2222+
UnaryCallable.class,
2223+
NullMarked.class);
22212224
return new TypeStore(concreteClazzes);
22222225
}
22232226

sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
import java.util.stream.Collectors;
101101
import javax.annotation.Generated;
102102
import javax.annotation.Nullable;
103+
import org.jspecify.annotations.NullMarked;
103104

104105
public abstract class AbstractTransportServiceStubClassComposer implements ClassComposer {
105106
private static final List<String> AIP_STANDARDS_METHODS =
@@ -152,7 +153,8 @@ private static TypeStore createStaticTypes() {
152153
TimeUnit.class,
153154
TypeRegistry.class,
154155
UnaryCallable.class,
155-
UnsupportedOperationException.class);
156+
UnsupportedOperationException.class,
157+
NullMarked.class);
156158
return new TypeStore(concreteClazzes);
157159
}
158160

@@ -548,6 +550,7 @@ private VariableExpr getOperationCallableExpr(Method protoMethod, String callabl
548550

549551
protected List<AnnotationNode> createClassAnnotations(Service service) {
550552
List<AnnotationNode> annotations = new ArrayList<>();
553+
annotations.add(AnnotationNode.withType(FIXED_TYPESTORE.get("NullMarked")));
551554
if (!PackageChecker.isGaApi(service.pakkage())) {
552555
annotations.add(AnnotationNode.withType(FIXED_TYPESTORE.get("BetaApi")));
553556
}

sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/resourcename/ResourceNameHelperClassComposer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
import java.util.function.Function;
7070
import java.util.stream.Collectors;
7171
import javax.annotation.Generated;
72+
import org.jspecify.annotations.NullMarked;
7273

7374
public class ResourceNameHelperClassComposer {
7475
private static final String CLASS_NAME_PATTERN = "%sName";
@@ -152,6 +153,7 @@ public GapicClass generate(ResourceName resourceName, GapicContext context) {
152153

153154
private static List<AnnotationNode> createClassAnnotations() {
154155
return Arrays.asList(
156+
AnnotationNode.withType(FIXED_TYPESTORE.get("NullMarked")),
155157
AnnotationNode.builder()
156158
.setType(FIXED_TYPESTORE.get("Generated"))
157159
.setDescription("by gapic-generator-java")
@@ -1704,7 +1706,8 @@ private static TypeStore createStaticTypes() {
17041706
PathTemplate.class,
17051707
Preconditions.class,
17061708
com.google.api.resourcenames.ResourceName.class,
1707-
ValidationException.class);
1709+
ValidationException.class,
1710+
NullMarked.class);
17081711
return new TypeStore(concreteClazzes);
17091712
}
17101713

sdk-platform-java/gapic-generator-java/src/test/java/com/google/api/generator/engine/writer/goldens/GrpcServiceClientWithNestedClassImport.golden

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.google.types.testing.stub.NestedMessageServiceStubSettings;
88
import java.io.IOException;
99
import java.util.concurrent.TimeUnit;
1010
import javax.annotation.Generated;
11+
import org.jspecify.annotations.NullMarked;
1112

1213
// AUTO-GENERATED DOCUMENTATION AND CLASS.
1314
/**
@@ -95,6 +96,7 @@ import javax.annotation.Generated;
9596
*
9697
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
9798
*/
99+
@NullMarked
98100
@Generated("by gapic-generator-java")
99101
public class NestedMessageServiceClient implements BackgroundResource {
100102
private final NestedMessageServiceSettings settings;

sdk-platform-java/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/ApiVersionTestingStubSettings.golden

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.google.common.collect.Lists;
2525
import java.io.IOException;
2626
import java.util.List;
2727
import javax.annotation.Generated;
28+
import org.jspecify.annotations.NullMarked;
2829

2930
// AUTO-GENERATED DOCUMENTATION AND CLASS.
3031
/**
@@ -76,6 +77,7 @@ import javax.annotation.Generated;
7677
* Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
7778
* retries.
7879
*/
80+
@NullMarked
7981
@Generated("by gapic-generator-java")
8082
@SuppressWarnings("CanonicalDuration")
8183
public class EchoWithVersionStubSettings extends StubSettings<EchoWithVersionStubSettings> {

sdk-platform-java/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/BookshopClient.golden

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import java.io.IOException;
99
import java.util.List;
1010
import java.util.concurrent.TimeUnit;
1111
import javax.annotation.Generated;
12+
import org.jspecify.annotations.NullMarked;
1213

1314
// AUTO-GENERATED DOCUMENTATION AND CLASS.
1415
/**
@@ -98,6 +99,7 @@ import javax.annotation.Generated;
9899
*
99100
* <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
100101
*/
102+
@NullMarked
101103
@BetaApi
102104
@Generated("by gapic-generator-java")
103105
public class BookshopClient implements BackgroundResource {

0 commit comments

Comments
 (0)