diff --git a/sdk-platform-java/gapic-generator-java/pom.xml b/sdk-platform-java/gapic-generator-java/pom.xml index 18b0f8244e48..5d868eba8370 100644 --- a/sdk-platform-java/gapic-generator-java/pom.xml +++ b/sdk-platform-java/gapic-generator-java/pom.xml @@ -398,11 +398,6 @@ ${junit.version} test - - com.google.code.findbugs - jsr305 - 3.0.2 - com.google.api api-common diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/AnnotationNode.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/AnnotationNode.java index 7cb0f5ec37fa..514849603cea 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/AnnotationNode.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/AnnotationNode.java @@ -19,8 +19,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class AnnotationNode implements AstNode { public static AnnotationNode OVERRIDE = diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ClassDefinition.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ClassDefinition.java index 1e09e39f4089..4697f284e6ef 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ClassDefinition.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ClassDefinition.java @@ -21,8 +21,10 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class ClassDefinition implements AstNode { // Optional. diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ConcreteReference.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ConcreteReference.java index b768d5b2ff4f..da97852bf299 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ConcreteReference.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ConcreteReference.java @@ -19,8 +19,10 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class ConcreteReference implements Reference { private static final String EXTENDS = "extends"; @@ -176,7 +178,7 @@ public boolean isWildcard() { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof ConcreteReference)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/JavaDocComment.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/JavaDocComment.java index 7184044598c2..a5873499ecd9 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/JavaDocComment.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/JavaDocComment.java @@ -23,7 +23,10 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class JavaDocComment implements Comment { @Override @@ -48,11 +51,11 @@ public abstract static class Builder { static final String PARAM_INDENT = " "; // The lack of a getter for these local variables in the external class is WAI. - String throwsType = null; - String throwsDescription = null; - String deprecated = null; - String internalOnly = null; - String returnDescription = null; + @Nullable String throwsType = null; + @Nullable String throwsDescription = null; + @Nullable String deprecated = null; + @Nullable String internalOnly = null; + @Nullable String returnDescription = null; List paramsList = new ArrayList<>(); List componentsList = new ArrayList<>(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodDefinition.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodDefinition.java index 6bd3bca9c532..1e6bbcd961e6 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodDefinition.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodDefinition.java @@ -23,8 +23,10 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class MethodDefinition implements AstNode { static final Reference RUNTIME_EXCEPTION_REFERENCE = diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodInvocationExpr.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodInvocationExpr.java index 2a0c2a45c48f..e40856a48707 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodInvocationExpr.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/MethodInvocationExpr.java @@ -19,8 +19,10 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class MethodInvocationExpr implements Expr { public abstract IdentifierNode methodIdentifier(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/Reference.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/Reference.java index 4432c68616aa..92732a90de9a 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/Reference.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/Reference.java @@ -16,8 +16,10 @@ import com.google.common.collect.ImmutableList; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public interface Reference extends AstNode { @Override void accept(AstNodeVisitor visitor); @@ -38,11 +40,9 @@ public interface Reference extends AstNode { // The nested types in left-to-right order, if any. // Example: com.google.Foo.Bar.Car.ThisType will have the outer types listed in the order // [Foo, Bar, Car]. - @Nullable - ImmutableList enclosingClassNames(); + @Nullable ImmutableList enclosingClassNames(); - @Nullable - Reference wildcardUpperBound(); + @Nullable Reference wildcardUpperBound(); Reference copyAndSetGenerics(List generics); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ScopeNode.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ScopeNode.java index cf4c5326dc21..83249892710f 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ScopeNode.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ScopeNode.java @@ -14,6 +14,8 @@ package com.google.api.generator.engine.ast; +import org.jspecify.annotations.Nullable; + public class ScopeNode implements AstNode { private enum ScopeKind { LOCAL, // Placeholder for local scopes. @@ -54,7 +56,7 @@ public void accept(AstNodeVisitor visitor) { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof ScopeNode)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ThrowExpr.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ThrowExpr.java index 5e4808d28aa9..1b5400ce2cf2 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ThrowExpr.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/ThrowExpr.java @@ -16,8 +16,10 @@ import com.google.auto.value.AutoValue; import com.google.common.base.Preconditions; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class ThrowExpr implements Expr { // TODO(miraleung): Refactor with StringObjectValue and possibly with NewObjectExpr. diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TryCatchStatement.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TryCatchStatement.java index 77cd964aed49..6cebf09774c8 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TryCatchStatement.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TryCatchStatement.java @@ -20,9 +20,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class TryCatchStatement implements Statement { @@ -61,7 +62,7 @@ public abstract static class Builder { public abstract Builder setIsSampleCode(boolean isSampleCode); - public Builder addCatch(@Nonnull VariableExpr variableExpr, List body) { + public Builder addCatch(VariableExpr variableExpr, List body) { List catchVarExprs = new ArrayList<>(catchVariableExprs()); catchVarExprs.add(variableExpr); setCatchVariableExprs(catchVarExprs); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TypeNode.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TypeNode.java index 12236842fccd..21b5f136ce73 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TypeNode.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/TypeNode.java @@ -21,8 +21,10 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class TypeNode implements AstNode, Comparable { static final Reference EXCEPTION_REFERENCE = ConcreteReference.withClazz(Exception.class); @@ -254,7 +256,7 @@ public void accept(AstNodeVisitor visitor) { // Java overrides. @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof TypeNode)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VaporReference.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VaporReference.java index 0c5b976a180c..61a1f11ee491 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VaporReference.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VaporReference.java @@ -20,8 +20,10 @@ import java.util.Collections; import java.util.List; import java.util.Objects; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class VaporReference implements Reference { private static final String DOT = "."; @@ -109,7 +111,7 @@ public boolean isWildcard() { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof VaporReference)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VariableExpr.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VariableExpr.java index f882c97e8d3b..5abc82fe3226 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VariableExpr.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/ast/VariableExpr.java @@ -22,8 +22,10 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.stream.Collectors; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class VariableExpr implements Expr { public abstract Variable variable(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java index 1d834043c863..b6e9d23a4ad6 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/engine/writer/ImportWriterVisitor.java @@ -69,9 +69,10 @@ import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class ImportWriterVisitor implements AstNodeVisitor { private static final String DOT = "."; private static final String PKG_JAVA_LANG = "java.lang"; @@ -91,12 +92,12 @@ public void clear() { importShortNames.clear(); } - public void initialize(@Nonnull String currentPackage) { + public void initialize(String currentPackage) { this.currentPackage = currentPackage; currentClassName = null; } - public void initialize(@Nonnull String currentPackage, @Nonnull String currentClassName) { + public void initialize(String currentPackage, String currentClassName) { this.currentPackage = currentPackage; this.currentClassName = currentClassName; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/ClientLibraryPackageInfoComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/ClientLibraryPackageInfoComposer.java index 5bd24bdbd0f0..ff5abc234842 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/ClientLibraryPackageInfoComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/ClientLibraryPackageInfoComposer.java @@ -32,7 +32,10 @@ import com.google.common.base.Strings; import java.util.logging.Logger; import javax.annotation.Generated; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class ClientLibraryPackageInfoComposer { private static final Logger LOGGER = @@ -47,7 +50,7 @@ public class ClientLibraryPackageInfoComposer { private static final String SAMPLE_CODE_HEADER_PATTERN = "Sample for %s:"; private static final String SERVICE_DESCRIPTION_HEADER_PATTERN = "Service Description: %s"; - public static GapicPackageInfo generatePackageInfo(GapicContext context) { + public static @Nullable GapicPackageInfo generatePackageInfo(GapicContext context) { if (!context.containsServices()) { LOGGER.warning("Generating empty package info since no services were found"); return null; diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/Composer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/Composer.java index 288b02e713f0..edb180676c82 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/Composer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/Composer.java @@ -43,7 +43,10 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class Composer { public static List composeServiceClasses(GapicContext context) { List clazzes = new ArrayList<>(); @@ -53,7 +56,7 @@ public static List composeServiceClasses(GapicContext context) { return addApacheLicense(prepareExecutableSamples(clazzes)); } - public static GapicPackageInfo composePackageInfo(GapicContext context) { + public static @Nullable GapicPackageInfo composePackageInfo(GapicContext context) { if (!context.containsServices()) { return null; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 64ea4adf7cc5..e3ec116173d5 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; public class ServiceClientCommentComposer { // Tokens. @@ -103,7 +104,7 @@ public static List createClassHeaderComments( String classMethodSampleCode, String credentialsSampleCode, String endpointSampleCode, - String transportSampleCode, + @Nullable String transportSampleCode, String primaryTransport, String secondaryTransport) { JavaDocComment.Builder classHeaderJavadocBuilder = JavaDocComment.builder(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubClassComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubClassComposer.java index 51e6f410c079..354746e0fbc6 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubClassComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubClassComposer.java @@ -55,6 +55,7 @@ import java.util.stream.Collectors; import javax.annotation.Generated; import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; public abstract class AbstractServiceStubClassComposer implements ClassComposer { @@ -214,7 +215,7 @@ private MethodDefinition createCallableGetterHelper( } private List createOperationsStubGetters( - TypeStore typeStore, TypeNode operationsStubType) { + TypeStore typeStore, @Nullable TypeNode operationsStubType) { List getters = new ArrayList<>(); Iterator operationStubNameIt = diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 22cf6b0dfc61..303cf926cf9e 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -123,8 +123,8 @@ import java.util.function.Function; import java.util.stream.Collectors; import javax.annotation.Generated; -import javax.annotation.Nullable; import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; public abstract class AbstractServiceStubSettingsClassComposer implements ClassComposer { private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create(); @@ -1899,8 +1899,8 @@ protected List createNestedClassCreateDefaultMethods( protected MethodDefinition createNestedClassCreateDefaultMethod( TypeStore typeStore, String methodName, - String defaultTransportChannelProvider, - String defaultTransportChannelProviderBuilder, + @Nullable String defaultTransportChannelProvider, + @Nullable String defaultTransportChannelProviderBuilder, String defaultApiClientHeaderProviderBuilder) { List bodyStatements = new ArrayList<>(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 6cdf49e38d4c..57bd55cce095 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -99,8 +99,8 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.annotation.Generated; -import javax.annotation.Nullable; import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; public abstract class AbstractTransportServiceStubClassComposer implements ClassComposer { private static final List AIP_STANDARDS_METHODS = @@ -912,8 +912,7 @@ protected List createLongRunningClient(Service service, TypeStore typ return ImmutableList.of(); } - @Nullable - protected VariableExpr declareLongRunningClient() { + protected @Nullable VariableExpr declareLongRunningClient() { return null; } @@ -1537,8 +1536,7 @@ private static Predicate shouldAutoPopulate(Message methodRequestMessage * The Resource Name Extractor should only be generated if the request contains a field that has * resource reference (see {@link Field#hasResourceReference()}) */ - @Nullable - protected LambdaExpr createResourceNameExtractorClassInstance( + protected @Nullable LambdaExpr createResourceNameExtractorClassInstance( Service service, Method method, ImmutableMap messageTypes, @@ -1679,7 +1677,7 @@ protected LambdaExpr createResourceNameExtractorClassInstance( } // Find the first field that has resource reference in a request message - private static Field getDestinationResourceIdField( + private static @Nullable Field getDestinationResourceIdField( Method method, ImmutableMap messageTypes) { if (method.inputType().reference() == null || method.inputType().reference().fullName() == null) { @@ -1987,7 +1985,7 @@ private static boolean isAipStandardMethod(List standards, String method return standards.stream().anyMatch(standard -> standard.equalsIgnoreCase(methodName)); } - private static Set extractLiteralSegments(String pattern) { + private static Set extractLiteralSegments(@Nullable String pattern) { if (pattern == null || pattern.isEmpty()) { return new HashSet<>(); } @@ -1999,7 +1997,8 @@ private static Set extractLiteralSegments(String pattern) { } } - private static String extractCanonicalResourceName(String pattern, Set knownResources) { + private static String extractCanonicalResourceName( + @Nullable String pattern, @Nullable Set knownResources) { if (pattern == null || pattern.isEmpty() || knownResources == null diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/TransportContext.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/TransportContext.java index ab98a86b18b5..d156d3f3b98d 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/TransportContext.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/TransportContext.java @@ -20,8 +20,10 @@ import com.google.api.generator.gapic.model.Transport; import com.google.auto.value.AutoValue; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class TransportContext { diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposer.java index 3669e9f77e99..bd2c80e28e33 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/defaultvalue/DefaultValueComposer.java @@ -54,7 +54,10 @@ import java.util.Optional; import java.util.regex.Pattern; import java.util.stream.Collectors; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class DefaultValueComposer { private static final TypeNode OPERATION_TYPE = TypeNode.withReference(ConcreteReference.withClazz(Operation.class)); @@ -120,7 +123,7 @@ public static Expr createValue( Map resourceNames, Map messageTypes, Map valuePatterns, - HttpBindings bindings) { + @Nullable HttpBindings bindings) { if (field.isRepeated()) { ConcreteReference.Builder refBuilder = ConcreteReference.builder().setClazz(field.isMap() ? HashMap.class : ArrayList.class); @@ -263,7 +266,7 @@ static Expr createResourceHelperValue( List resnames, String fieldOrMessageName, boolean allowAnonResourceNameClass, - HttpBindings bindings) { + @Nullable HttpBindings bindings) { if (isChildType) { resourceName = findParentResource(resourceName, resnames).orElse(resourceName); @@ -547,7 +550,7 @@ public static Expr createSimplePagedResponseValue( @VisibleForTesting static AnonymousClassExpr createAnonymousResourceNameClassValue( - String fieldOrMessageName, HttpBindings matchedBindings) { + String fieldOrMessageName, @Nullable HttpBindings matchedBindings) { TypeNode stringMapType = TypeNode.withReference( ConcreteReference.builder() @@ -649,7 +652,7 @@ static AnonymousClassExpr createAnonymousResourceNameClassValue( .build(); } - public static String constructValueMatchingPattern(String fieldName, String pattern) { + public static String constructValueMatchingPattern(String fieldName, @Nullable String pattern) { if (pattern == null || pattern.isEmpty()) { return fieldName + fieldName.hashCode(); } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/MockServiceImplClassComposer.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/MockServiceImplClassComposer.java index d6573f026dae..ae09a6c86a05 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/MockServiceImplClassComposer.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/MockServiceImplClassComposer.java @@ -62,7 +62,10 @@ import java.util.function.Function; import java.util.stream.Collectors; import javax.annotation.Generated; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class MockServiceImplClassComposer implements ClassComposer { private static final MockServiceImplClassComposer INSTANCE = new MockServiceImplClassComposer(); private static final String IMPL_BASE_PATTERN = "%sImplBase"; @@ -464,7 +467,7 @@ private static MethodDefinition createOnCompletedJavaMethod( private static Statement createHandleObjectStatement( Method protoMethod, - VariableExpr requestArgVarExpr, + @Nullable VariableExpr requestArgVarExpr, VariableExpr responseObserverVarExpr, VariableExpr localResponseVarExpr) { List ifBodyExprs = new ArrayList<>(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Field.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Field.java index ca2a98b56d27..ebb9240319bc 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Field.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Field.java @@ -19,8 +19,10 @@ import com.google.auto.value.AutoValue; import java.util.Objects; import java.util.Optional; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class Field { // The field's canonical name, potentially post-processed by conflict resolution logic. @@ -87,7 +89,7 @@ public boolean canBeAutoPopulated() { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof Field)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicBatchingSettings.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicBatchingSettings.java index 2f7d4de00d84..19214538ad4c 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicBatchingSettings.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicBatchingSettings.java @@ -17,8 +17,10 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class GapicBatchingSettings { public enum FlowControlLimitExceededBehavior { diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicContext.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicContext.java index 680573bfdb50..dd096e11400f 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicContext.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicContext.java @@ -25,8 +25,10 @@ import java.util.Set; import java.util.TreeMap; import java.util.stream.Collectors; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class GapicContext { // Keep a non-AutoValue reference to GapicMetadata, since we need to update @@ -69,8 +71,7 @@ public GapicMetadata gapicMetadata() { @Nullable public abstract GapicServiceConfig serviceConfig(); - @Nullable - public abstract com.google.api.Service serviceYamlProto(); + public abstract com.google.api.@Nullable Service serviceYamlProto(); @Nullable public abstract String repo(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java index ae9194eeb2b7..9e37b61f55ef 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/HttpBindings.java @@ -23,8 +23,10 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class HttpBindings { public enum HttpVerb { diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/LongrunningOperation.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/LongrunningOperation.java index e23e8a6ee3f8..70e259c186ca 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/LongrunningOperation.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/LongrunningOperation.java @@ -16,8 +16,10 @@ import com.google.api.generator.engine.ast.TypeNode; import com.google.auto.value.AutoValue; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class LongrunningOperation { public abstract TypeNode responseType(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Message.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Message.java index 2866e8462410..664c6f888508 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Message.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Message.java @@ -31,8 +31,10 @@ import java.util.Map; import java.util.stream.Collectors; import java.util.stream.IntStream; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class Message { diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java index 66acd065a3f8..45d8dabfaf98 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -19,8 +19,10 @@ import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class Method { public enum Stream { diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/MethodArgument.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/MethodArgument.java index e13deda713c8..e1bde1392246 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/MethodArgument.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/MethodArgument.java @@ -18,6 +18,7 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import java.util.List; +import org.jspecify.annotations.Nullable; @AutoValue public abstract class MethodArgument implements Comparable { @@ -47,7 +48,7 @@ public int compareTo(MethodArgument other) { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof MethodArgument)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceName.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceName.java index 9a01bf6dba08..4c27b376fd62 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceName.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceName.java @@ -26,8 +26,10 @@ import com.google.common.collect.ImmutableMap; import java.util.List; import java.util.Objects; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class ResourceName { static final String SLASH = "/"; @@ -128,7 +130,7 @@ public static ResourceName createWildcard(String resourceTypeString, String pakk } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof ResourceName)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceReference.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceReference.java index 8140a8c2318d..cb996488d085 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceReference.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/ResourceReference.java @@ -16,6 +16,7 @@ import com.google.api.generator.gapic.utils.ResourceNameConstants; import com.google.auto.value.AutoValue; +import org.jspecify.annotations.Nullable; @AutoValue public abstract class ResourceReference { @@ -29,7 +30,7 @@ public boolean isOnlyWildcard() { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (!(o instanceof ResourceReference)) { return false; } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java index 656bf6bbd3af..835f086ed5e8 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java @@ -21,14 +21,15 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import java.util.List; -import javax.annotation.Nullable; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked @AutoValue public abstract class Service { public abstract String name(); - @Nullable - public abstract String apiVersion(); + public abstract @Nullable String apiVersion(); public abstract String defaultHost(); @@ -48,8 +49,7 @@ public abstract class Service { public abstract ImmutableList methods(); - @Nullable - public abstract String description(); + public abstract @Nullable String description(); public boolean hasDescription() { return !Strings.isNullOrEmpty(description()); @@ -79,7 +79,7 @@ public String packageVersion() { return ""; } - public Method operationPollingMethod() { + public @Nullable Method operationPollingMethod() { for (Method method : methods()) { if (method.isOperationPollingMethod()) { return method; @@ -88,7 +88,7 @@ public Method operationPollingMethod() { return null; } - public TypeNode operationServiceStubType() { + public @Nullable TypeNode operationServiceStubType() { for (Method method : methods()) { if (method.hasLro() && method.lro().operationServiceStubType() != null) { // All methods within the same service must have the same operationServiceTypeName if @@ -99,7 +99,7 @@ public TypeNode operationServiceStubType() { return null; } - public TypeNode operationType() { + public @Nullable TypeNode operationType() { for (Method method : methods()) { if (method.hasLro() && method.lro().operationServiceStubType() != null) { return method.outputType(); diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/SourceCodeInfoLocation.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/SourceCodeInfoLocation.java index f39cb3953066..2256716d1de3 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/SourceCodeInfoLocation.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/SourceCodeInfoLocation.java @@ -15,20 +15,21 @@ package com.google.api.generator.gapic.model; import com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location; -import javax.annotation.Nonnull; +import org.jspecify.annotations.NullMarked; /** * A light wrapper around SourceCodeInfo.Location to provide cleaner protobuf comments. Please see * additional documentation on descriptor.proto. */ +@NullMarked public class SourceCodeInfoLocation { - @Nonnull private final Location location; + private final Location location; private SourceCodeInfoLocation(Location location) { this.location = location; } - public static SourceCodeInfoLocation create(@Nonnull Location location) { + public static SourceCodeInfoLocation create(Location location) { return new SourceCodeInfoLocation(location); } diff --git a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java index 0ea1c5aa456e..ab35b7afbc2d 100644 --- a/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java +++ b/sdk-platform-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protoparser/HttpRuleParser.java @@ -40,13 +40,16 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; +@NullMarked public class HttpRuleParser { private static final String ASTERISK = "*"; private static final Pattern TEMPLATE_VALS_PATTERN = Pattern.compile("\\{(?[\\w.]*)=(?