com.google.api
gax
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ApiStreamObserverDelegate.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ApiStreamObserverDelegate.java
index c19818751b1d..fd8c6abb0813 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ApiStreamObserverDelegate.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ApiStreamObserverDelegate.java
@@ -31,12 +31,14 @@
import com.google.api.gax.rpc.ApiStreamObserver;
import io.grpc.stub.StreamObserver;
+import org.jspecify.annotations.NullMarked;
/**
* A delegate class that transfers calls to the ApiStreamObserver object.
*
* Package-private for internal use.
*/
+@NullMarked
class ApiStreamObserverDelegate implements StreamObserver {
private final ApiStreamObserver delegate;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/CallOptionsUtil.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/CallOptionsUtil.java
index 9d6e85bdaac3..4904e34f0990 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/CallOptionsUtil.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/CallOptionsUtil.java
@@ -37,8 +37,10 @@
import io.grpc.Metadata.Key;
import java.util.Collections;
import java.util.Map;
+import org.jspecify.annotations.NullMarked;
/** A utility class that provides helper functions to work with custom call options. */
+@NullMarked
class CallOptionsUtil {
// this is a call option name, not a header name, it is not transferred over the wire
private static final CallOptions.Key, String>> DYNAMIC_HEADERS_CALL_OPTION_KEY =
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelFactory.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelFactory.java
index 416ce44699fe..3ecedd5201e8 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelFactory.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelFactory.java
@@ -32,12 +32,14 @@
import com.google.api.core.InternalApi;
import io.grpc.ManagedChannel;
import java.io.IOException;
+import org.jspecify.annotations.NullMarked;
/**
* This interface represents a factory for creating one ManagedChannel
*
* This is public only for technical reasons, for advanced usage.
*/
+@NullMarked
@InternalApi("For internal use by google-cloud-java clients only")
public interface ChannelFactory {
ManagedChannel createSingleChannel() throws IOException;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPool.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPool.java
index d611c96ff4c8..fab73a55dccf 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPool.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPool.java
@@ -56,7 +56,8 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A {@link ManagedChannel} that will send requests round-robin via a set of channels.
@@ -68,6 +69,7 @@
*
*
Package-private for internal use.
*/
+@NullMarked
class ChannelPool extends ManagedChannel {
static final String CHANNEL_POOL_CONSECUTIVE_RESIZING_WARNING =
"The gRPC ChannelPool used in the client has been flagged to be repeatedly resizing (5+ times). See https://github.com/googleapis/google-cloud-java/blob/main/docs/grpc_channel_pool_guide.md for more information about this behavior.";
@@ -78,8 +80,8 @@ class ChannelPool extends ManagedChannel {
private final ChannelFactory channelFactory;
private final FixedExecutorProvider backgroundExecutorProvider;
- private ScheduledFuture> refreshFuture = null;
- private ScheduledFuture> resizeFuture = null;
+ private @Nullable ScheduledFuture> refreshFuture = null;
+ private @Nullable ScheduledFuture> resizeFuture = null;
private final Object entryWriteLock = new Object();
@VisibleForTesting final AtomicReference> entries = new AtomicReference<>();
@@ -621,7 +623,7 @@ public ClientCall newCall(
/** ClientCall wrapper that makes sure to decrement the outstanding RPC count on completion. */
static class ReleasingClientCall extends SimpleForwardingClientCall {
- @Nullable private CancellationException cancellationException;
+ private @Nullable CancellationException cancellationException;
final Entry entry;
private final AtomicBoolean wasClosed = new AtomicBoolean();
private final AtomicBoolean wasReleased = new AtomicBoolean();
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPoolSettings.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPoolSettings.java
index 559e1197bc59..443caaa429af 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPoolSettings.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPoolSettings.java
@@ -34,6 +34,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.base.Preconditions;
import java.time.Duration;
+import org.jspecify.annotations.NullMarked;
/**
* Settings to control {@link ChannelPool} behavior.
@@ -52,6 +53,7 @@
*
* The settings in this class will be applied every minute.
*/
+@NullMarked
@BetaApi("surface for channel pool sizing is not yet stable")
@AutoValue
public abstract class ChannelPoolSettings {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPrimer.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPrimer.java
index 5964de957c71..12e05fdf72c5 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPrimer.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ChannelPrimer.java
@@ -31,12 +31,14 @@
import com.google.api.core.InternalApi;
import io.grpc.ManagedChannel;
+import org.jspecify.annotations.NullMarked;
/**
* An interface to prepare a ManagedChannel for normal requests by priming the channel
*
*
This is public only for technical reasons, for advanced usage.
*/
+@NullMarked
@InternalApi("For internal use by google-cloud-java clients only")
public interface ChannelPrimer {
void primeChannel(ManagedChannel managedChannel);
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ExceptionResponseObserver.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ExceptionResponseObserver.java
index f9357f9d5dec..bc329581864e 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ExceptionResponseObserver.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ExceptionResponseObserver.java
@@ -33,8 +33,10 @@
import com.google.api.gax.rpc.StateCheckingResponseObserver;
import com.google.api.gax.rpc.StreamController;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
/** Package-private for internal use. */
+@NullMarked
class ExceptionResponseObserver
extends StateCheckingResponseObserver {
private ResponseObserver innerObserver;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GaxGrpcProperties.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GaxGrpcProperties.java
index e36665501789..74aada53fb3d 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GaxGrpcProperties.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GaxGrpcProperties.java
@@ -33,8 +33,10 @@
import com.google.api.gax.core.GaxProperties;
import io.grpc.Channel;
import java.util.regex.Pattern;
+import org.jspecify.annotations.NullMarked;
/** Provides properties of the GAX-GRPC library. */
+@NullMarked
@InternalApi
public class GaxGrpcProperties {
private static final String GAX_GRPC_VERSION =
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcApiExceptionFactory.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcApiExceptionFactory.java
index 9c3dd0a8433e..6721fcb31cf4 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcApiExceptionFactory.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcApiExceptionFactory.java
@@ -41,6 +41,7 @@
import io.grpc.StatusException;
import io.grpc.StatusRuntimeException;
import java.util.Set;
+import org.jspecify.annotations.NullMarked;
/**
* Core logic for transforming GRPC exceptions into {@link ApiException}s. This logic is shared
@@ -48,6 +49,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcApiExceptionFactory {
@VisibleForTesting static final String ERROR_DETAIL_KEY = "grpc-status-details-bin";
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java
index 7ff7c54de6f0..ed7eea3a54de 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java
@@ -65,7 +65,8 @@
import java.util.Objects;
import java.util.Set;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* GrpcCallContext encapsulates context data used to make a grpc call.
@@ -75,6 +76,7 @@
* #withTransportChannel}, return copies of the object, but with one field changed. The immutability
* and thread safety of the arguments solely depends on the arguments themselves.
*/
+@NullMarked
@BetaApi("Reference ApiCallContext instead - this class is likely to experience breaking changes")
public final class GrpcCallContext implements ApiCallContext {
private static final GrpcStatusCode UNAUTHENTICATED_STATUS_CODE =
@@ -85,14 +87,14 @@ public final class GrpcCallContext implements ApiCallContext {
public static final CallOptions.Key TRACER_KEY = CallOptions.Key.create("gax.tracer");
private final Channel channel;
- @Nullable private final Credentials credentials;
+ private final @Nullable Credentials credentials;
private final CallOptions callOptions;
- @Nullable private final java.time.Duration timeout;
- @Nullable private final java.time.Duration streamWaitTimeout;
- @Nullable private final java.time.Duration streamIdleTimeout;
- @Nullable private final Integer channelAffinity;
- @Nullable private final RetrySettings retrySettings;
- @Nullable private final ImmutableSet retryableCodes;
+ private final java.time.@Nullable Duration timeout;
+ private final java.time.@Nullable Duration streamWaitTimeout;
+ private final java.time.@Nullable Duration streamIdleTimeout;
+ private final @Nullable Integer channelAffinity;
+ private final @Nullable RetrySettings retrySettings;
+ private final @Nullable ImmutableSet retryableCodes;
private final ImmutableMap> extraHeaders;
private final ApiCallContextOptions options;
private final EndpointContext endpointContext;
@@ -135,12 +137,12 @@ public static GrpcCallContext of(Channel channel, CallOptions callOptions) {
}
private GrpcCallContext(
- Channel channel,
+ @Nullable Channel channel,
@Nullable Credentials credentials,
CallOptions callOptions,
- @Nullable java.time.Duration timeout,
- @Nullable java.time.Duration streamWaitTimeout,
- @Nullable java.time.Duration streamIdleTimeout,
+ java.time.@Nullable Duration timeout,
+ java.time.@Nullable Duration streamWaitTimeout,
+ java.time.@Nullable Duration streamIdleTimeout,
@Nullable Integer channelAffinity,
ImmutableMap> extraHeaders,
ApiCallContextOptions options,
@@ -257,12 +259,12 @@ public GrpcCallContext withEndpointContext(EndpointContext endpointContext) {
/** This method is obsolete. Use {@link #withTimeoutDuration(java.time.Duration)} instead. */
@Override
@ObsoleteApi("Use withTimeoutDuration(java.time.Duration) instead")
- public GrpcCallContext withTimeout(@Nullable org.threeten.bp.Duration timeout) {
+ public GrpcCallContext withTimeout(org.threeten.bp.@Nullable Duration timeout) {
return withTimeoutDuration(toJavaTimeDuration(timeout));
}
@Override
- public GrpcCallContext withTimeoutDuration(@Nullable java.time.Duration timeout) {
+ public GrpcCallContext withTimeoutDuration(java.time.@Nullable Duration timeout) {
// Default RetrySettings use 0 for RPC timeout. Treat that as disabled timeouts.
if (timeout != null && (timeout.isZero() || timeout.isNegative())) {
timeout = null;
@@ -289,17 +291,14 @@ public GrpcCallContext withTimeoutDuration(@Nullable java.time.Duration timeout)
isDirectPath);
}
- /** This method is obsolete. Use {@link #getTimeoutDuration()} instead. */
- @Nullable
@Override
@ObsoleteApi("Use getTimeoutDuration() instead")
- public org.threeten.bp.Duration getTimeout() {
+ public org.threeten.bp.@Nullable Duration getTimeout() {
return toThreetenDuration(getTimeoutDuration());
}
- @Nullable
@Override
- public java.time.Duration getTimeoutDuration() {
+ public java.time.@Nullable Duration getTimeoutDuration() {
return timeout;
}
@@ -310,13 +309,13 @@ public java.time.Duration getTimeoutDuration() {
@Override
@ObsoleteApi("Use withStreamWaitTimeoutDuration(java.time.Duration) instead")
public GrpcCallContext withStreamWaitTimeout(
- @Nullable org.threeten.bp.Duration streamWaitTimeout) {
+ org.threeten.bp.@Nullable Duration streamWaitTimeout) {
return withStreamWaitTimeoutDuration(toJavaTimeDuration(streamWaitTimeout));
}
@Override
public GrpcCallContext withStreamWaitTimeoutDuration(
- @Nullable java.time.Duration streamWaitTimeout) {
+ java.time.@Nullable Duration streamWaitTimeout) {
if (streamWaitTimeout != null) {
Preconditions.checkArgument(
streamWaitTimeout.compareTo(java.time.Duration.ZERO) >= 0, "Invalid timeout: < 0 s");
@@ -345,13 +344,13 @@ public GrpcCallContext withStreamWaitTimeoutDuration(
@Override
@ObsoleteApi("Use withStreamIdleTimeoutDuration(java.time.Duration) instead")
public GrpcCallContext withStreamIdleTimeout(
- @Nullable org.threeten.bp.Duration streamIdleTimeout) {
+ org.threeten.bp.@Nullable Duration streamIdleTimeout) {
return withStreamIdleTimeoutDuration(toJavaTimeDuration(streamIdleTimeout));
}
@Override
public GrpcCallContext withStreamIdleTimeoutDuration(
- @Nullable java.time.Duration streamIdleTimeout) {
+ java.time.@Nullable Duration streamIdleTimeout) {
if (streamIdleTimeout != null) {
Preconditions.checkArgument(
streamIdleTimeout.compareTo(java.time.Duration.ZERO) >= 0, "Invalid timeout: < 0 s");
@@ -573,9 +572,8 @@ public CallOptions getCallOptions() {
/** This method is obsolete. Use {@link #getStreamWaitTimeoutDuration()} instead. */
@Override
- @Nullable
@ObsoleteApi("Use getStreamWaitTimeoutDuration() instead")
- public org.threeten.bp.Duration getStreamWaitTimeout() {
+ public org.threeten.bp.@Nullable Duration getStreamWaitTimeout() {
return toThreetenDuration(getStreamWaitTimeoutDuration());
}
@@ -585,16 +583,14 @@ public org.threeten.bp.Duration getStreamWaitTimeout() {
* @see ApiCallContext#withStreamWaitTimeoutDuration(java.time.Duration)
*/
@Override
- @Nullable
- public java.time.Duration getStreamWaitTimeoutDuration() {
+ public java.time.@Nullable Duration getStreamWaitTimeoutDuration() {
return streamWaitTimeout;
}
/** This method is obsolete. Use {@link #getStreamIdleTimeoutDuration()} instead. */
@Override
- @Nullable
@ObsoleteApi("Use getStreamIdleTimeoutDuration() instead")
- public org.threeten.bp.Duration getStreamIdleTimeout() {
+ public org.threeten.bp.@Nullable Duration getStreamIdleTimeout() {
return toThreetenDuration(getStreamIdleTimeoutDuration());
}
@@ -604,14 +600,12 @@ public org.threeten.bp.Duration getStreamIdleTimeout() {
* @see ApiCallContext#withStreamIdleTimeoutDuration(java.time.Duration)
*/
@Override
- @Nullable
- public java.time.Duration getStreamIdleTimeoutDuration() {
+ public java.time.@Nullable Duration getStreamIdleTimeoutDuration() {
return streamIdleTimeout;
}
/** The channel affinity for this context. */
- @Nullable
- public Integer getChannelAffinity() {
+ public @Nullable Integer getChannelAffinity() {
return channelAffinity;
}
@@ -769,7 +763,7 @@ public int hashCode() {
}
@Override
- public boolean equals(Object o) {
+ public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallSettings.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallSettings.java
index 7f2cc2826a44..9e2206df6d0b 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallSettings.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallSettings.java
@@ -34,8 +34,10 @@
import com.google.api.gax.rpc.RequestParamsExtractor;
import com.google.api.gax.rpc.ResourceNameExtractor;
import io.grpc.MethodDescriptor;
+import org.jspecify.annotations.NullMarked;
/** Grpc-specific settings for creating callables. */
+@NullMarked
public class GrpcCallSettings {
private final MethodDescriptor methodDescriptor;
private final RequestParamsExtractor paramsExtractor;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallableFactory.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallableFactory.java
index ef2efa9663b1..0a92a1796689 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallableFactory.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallableFactory.java
@@ -61,8 +61,10 @@
import com.google.longrunning.stub.OperationsStub;
import io.grpc.MethodDescriptor;
import javax.annotation.Nonnull;
+import org.jspecify.annotations.NullMarked;
/** Class with utility methods to create grpc-based direct callables. */
+@NullMarked
public class GrpcCallableFactory {
private GrpcCallableFactory() {}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcChannelUUIDInterceptor.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcChannelUUIDInterceptor.java
index ac450689e07a..4a1e534c107b 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcChannelUUIDInterceptor.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcChannelUUIDInterceptor.java
@@ -36,7 +36,9 @@
import io.grpc.ClientInterceptor;
import io.grpc.MethodDescriptor;
import java.util.UUID;
+import org.jspecify.annotations.NullMarked;
+@NullMarked
class GrpcChannelUUIDInterceptor implements ClientInterceptor {
private final String uuid = UUID.randomUUID().toString();
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcClientCalls.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcClientCalls.java
index 47e62ae9f658..87c6d2f7bdec 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcClientCalls.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcClientCalls.java
@@ -48,12 +48,14 @@
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.jspecify.annotations.NullMarked;
/**
* {@code GrpcClientCalls} creates a new {@code ClientCall} from the given call context.
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcClientCalls {
private static final Logger LOGGER = Logger.getLogger(GrpcDirectCallable.class.getName());
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectBidiStreamingCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectBidiStreamingCallable.java
index 178044dc9229..d5000b391eec 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectBidiStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectBidiStreamingCallable.java
@@ -37,6 +37,7 @@
import com.google.common.base.Preconditions;
import io.grpc.ClientCall;
import io.grpc.MethodDescriptor;
+import org.jspecify.annotations.NullMarked;
/**
* {@code GrpcDirectBidiStreamingCallable} creates bidirectional streaming gRPC calls.
@@ -45,6 +46,7 @@
*
*
Package-private for internal use.
*/
+@NullMarked
class GrpcDirectBidiStreamingCallable
extends BidiStreamingCallable {
private final MethodDescriptor descriptor;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectCallable.java
index 33041145dd4e..dd29e663cb36 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectCallable.java
@@ -38,12 +38,14 @@
import io.grpc.ClientCall;
import io.grpc.MethodDescriptor;
import io.grpc.stub.ClientCalls;
+import org.jspecify.annotations.NullMarked;
/**
* {@code GrpcDirectCallable} creates gRPC calls.
*
* Package-private for internal use.
*/
+@NullMarked
@InternalApi
class GrpcDirectCallable extends UnaryCallable {
private final MethodDescriptor descriptor;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectClientStreamingCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectClientStreamingCallable.java
index 93c1a956276c..d3bc55f6c5ae 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectClientStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectClientStreamingCallable.java
@@ -36,6 +36,7 @@
import io.grpc.ClientCall;
import io.grpc.MethodDescriptor;
import io.grpc.stub.ClientCalls;
+import org.jspecify.annotations.NullMarked;
/**
* {@code GrpcDirectClientStreamingCallable} creates client-streaming gRPC calls.
@@ -44,6 +45,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcDirectClientStreamingCallable
extends ClientStreamingCallable {
private final MethodDescriptor descriptor;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallable.java
index 2b562f07ac44..624d67bd38d0 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallable.java
@@ -36,6 +36,7 @@
import com.google.common.base.Preconditions;
import io.grpc.ClientCall;
import io.grpc.MethodDescriptor;
+import org.jspecify.annotations.NullMarked;
/**
* {@code GrpcDirectServerStreamingCallable} creates server-streaming gRPC calls.
@@ -48,6 +49,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcDirectServerStreamingCallable
extends ServerStreamingCallable {
private final MethodDescriptor descriptor;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectStreamController.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectStreamController.java
index 83c09d48045e..61054d8ddb48 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectStreamController.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcDirectStreamController.java
@@ -36,6 +36,7 @@
import io.grpc.Metadata;
import io.grpc.Status;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
/**
* Wraps a GRPC ClientCall in a {@link StreamController}. It feeds events to a {@link
@@ -43,6 +44,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcDirectStreamController implements StreamController {
private static final Runnable NOOP_RUNNABLE =
new Runnable() {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionBidiStreamingCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionBidiStreamingCallable.java
index b6a9ee024a02..55fc37d31839 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionBidiStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionBidiStreamingCallable.java
@@ -37,12 +37,14 @@
import com.google.api.gax.rpc.ResponseObserver;
import com.google.api.gax.rpc.StatusCode;
import java.util.Set;
+import org.jspecify.annotations.NullMarked;
/**
* Transforms all {@code Throwable}s thrown during a call into an instance of {@link ApiException}.
*
* Package-private for internal use.
*/
+@NullMarked
final class GrpcExceptionBidiStreamingCallable
extends BidiStreamingCallable {
private final BidiStreamingCallable innerCallable;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionCallable.java
index b069294d0001..7c084bbb1a07 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionCallable.java
@@ -42,12 +42,14 @@
import com.google.common.base.Preconditions;
import java.util.Set;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
/**
* Transforms all {@code Throwable}s thrown during a call into an instance of {@link ApiException}.
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcExceptionCallable extends UnaryCallable {
private final UnaryCallable callable;
private final GrpcApiExceptionFactory exceptionFactory;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionClientStreamingCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionClientStreamingCallable.java
index d3a785638029..1bd8aad41e4e 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionClientStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionClientStreamingCallable.java
@@ -35,12 +35,14 @@
import com.google.api.gax.rpc.ClientStreamingCallable;
import com.google.api.gax.rpc.StatusCode;
import java.util.Set;
+import org.jspecify.annotations.NullMarked;
/**
* Transforms all {@code Throwable}s thrown during a call into an instance of {@link ApiException}.
*
* Package-private for internal use.
*/
+@NullMarked
final class GrpcExceptionClientStreamingCallable
extends ClientStreamingCallable {
private final ClientStreamingCallable innerCallable;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionServerStreamingCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionServerStreamingCallable.java
index 088817487aa1..2bf7d0cd05c2 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionServerStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionServerStreamingCallable.java
@@ -35,12 +35,14 @@
import com.google.api.gax.rpc.ServerStreamingCallable;
import com.google.api.gax.rpc.StatusCode.Code;
import java.util.Set;
+import org.jspecify.annotations.NullMarked;
/**
* Transforms all {@code Throwable}s thrown during a call into an instance of {@link ApiException}.
*
* Package-private for internal use.
*/
+@NullMarked
class GrpcExceptionServerStreamingCallable
extends ServerStreamingCallable {
private final ServerStreamingCallable inner;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionTranslatingStreamObserver.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionTranslatingStreamObserver.java
index 7725344eda04..eb230aaec592 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionTranslatingStreamObserver.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcExceptionTranslatingStreamObserver.java
@@ -30,6 +30,7 @@
package com.google.api.gax.grpc;
import com.google.api.gax.rpc.ApiStreamObserver;
+import org.jspecify.annotations.NullMarked;
/**
* An {@link ApiStreamObserver} that wraps grpc's errors into {@link
@@ -39,6 +40,7 @@
*
* @param
*/
+@NullMarked
final class GrpcExceptionTranslatingStreamObserver
implements ApiStreamObserver {
private final ApiStreamObserver innerObserver;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcHeaderInterceptor.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcHeaderInterceptor.java
index 9e74538daf79..b02fb6b745f0 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcHeaderInterceptor.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcHeaderInterceptor.java
@@ -41,12 +41,14 @@
import io.grpc.MethodDescriptor;
import java.util.Map;
import java.util.Map.Entry;
+import org.jspecify.annotations.NullMarked;
/**
* An interceptor to handle custom headers.
*
* Package-private for internal usage.
*/
+@NullMarked
@InternalApi
public class GrpcHeaderInterceptor implements ClientInterceptor {
private final Map, String> staticHeaders;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcInterceptorProvider.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcInterceptorProvider.java
index f3d4de8bacdc..f16cf35a83f5 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcInterceptorProvider.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcInterceptorProvider.java
@@ -31,8 +31,10 @@
import io.grpc.ClientInterceptor;
import java.util.List;
+import org.jspecify.annotations.NullMarked;
/** Provider of custom gRPC ClientInterceptors. */
+@NullMarked
public interface GrpcInterceptorProvider {
/**
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLoggingInterceptor.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLoggingInterceptor.java
index 9c305261cbc7..d0f545078d6e 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLoggingInterceptor.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLoggingInterceptor.java
@@ -51,7 +51,9 @@
import io.grpc.Status;
import java.util.HashMap;
import java.util.Map;
+import org.jspecify.annotations.NullMarked;
+@NullMarked
@InternalApi
public class GrpcLoggingInterceptor implements ClientInterceptor {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLongRunningClient.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLongRunningClient.java
index fca5e73b9448..f81b3c35e263 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLongRunningClient.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcLongRunningClient.java
@@ -40,12 +40,14 @@
import com.google.longrunning.Operation;
import com.google.longrunning.stub.OperationsStub;
import com.google.protobuf.Empty;
+import org.jspecify.annotations.NullMarked;
/**
* Implementation of LongRunningClient based on gRPC.
*
* Package-private for internal usage.
*/
+@NullMarked
class GrpcLongRunningClient implements LongRunningClient {
private final OperationsStub operationsStub;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcMetadataHandlerInterceptor.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcMetadataHandlerInterceptor.java
index c3940f4db9e5..1e933eb2575e 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcMetadataHandlerInterceptor.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcMetadataHandlerInterceptor.java
@@ -39,12 +39,14 @@
import io.grpc.Metadata;
import io.grpc.MethodDescriptor;
import io.grpc.Status;
+import org.jspecify.annotations.NullMarked;
/**
* An interceptor to handle receiving the response headers.
*
*
Package-private for internal usage.
*/
+@NullMarked
@InternalApi
class GrpcMetadataHandlerInterceptor implements ClientInterceptor {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshot.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshot.java
index 4483ef1cf83f..9f271e57f0b8 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshot.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshot.java
@@ -33,12 +33,14 @@
import com.google.api.gax.rpc.StatusCode;
import com.google.longrunning.Operation;
import io.grpc.Status;
+import org.jspecify.annotations.NullMarked;
/**
* Implementation of OperationSnapshot based on gRPC.
*
*
Package-private for internal usage.
*/
+@NullMarked
class GrpcOperationSnapshot implements OperationSnapshot {
private final Operation operation;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshotCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshotCallable.java
index a7f467a9903f..fb0e72c9e947 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshotCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcOperationSnapshotCallable.java
@@ -38,6 +38,7 @@
import com.google.api.gax.rpc.ApiCallContext;
import com.google.api.gax.rpc.UnaryCallable;
import com.google.longrunning.Operation;
+import org.jspecify.annotations.NullMarked;
/**
* A {@code UnaryCallable} that wraps a UnaryCallable returning an Operation and returns an
@@ -45,6 +46,7 @@
*
*
Package-private for internal usage.
*/
+@NullMarked
class GrpcOperationSnapshotCallable extends UnaryCallable {
private final UnaryCallable innerCallable;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcRawCallableFactory.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcRawCallableFactory.java
index 318f096291a2..444485d96065 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcRawCallableFactory.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcRawCallableFactory.java
@@ -36,8 +36,10 @@
import com.google.api.gax.rpc.StatusCode;
import com.google.api.gax.rpc.UnaryCallable;
import java.util.Set;
+import org.jspecify.annotations.NullMarked;
/** Class with utility methods to create low level grpc-based direct callables. */
+@NullMarked
@InternalApi("For internal use by google-cloud-java clients only")
public class GrpcRawCallableFactory {
private GrpcRawCallableFactory() {}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcResponseMetadata.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcResponseMetadata.java
index 9e018eefb648..95c976581147 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcResponseMetadata.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcResponseMetadata.java
@@ -32,6 +32,7 @@
import com.google.api.gax.rpc.ApiCallContext;
import com.google.common.base.Preconditions;
import io.grpc.Metadata;
+import org.jspecify.annotations.NullMarked;
/**
* GrpcResponseMetadata provides a mechanism to access the headers and trailers returned by a gRPC
@@ -52,6 +53,7 @@
*
*
*/
+@NullMarked
public class GrpcResponseMetadata implements ResponseMetadataHandler {
private volatile Metadata responseMetadata;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcServerStreamingRequestParamCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcServerStreamingRequestParamCallable.java
index 27b4c564543f..9d709cb9a4bb 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcServerStreamingRequestParamCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcServerStreamingRequestParamCallable.java
@@ -35,6 +35,7 @@
import com.google.api.gax.rpc.ResponseObserver;
import com.google.api.gax.rpc.ServerStreamingCallable;
import com.google.common.base.Preconditions;
+import org.jspecify.annotations.NullMarked;
/**
* A {@code ServerStreamingCallable} that extracts values from the fields of the request and inserts
@@ -42,6 +43,7 @@
*
* Package-private for internal usage.
*/
+@NullMarked
class GrpcServerStreamingRequestParamCallable
extends ServerStreamingCallable {
private final ServerStreamingCallable callable;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStatusCode.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStatusCode.java
index b3db79edabc0..782c409b3d84 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStatusCode.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStatusCode.java
@@ -33,8 +33,10 @@
import com.google.api.gax.rpc.StatusCode;
import com.google.auto.value.AutoValue;
import io.grpc.Status;
+import org.jspecify.annotations.NullMarked;
/** A failure code specific to a gRPC call. */
+@NullMarked
@InternalExtensionOnly
@AutoValue
public abstract class GrpcStatusCode implements StatusCode {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStubCallableFactory.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStubCallableFactory.java
index 131dafc1f861..5925022746a7 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStubCallableFactory.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcStubCallableFactory.java
@@ -43,7 +43,9 @@
import com.google.api.gax.rpc.UnaryCallable;
import com.google.longrunning.Operation;
import com.google.longrunning.stub.OperationsStub;
+import org.jspecify.annotations.NullMarked;
+@NullMarked
public interface GrpcStubCallableFactory {
/**
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcTransportChannel.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcTransportChannel.java
index 2fa0908f17bc..e0a520facb17 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcTransportChannel.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcTransportChannel.java
@@ -36,8 +36,10 @@
import io.grpc.Channel;
import io.grpc.ManagedChannel;
import java.util.concurrent.TimeUnit;
+import org.jspecify.annotations.NullMarked;
/** Implementation of TransportChannel based on gRPC. */
+@NullMarked
@AutoValue
@InternalExtensionOnly
public abstract class GrpcTransportChannel implements TransportChannel {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcUnaryRequestParamCallable.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcUnaryRequestParamCallable.java
index 22bbd8409bc8..ff69e5716ef5 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcUnaryRequestParamCallable.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcUnaryRequestParamCallable.java
@@ -35,6 +35,7 @@
import com.google.api.gax.rpc.RequestUrlParamsEncoder;
import com.google.api.gax.rpc.UnaryCallable;
import com.google.common.base.Preconditions;
+import org.jspecify.annotations.NullMarked;
/**
* A {@code UnaryCallable} that extracts values from the fields of the request and inserts them into
@@ -42,6 +43,7 @@
*
* Package-private for internal usage.
*/
+@NullMarked
class GrpcUnaryRequestParamCallable
extends UnaryCallable {
private final UnaryCallable callable;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java
index 56f44fa7ae0a..5f7e6297c1f6 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java
@@ -82,8 +82,9 @@
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.Nullable;
import javax.net.ssl.KeyManagerFactory;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* InstantiatingGrpcChannelProvider is a TransportChannelProvider which constructs a gRPC
@@ -97,6 +98,7 @@
* The client lib header and generator header values are used to form a value that goes into the
* http header of requests to the service.
*/
+@NullMarked
public final class InstantiatingGrpcChannelProvider implements TransportChannelProvider {
private static String systemProductName;
@@ -129,7 +131,7 @@ public final class InstantiatingGrpcChannelProvider implements TransportChannelP
private final int processorCount;
private final Executor executor;
- @Nullable private final ScheduledExecutorService backgroundExecutor;
+ private final @Nullable ScheduledExecutorService backgroundExecutor;
private final HeaderProvider headerProvider;
private final boolean useS2A;
private final String endpoint;
@@ -138,33 +140,33 @@ public final class InstantiatingGrpcChannelProvider implements TransportChannelP
// during initial rollout for DirectPath. This provider will be removed once the DirectPath
// environment is not used.
private final EnvironmentProvider envProvider;
- @Nullable private final GrpcInterceptorProvider interceptorProvider;
- @Nullable private final Integer maxInboundMessageSize;
- @Nullable private final Integer maxInboundMetadataSize;
- @Nullable private final java.time.Duration keepAliveTime;
- @Nullable private final java.time.Duration keepAliveTimeout;
- @Nullable private final Boolean keepAliveWithoutCalls;
+ private final @Nullable GrpcInterceptorProvider interceptorProvider;
+ private final @Nullable Integer maxInboundMessageSize;
+ private final @Nullable Integer maxInboundMetadataSize;
+ private final java.time.@Nullable Duration keepAliveTime;
+ private final java.time.@Nullable Duration keepAliveTimeout;
+ private final @Nullable Boolean keepAliveWithoutCalls;
private final ChannelPoolSettings channelPoolSettings;
- @Nullable private final Credentials credentials;
- @Nullable private final CallCredentials altsCallCredentials;
- @Nullable private final CallCredentials mtlsS2ACallCredentials;
- @Nullable private final ChannelPrimer channelPrimer;
- @Nullable private final Boolean attemptDirectPath;
- @Nullable private final Boolean attemptDirectPathXds;
- @Nullable private final Boolean allowNonDefaultServiceAccount;
+ private final @Nullable Credentials credentials;
+ private final @Nullable CallCredentials altsCallCredentials;
+ private final @Nullable CallCredentials mtlsS2ACallCredentials;
+ private final @Nullable ChannelPrimer channelPrimer;
+ private final @Nullable Boolean attemptDirectPath;
+ private final @Nullable Boolean attemptDirectPathXds;
+ private final @Nullable Boolean allowNonDefaultServiceAccount;
@VisibleForTesting final ImmutableMap directPathServiceConfig;
- @Nullable private final MtlsProvider mtlsProvider;
+ private final @Nullable MtlsProvider mtlsProvider;
private final CertificateBasedAccess certificateBasedAccess;
- @Nullable private final SecureSessionAgent s2aConfigProvider;
+ private final @Nullable SecureSessionAgent s2aConfigProvider;
private final List allowedHardBoundTokenTypes;
@VisibleForTesting final Map headersWithDuplicatesRemoved = new HashMap<>();
- @Nullable
- private final ApiFunction channelConfigurator;
+ private final @Nullable ApiFunction
+ channelConfigurator;
// This is initialized once for the lifetime of the application. This enables re-using
// channels to S2A.
- private static volatile ChannelCredentials s2aChannelCredentials;
+ private static @Nullable volatile ChannelCredentials s2aChannelCredentials;
/**
* Resets the s2aChannelCredentials of the {@link InstantiatingGrpcChannelProvider} class for
@@ -539,6 +541,7 @@ boolean canUseDirectPathWithUniverseDomain() {
return endpoint.contains(Credentials.GOOGLE_DEFAULT_UNIVERSE);
}
+ @Nullable
@VisibleForTesting
ChannelCredentials createMtlsChannelCredentials() throws IOException, GeneralSecurityException {
if (mtlsProvider == null) {
@@ -565,7 +568,7 @@ ChannelCredentials createMtlsChannelCredentials() throws IOException, GeneralSec
* @param s2aChannelCredentials the credentials to be used when connecting to the S2A.
* @return {@code ChannelCredentials} instance.
*/
- ChannelCredentials buildS2AChannelCredentials(
+ @Nullable ChannelCredentials buildS2AChannelCredentials(
String s2aAddress, ChannelCredentials s2aChannelCredentials) {
try {
// Load the S2A API.
@@ -606,6 +609,7 @@ ChannelCredentials buildS2AChannelCredentials(
* @return {@link ChannelCredentials} to use to create an mtls connection between client and S2A
* @throws IOException on error
*/
+ @Nullable
@VisibleForTesting
ChannelCredentials createMtlsToS2AChannelCredentials(
File trustBundle, File privateKey, File certChain) throws IOException {
@@ -626,7 +630,7 @@ ChannelCredentials createMtlsToS2AChannelCredentials(
* @return {@link ChannelCredentials} to use to create a plaintext connection between client and
* S2A
*/
- ChannelCredentials createPlaintextToS2AChannelCredentials(String plaintextAddress) {
+ @Nullable ChannelCredentials createPlaintextToS2AChannelCredentials(String plaintextAddress) {
if (Strings.isNullOrEmpty(plaintextAddress)) {
return null;
}
@@ -948,24 +952,24 @@ public static final class Builder {
private boolean useS2A;
private EnvironmentProvider envProvider;
private SecureSessionAgent s2aConfigProvider = SecureSessionAgent.create();
- @Nullable private MtlsProvider mtlsProvider;
+ private @Nullable MtlsProvider mtlsProvider;
private CertificateBasedAccess certificateBasedAccess;
- @Nullable private GrpcInterceptorProvider interceptorProvider;
- @Nullable private Integer maxInboundMessageSize;
- @Nullable private Integer maxInboundMetadataSize;
- @Nullable private java.time.Duration keepAliveTime;
- @Nullable private java.time.Duration keepAliveTimeout;
- @Nullable private Boolean keepAliveWithoutCalls;
- @Nullable private ApiFunction channelConfigurator;
- @Nullable private Credentials credentials;
- @Nullable private CallCredentials altsCallCredentials;
- @Nullable private CallCredentials mtlsS2ACallCredentials;
- @Nullable private ChannelPrimer channelPrimer;
+ private @Nullable GrpcInterceptorProvider interceptorProvider;
+ private @Nullable Integer maxInboundMessageSize;
+ private @Nullable Integer maxInboundMetadataSize;
+ private java.time.@Nullable Duration keepAliveTime;
+ private java.time.@Nullable Duration keepAliveTimeout;
+ private @Nullable Boolean keepAliveWithoutCalls;
+ private @Nullable ApiFunction channelConfigurator;
+ private @Nullable Credentials credentials;
+ private @Nullable CallCredentials altsCallCredentials;
+ private @Nullable CallCredentials mtlsS2ACallCredentials;
+ private @Nullable ChannelPrimer channelPrimer;
private ChannelPoolSettings channelPoolSettings;
- @Nullable private Boolean attemptDirectPath;
- @Nullable private Boolean attemptDirectPathXds;
- @Nullable private Boolean allowNonDefaultServiceAccount;
- @Nullable private ImmutableMap directPathServiceConfig;
+ private @Nullable Boolean attemptDirectPath;
+ private @Nullable Boolean attemptDirectPathXds;
+ private @Nullable Boolean allowNonDefaultServiceAccount;
+ private @Nullable ImmutableMap directPathServiceConfig;
private List allowedHardBoundTokenTypes;
private Builder() {
@@ -1361,7 +1365,7 @@ boolean isDirectPathBoundTokenEnabled() {
CallCredentials createHardBoundTokensCallCredentials(
ComputeEngineCredentials.GoogleAuthTransport googleAuthTransport,
- ComputeEngineCredentials.BindingEnforcement bindingEnforcement) {
+ ComputeEngineCredentials.@Nullable BindingEnforcement bindingEnforcement) {
ComputeEngineCredentials.Builder credsBuilder =
((ComputeEngineCredentials) credentials).toBuilder();
// We only set scopes and HTTP transport factory from the original credentials because
@@ -1437,8 +1441,8 @@ public Builder setChannelConfigurator(
return this;
}
- @Nullable
- public ApiFunction getChannelConfigurator() {
+ public @Nullable ApiFunction
+ getChannelConfigurator() {
return channelConfigurator;
}
}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ProtoOperationTransformers.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ProtoOperationTransformers.java
index e3d990d9e99e..425842b17499 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ProtoOperationTransformers.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ProtoOperationTransformers.java
@@ -36,8 +36,10 @@
import com.google.protobuf.Any;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Message;
+import org.jspecify.annotations.NullMarked;
/** Public for technical reasons; intended for use by generated code. */
+@NullMarked
public class ProtoOperationTransformers {
private ProtoOperationTransformers() {}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ResponseMetadataHandler.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ResponseMetadataHandler.java
index 4ce195602989..4b867c5f2bd2 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ResponseMetadataHandler.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/ResponseMetadataHandler.java
@@ -30,12 +30,14 @@
package com.google.api.gax.grpc;
import io.grpc.Metadata;
+import org.jspecify.annotations.NullMarked;
/**
* An interface to handle metadata returned from an RPC. A ResponseMetadataHandler is used by the
* GrpcMetadataHandlerInterceptor class to provide custom handling of the returned headers and
* trailers.
*/
+@NullMarked
public interface ResponseMetadataHandler {
/** Handle the headers returned by an RPC. */
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/StreamObserverDelegate.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/StreamObserverDelegate.java
index 3b66ba1ca63d..8c3ac600b519 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/StreamObserverDelegate.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/StreamObserverDelegate.java
@@ -31,12 +31,14 @@
import com.google.api.gax.rpc.ApiStreamObserver;
import io.grpc.stub.StreamObserver;
+import org.jspecify.annotations.NullMarked;
/**
* A delegate class that transfers calls to the StreamObserver object.
*
* Package-private for internal use.
*/
+@NullMarked
class StreamObserverDelegate implements ApiStreamObserver {
private final StreamObserver delegate;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java
index 88266332dc57..1a9aa49029b7 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java
@@ -36,8 +36,10 @@
import static com.google.api.gax.nativeimage.NativeImageUtils.registerForUnsafeFieldAccess;
import org.graalvm.nativeimage.hosted.Feature;
+import org.jspecify.annotations.NullMarked;
/** Configures Native Image settings for the grpc-netty-shaded dependency. */
+@NullMarked
final class GrpcNettyFeature implements Feature {
private static final String GRPC_NETTY_SHADED_CLASS =
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsClient.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsClient.java
index 024950cda3ba..c06736f5ae07 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsClient.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsClient.java
@@ -46,6 +46,8 @@
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Service Description: Manages long-running operations with an API service.
@@ -108,8 +110,9 @@
*
*
*/
+@NullMarked
public class OperationsClient implements BackgroundResource {
- private final OperationsSettings settings;
+ private final @Nullable OperationsSettings settings;
private final OperationsStub stub;
/**
@@ -617,8 +620,8 @@ public static class ListOperationsPage
ListOperationsRequest, ListOperationsResponse, Operation, ListOperationsPage> {
private ListOperationsPage(
- PageContext context,
- ListOperationsResponse response) {
+ @Nullable PageContext context,
+ @Nullable ListOperationsResponse response) {
super(context, response);
}
@@ -649,7 +652,8 @@ public static class ListOperationsFixedSizeCollection
ListOperationsPage,
ListOperationsFixedSizeCollection> {
- private ListOperationsFixedSizeCollection(List pages, int collectionSize) {
+ private ListOperationsFixedSizeCollection(
+ @Nullable List pages, int collectionSize) {
super(pages, collectionSize);
}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsSettings.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsSettings.java
index 22ea7e5a1d48..1d4683679309 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsSettings.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/OperationsSettings.java
@@ -41,8 +41,11 @@
import com.google.longrunning.stub.OperationsStubSettings;
import com.google.protobuf.Empty;
import java.io.IOException;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/** Settings class to configure an instance of {@link OperationsClient}. */
+@NullMarked
public class OperationsSettings extends ClientSettings {
/** Returns the object with the settings used for calls to getOperation. */
public UnaryCallSettings getOperationSettings() {
@@ -115,7 +118,7 @@ protected Builder() throws IOException {
this((ClientContext) null);
}
- protected Builder(ClientContext clientContext) {
+ protected Builder(@Nullable ClientContext clientContext) {
super(OperationsStubSettings.newBuilder(clientContext));
}
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/package-info.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/package-info.java
index 7e509fca0bc9..6d7998bd6751 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/package-info.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/package-info.java
@@ -44,4 +44,7 @@
* service that returns long-running operations should implement the `Operations` interface so
* developers can have a consistent client experience.
*/
+@NullMarked
package com.google.longrunning;
+
+import org.jspecify.annotations.NullMarked;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsCallableFactory.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsCallableFactory.java
index 8a18008c0a30..d4072d7fcb58 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsCallableFactory.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsCallableFactory.java
@@ -45,12 +45,14 @@
import com.google.api.gax.rpc.UnaryCallSettings;
import com.google.api.gax.rpc.UnaryCallable;
import com.google.longrunning.Operation;
+import org.jspecify.annotations.NullMarked;
/**
* gRPC callable factory implementation for Google Long Running Operations API.
*
* This class is for advanced usage.
*/
+@NullMarked
public class GrpcOperationsCallableFactory implements GrpcStubCallableFactory {
@Override
public UnaryCallable createUnaryCallable(
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsStub.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsStub.java
index c00574e88951..63abcaf8563d 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsStub.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/GrpcOperationsStub.java
@@ -52,12 +52,14 @@
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import org.jspecify.annotations.NullMarked;
/**
* gRPC stub implementation for Google Long Running Operations API.
*
* This class is for advanced usage and reflects the underlying API directly.
*/
+@NullMarked
public class GrpcOperationsStub extends OperationsStub {
private static final MethodDescriptor
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStub.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStub.java
index 467572b001a1..ca6a9181b9b7 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStub.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStub.java
@@ -41,12 +41,14 @@
import com.google.longrunning.Operation;
import com.google.longrunning.WaitOperationRequest;
import com.google.protobuf.Empty;
+import org.jspecify.annotations.NullMarked;
/**
* Base stub class for Google Long Running Operations API.
*
* This class is for advanced usage and reflects the underlying API directly.
*/
+@NullMarked
public abstract class OperationsStub implements BackgroundResource {
public UnaryCallable getOperationCallable() {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStubSettings.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStubSettings.java
index 47c3a981b8d9..59eebe3fac9b 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStubSettings.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/longrunning/stub/OperationsStubSettings.java
@@ -63,8 +63,11 @@
import com.google.longrunning.WaitOperationRequest;
import com.google.protobuf.Empty;
import java.io.IOException;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/** Settings class to configure an instance of {@link OperationsStub}. */
+@NullMarked
public class OperationsStubSettings extends StubSettings {
private final UnaryCallSettings getOperationSettings;
@@ -258,7 +261,7 @@ protected Builder() {
this((ClientContext) null);
}
- protected Builder(ClientContext clientContext) {
+ protected Builder(@Nullable ClientContext clientContext) {
super(clientContext);
getOperationSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/ChannelPoolTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/ChannelPoolTest.java
index 6337c85b55fe..5bfdc7754759 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/ChannelPoolTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/ChannelPoolTest.java
@@ -33,6 +33,7 @@
import static com.google.api.gax.grpc.testing.FakeServiceGrpc.METHOD_SERVER_STREAMING_RECOGNIZE;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
import com.google.api.core.ApiFuture;
import com.google.api.gax.core.FixedExecutorProvider;
@@ -91,8 +92,8 @@ void cleanup() throws InterruptedException {
@Test
void testAuthority() throws IOException {
- ManagedChannel sub1 = Mockito.mock(ManagedChannel.class);
- ManagedChannel sub2 = Mockito.mock(ManagedChannel.class);
+ ManagedChannel sub1 = mock(ManagedChannel.class);
+ ManagedChannel sub2 = mock(ManagedChannel.class);
Mockito.when(sub1.authority()).thenReturn("myAuth");
@@ -106,8 +107,8 @@ void testAuthority() throws IOException {
@Test
void testRoundRobin() throws IOException {
- ManagedChannel sub1 = Mockito.mock(ManagedChannel.class);
- ManagedChannel sub2 = Mockito.mock(ManagedChannel.class);
+ ManagedChannel sub1 = mock(ManagedChannel.class);
+ ManagedChannel sub2 = mock(ManagedChannel.class);
Mockito.when(sub1.authority()).thenReturn("myAuth");
@@ -128,7 +129,7 @@ private void verifyTargetChannel(
MethodDescriptor methodDescriptor = METHOD_RECOGNIZE;
CallOptions callOptions = CallOptions.DEFAULT;
@SuppressWarnings("unchecked")
- ClientCall expectedClientCall = Mockito.mock(ClientCall.class);
+ ClientCall expectedClientCall = mock(ClientCall.class);
channels.forEach(Mockito::reset);
Mockito.doReturn(expectedClientCall).when(targetChannel).newCall(methodDescriptor, callOptions);
@@ -148,12 +149,12 @@ private void verifyTargetChannel(
private static ChannelFactory createMockChannelFactory(
List channels, List> startedCalls) {
return () -> {
- ManagedChannel channel = Mockito.mock(ManagedChannel.class);
+ ManagedChannel channel = mock(ManagedChannel.class);
Mockito.when(channel.newCall(Mockito.any(), Mockito.any()))
.thenAnswer(
invocation -> {
@SuppressWarnings("unchecked")
- ClientCall clientCall = Mockito.mock(ClientCall.class);
+ ClientCall clientCall = mock(ClientCall.class);
if (startedCalls != null) {
startedCalls.add(clientCall);
}
@@ -174,14 +175,14 @@ void ensureEvenDistribution() throws InterruptedException, IOException {
final MethodDescriptor methodDescriptor = METHOD_RECOGNIZE;
final CallOptions callOptions = CallOptions.DEFAULT;
@SuppressWarnings("unchecked")
- final ClientCall clientCall = Mockito.mock(ClientCall.class);
+ final ClientCall clientCall = mock(ClientCall.class);
for (int i = 0; i < numChannels; i++) {
final int index = i;
counts[i] = new AtomicInteger();
- channels[i] = Mockito.mock(ManagedChannel.class);
+ channels[i] = mock(ManagedChannel.class);
Mockito.when(channels[i].newCall(methodDescriptor, callOptions))
.thenAnswer(
(ignored) -> {
@@ -221,9 +222,10 @@ void ensureEvenDistribution() throws InterruptedException, IOException {
// Test channelPrimer is called same number of times as poolSize if executorService is set to null
@Test
void channelPrimerShouldCallPoolConstruction() throws IOException {
- ChannelPrimer mockChannelPrimer = Mockito.mock(ChannelPrimer.class);
- ManagedChannel channel1 = Mockito.mock(ManagedChannel.class);
- ManagedChannel channel2 = Mockito.mock(ManagedChannel.class);
+ ChannelPrimer mockChannelPrimer =
+ mock(ChannelPrimer.class, Mockito.withSettings().withoutAnnotations());
+ ManagedChannel channel1 = mock(ManagedChannel.class);
+ ManagedChannel channel2 = mock(ManagedChannel.class);
pool =
ChannelPool.create(
@@ -239,21 +241,22 @@ void channelPrimerShouldCallPoolConstruction() throws IOException {
// Test channelPrimer is called periodically, if there's an executorService
@Test
void channelPrimerIsCalledPeriodically() throws IOException {
- ChannelPrimer mockChannelPrimer = Mockito.mock(ChannelPrimer.class);
- ManagedChannel channel1 = Mockito.mock(ManagedChannel.class);
- ManagedChannel channel2 = Mockito.mock(ManagedChannel.class);
- ManagedChannel channel3 = Mockito.mock(ManagedChannel.class);
+ ChannelPrimer mockChannelPrimer =
+ mock(ChannelPrimer.class, Mockito.withSettings().withoutAnnotations());
+ ManagedChannel channel1 = mock(ManagedChannel.class);
+ ManagedChannel channel2 = mock(ManagedChannel.class);
+ ManagedChannel channel3 = mock(ManagedChannel.class);
List channelRefreshers = new ArrayList<>();
ScheduledExecutorService scheduledExecutorService =
- Mockito.mock(ScheduledExecutorService.class);
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(scheduledExecutorService);
Answer> extractChannelRefresher =
invocation -> {
channelRefreshers.add(invocation.getArgument(0));
- return Mockito.mock(ScheduledFuture.class);
+ return Mockito.mock(ScheduledFuture.class, Mockito.withSettings().withoutAnnotations());
};
Mockito.doAnswer(extractChannelRefresher)
@@ -290,8 +293,8 @@ void channelPrimerIsCalledPeriodically() throws IOException {
// call should be allowed to complete and the channel should not be shutdown
@Test
void callShouldCompleteAfterCreation() throws IOException {
- ManagedChannel underlyingChannel = Mockito.mock(ManagedChannel.class);
- ManagedChannel replacementChannel = Mockito.mock(ManagedChannel.class);
+ ManagedChannel underlyingChannel = mock(ManagedChannel.class);
+ ManagedChannel replacementChannel = mock(ManagedChannel.class);
FakeChannelFactory channelFactory =
new FakeChannelFactory(ImmutableList.of(underlyingChannel, replacementChannel));
pool = ChannelPool.create(ChannelPoolSettings.staticallySized(1), channelFactory, null);
@@ -315,7 +318,7 @@ void callShouldCompleteAfterCreation() throws IOException {
// create a new call on entry
@SuppressWarnings("unchecked")
- ClientCall.Listener listener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener listener = mock(ClientCall.Listener.class);
ClientCall call =
pool.newCall(FakeMethodDescriptor.create(), CallOptions.DEFAULT);
@@ -338,8 +341,8 @@ void callShouldCompleteAfterCreation() throws IOException {
// call should be allowed to complete and the channel should not be shutdown
@Test
void callShouldCompleteAfterStarted() throws IOException {
- final ManagedChannel underlyingChannel = Mockito.mock(ManagedChannel.class);
- ManagedChannel replacementChannel = Mockito.mock(ManagedChannel.class);
+ final ManagedChannel underlyingChannel = mock(ManagedChannel.class);
+ ManagedChannel replacementChannel = mock(ManagedChannel.class);
FakeChannelFactory channelFactory =
new FakeChannelFactory(ImmutableList.of(underlyingChannel, replacementChannel));
@@ -364,7 +367,7 @@ void callShouldCompleteAfterStarted() throws IOException {
// create a new call on safeShutdownManagedChannel
@SuppressWarnings("unchecked")
- ClientCall.Listener listener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener listener = mock(ClientCall.Listener.class);
ClientCall call =
pool.newCall(FakeMethodDescriptor.create(), CallOptions.DEFAULT);
@@ -383,8 +386,8 @@ void callShouldCompleteAfterStarted() throws IOException {
// Channel should be shutdown after a refresh all the calls have completed
@Test
void channelShouldShutdown() throws IOException {
- ManagedChannel underlyingChannel = Mockito.mock(ManagedChannel.class);
- ManagedChannel replacementChannel = Mockito.mock(ManagedChannel.class);
+ ManagedChannel underlyingChannel = mock(ManagedChannel.class);
+ ManagedChannel replacementChannel = mock(ManagedChannel.class);
FakeChannelFactory channelFactory =
new FakeChannelFactory(ImmutableList.of(underlyingChannel, replacementChannel));
@@ -409,7 +412,7 @@ void channelShouldShutdown() throws IOException {
// create a new call on safeShutdownManagedChannel
@SuppressWarnings("unchecked")
- ClientCall.Listener listener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener listener = mock(ClientCall.Listener.class);
ClientCall call =
pool.newCall(FakeMethodDescriptor.create(), CallOptions.DEFAULT);
@@ -426,12 +429,12 @@ void channelShouldShutdown() throws IOException {
@Test
void channelRefreshShouldSwapChannels() throws IOException {
- ManagedChannel underlyingChannel1 = Mockito.mock(ManagedChannel.class);
- ManagedChannel underlyingChannel2 = Mockito.mock(ManagedChannel.class);
+ ManagedChannel underlyingChannel1 = mock(ManagedChannel.class);
+ ManagedChannel underlyingChannel2 = mock(ManagedChannel.class);
// mock executor service to capture the runnable scheduled, so we can invoke it when we want to
ScheduledExecutorService scheduledExecutorService =
- Mockito.mock(ScheduledExecutorService.class);
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(scheduledExecutorService);
Mockito.doReturn(null)
@@ -466,7 +469,8 @@ void channelRefreshShouldSwapChannels() throws IOException {
@Test
void channelCountShouldNotChangeWhenOutstandingRpcsAreWithinLimits() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
List channels = new ArrayList<>();
@@ -532,7 +536,8 @@ void channelCountShouldNotChangeWhenOutstandingRpcsAreWithinLimits() throws Exce
@Test
void customResizeDeltaIsRespected() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
List channels = new ArrayList<>();
@@ -564,7 +569,8 @@ void customResizeDeltaIsRespected() throws Exception {
@Test
void removedIdleChannelsAreShutdown() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
List channels = new ArrayList<>();
@@ -591,7 +597,8 @@ void removedIdleChannelsAreShutdown() throws Exception {
@Test
void removedActiveChannelsAreShutdown() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
List channels = new ArrayList<>();
@@ -639,15 +646,16 @@ void removedActiveChannelsAreShutdown() throws Exception {
@Test
void testReleasingClientCallCancelEarly() throws IOException {
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
Mockito.doAnswer(invocation -> null).when(mockClientCall).cancel(Mockito.any(), Mockito.any());
- ManagedChannel fakeChannel = Mockito.mock(ManagedChannel.class);
+ ManagedChannel fakeChannel = mock(ManagedChannel.class);
Mockito.when(fakeChannel.newCall(Mockito.any(), Mockito.any())).thenReturn(mockClientCall);
ChannelPoolSettings channelPoolSettings = ChannelPoolSettings.staticallySized(1);
ChannelFactory factory = new FakeChannelFactory(ImmutableList.of(fakeChannel));
pool = ChannelPool.create(channelPoolSettings, factory, null);
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
@@ -692,7 +700,8 @@ public void onComplete() {}
@Test
void repeatedResizingLogsWarningOnExpand() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
ChannelFactory channelFactory = createMockChannelFactory(new ArrayList<>(), null);
@@ -743,10 +752,11 @@ void repeatedResizingLogsWarningOnExpand() throws Exception {
@Test
void repeatedResizingLogsWarningOnShrink() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
- ChannelFactory channelFactory = () -> Mockito.mock(ManagedChannel.class);
+ ChannelFactory channelFactory = () -> mock(ManagedChannel.class);
pool =
new ChannelPool(
@@ -789,15 +799,16 @@ void testDoubleRelease() throws Exception {
try {
// Create a fake channel pool thats backed by mock channels that simply record invocations
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
- ManagedChannel fakeChannel = Mockito.mock(ManagedChannel.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
+ ManagedChannel fakeChannel = mock(ManagedChannel.class);
Mockito.when(fakeChannel.newCall(Mockito.any(), Mockito.any())).thenReturn(mockClientCall);
ChannelPoolSettings channelPoolSettings = ChannelPoolSettings.staticallySized(1);
ChannelFactory factory = new FakeChannelFactory(ImmutableList.of(fakeChannel));
pool = ChannelPool.create(channelPoolSettings, factory, null);
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(
@@ -850,7 +861,8 @@ void settingsValidationFailsWhenMaxResizeDeltaExceedsLimit() {
@Test
void minChannelsClampedToMaxChannelCountUnderHighLoad() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
List channels = new ArrayList<>();
@@ -885,7 +897,8 @@ void minChannelsClampedToMaxChannelCountUnderHighLoad() throws Exception {
@Test
void maxChannelsClampedToMinChannelCountUnderLowLoad() throws Exception {
- ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService executor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
FixedExecutorProvider provider = FixedExecutorProvider.create(executor);
List channels = new ArrayList<>();
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallContextTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallContextTest.java
index 5f30ed58c92c..e20767fdb8ed 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallContextTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallContextTest.java
@@ -33,6 +33,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.Mockito.mock;
import com.google.api.gax.retrying.RetrySettings;
import com.google.api.gax.rpc.ApiCallContext;
@@ -77,7 +78,7 @@ void testNullToSelfWrongType() {
@Test
void testWithCredentials() {
- Credentials credentials = Mockito.mock(Credentials.class);
+ Credentials credentials = mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
GrpcCallContext emptyContext = GrpcCallContext.createDefault();
assertNull(emptyContext.getCallOptions().getCredentials());
GrpcCallContext context = emptyContext.withCredentials(credentials);
@@ -86,7 +87,7 @@ void testWithCredentials() {
@Test
void testWithTransportChannel() {
- ManagedChannel channel = Mockito.mock(ManagedChannel.class);
+ ManagedChannel channel = mock(ManagedChannel.class);
GrpcCallContext context =
GrpcCallContext.createDefault().withTransportChannel(GrpcTransportChannel.create(channel));
Truth.assertThat(context.getChannel()).isSameInstanceAs(channel);
@@ -105,8 +106,9 @@ void testWithTransportChannelWrongType() {
@Test
void testWithTransportChannelIsDirectPath() {
- ManagedChannel channel = Mockito.mock(ManagedChannel.class);
- Credentials credentials = Mockito.mock(GoogleCredentials.class);
+ ManagedChannel channel = mock(ManagedChannel.class);
+ Credentials credentials =
+ mock(GoogleCredentials.class, Mockito.withSettings().withoutAnnotations());
GrpcCallContext context = GrpcCallContext.createDefault().withCredentials(credentials);
assertNotNull(context.getCallOptions().getCredentials());
context =
@@ -345,8 +347,9 @@ void testMergeWithCustomCallOptions() {
@Test
void testMergeWithIsDirectPath() {
- ManagedChannel channel = Mockito.mock(ManagedChannel.class);
- CallCredentials callCredentials = Mockito.mock(CallCredentials.class);
+ ManagedChannel channel = mock(ManagedChannel.class);
+ CallCredentials callCredentials =
+ mock(CallCredentials.class, Mockito.withSettings().withoutAnnotations());
GrpcCallContext ctx1 =
GrpcCallContext.createDefault()
.withCallOptions(CallOptions.DEFAULT.withCallCredentials(callCredentials));
@@ -397,7 +400,8 @@ void testMergeWithExtraHeaders() {
@Test
void testMergeWithTracer() {
- ApiTracer explicitTracer = Mockito.mock(ApiTracer.class);
+ ApiTracer explicitTracer =
+ Mockito.mock(ApiTracer.class, Mockito.withSettings().withoutAnnotations());
GrpcCallContext ctxWithExplicitTracer =
GrpcCallContext.createDefault().withTracer(explicitTracer);
@@ -419,7 +423,8 @@ void testMergeWithTracer() {
@Test
void testWithRetrySettings() {
- RetrySettings retrySettings = Mockito.mock(RetrySettings.class);
+ RetrySettings retrySettings =
+ mock(RetrySettings.class, Mockito.withSettings().withoutAnnotations());
GrpcCallContext emptyContext = GrpcCallContext.createDefault();
assertNull(emptyContext.getRetrySettings());
GrpcCallContext context = emptyContext.withRetrySettings(retrySettings);
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallableFactoryTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallableFactoryTest.java
index f261daf603af..18fdf220defd 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallableFactoryTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcCallableFactoryTest.java
@@ -30,6 +30,7 @@
package com.google.api.gax.grpc;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
import com.google.api.gax.grpc.testing.FakeServiceGrpc;
import com.google.api.gax.grpc.testing.FakeServiceImpl;
@@ -73,7 +74,8 @@ void setUp() throws Exception {
inprocessServer.start();
channel = InProcessChannelBuilder.forName(serverName).directExecutor().usePlaintext().build();
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
@@ -153,8 +155,8 @@ void testGetSpanName() {
MethodDescriptor.newBuilder()
.setType(MethodType.SERVER_STREAMING)
.setFullMethodName("google.bigtable.v2.Bigtable/ReadRows")
- .setRequestMarshaller(Mockito.mock(Marshaller.class))
- .setResponseMarshaller(Mockito.mock(Marshaller.class))
+ .setRequestMarshaller(mock(Marshaller.class))
+ .setResponseMarshaller(mock(Marshaller.class))
.build();
SpanName actualSpanName = SpanName.of(GrpcCallableFactory.getApiTracerContext(descriptor));
@@ -168,8 +170,8 @@ void testGetSpanNameUnqualified() {
MethodDescriptor.newBuilder()
.setType(MethodType.SERVER_STREAMING)
.setFullMethodName("UnqualifiedService/ReadRows")
- .setRequestMarshaller(Mockito.mock(Marshaller.class))
- .setResponseMarshaller(Mockito.mock(Marshaller.class))
+ .setRequestMarshaller(mock(Marshaller.class))
+ .setResponseMarshaller(mock(Marshaller.class))
.build();
SpanName actualSpanName = SpanName.of(GrpcCallableFactory.getApiTracerContext(descriptor));
@@ -186,8 +188,8 @@ void testGetSpanNameInvalid() {
MethodDescriptor.newBuilder()
.setType(MethodType.SERVER_STREAMING)
.setFullMethodName(invalidName)
- .setRequestMarshaller(Mockito.mock(Marshaller.class))
- .setResponseMarshaller(Mockito.mock(Marshaller.class))
+ .setRequestMarshaller(mock(Marshaller.class))
+ .setResponseMarshaller(mock(Marshaller.class))
.build();
IllegalArgumentException actualError = null;
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcClientCallsTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcClientCallsTest.java
index 0e21fac24371..2aa9279e249f 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcClientCallsTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcClientCallsTest.java
@@ -31,6 +31,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import com.google.api.gax.grpc.testing.FakeChannelFactory;
@@ -92,8 +93,9 @@ public int getRetryCount() {
@BeforeEach
void setUp() throws IOException {
- credentials = Mockito.mock(Credentials.class);
- endpointContext = Mockito.mock(EndpointContext.class);
+ credentials = Mockito.mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
+ endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
mockChannel = Mockito.mock(Channel.class);
defaultCallContext = GrpcCallContext.createDefault().withEndpointContext(endpointContext);
@@ -107,13 +109,13 @@ void testAffinity() throws IOException {
MethodDescriptor descriptor = FakeServiceGrpc.METHOD_RECOGNIZE;
@SuppressWarnings("unchecked")
- ClientCall clientCall0 = Mockito.mock(ClientCall.class);
+ ClientCall clientCall0 = mock(ClientCall.class);
@SuppressWarnings("unchecked")
- ClientCall clientCall1 = Mockito.mock(ClientCall.class);
+ ClientCall clientCall1 = mock(ClientCall.class);
- ManagedChannel channel0 = Mockito.mock(ManagedChannel.class);
- ManagedChannel channel1 = Mockito.mock(ManagedChannel.class);
+ ManagedChannel channel0 = mock(ManagedChannel.class);
+ ManagedChannel channel1 = mock(ManagedChannel.class);
Mockito.when(channel0.newCall(Mockito.eq(descriptor), Mockito.any()))
.thenReturn(clientCall0);
@@ -148,12 +150,12 @@ void testExtraHeaders() throws IOException {
MethodDescriptor descriptor = FakeServiceGrpc.METHOD_RECOGNIZE;
@SuppressWarnings("unchecked")
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
@SuppressWarnings("unchecked")
- ClientCall.Listener mockListener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener mockListener = mock(ClientCall.Listener.class);
- Channel mockChannel = Mockito.mock(ManagedChannel.class);
+ Channel mockChannel = mock(ManagedChannel.class);
Mockito.doAnswer(
invocation -> {
@@ -183,12 +185,12 @@ void testTimeoutToDeadlineConversion() throws IOException {
MethodDescriptor descriptor = FakeServiceGrpc.METHOD_RECOGNIZE;
@SuppressWarnings("unchecked")
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
@SuppressWarnings("unchecked")
- ClientCall.Listener mockListener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener mockListener = mock(ClientCall.Listener.class);
- Channel mockChannel = Mockito.mock(ManagedChannel.class);
+ Channel mockChannel = mock(ManagedChannel.class);
ArgumentCaptor capturedCallOptions = ArgumentCaptor.forClass(CallOptions.class);
@@ -214,12 +216,12 @@ void testTimeoutAfterDeadline() throws IOException {
MethodDescriptor descriptor = FakeServiceGrpc.METHOD_RECOGNIZE;
@SuppressWarnings("unchecked")
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
@SuppressWarnings("unchecked")
- ClientCall.Listener mockListener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener mockListener = mock(ClientCall.Listener.class);
- Channel mockChannel = Mockito.mock(ManagedChannel.class);
+ Channel mockChannel = mock(ManagedChannel.class);
ArgumentCaptor capturedCallOptions = ArgumentCaptor.forClass(CallOptions.class);
@@ -247,12 +249,12 @@ void testTimeoutBeforeDeadline() throws IOException {
MethodDescriptor descriptor = FakeServiceGrpc.METHOD_RECOGNIZE;
@SuppressWarnings("unchecked")
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
@SuppressWarnings("unchecked")
- ClientCall.Listener mockListener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener mockListener = mock(ClientCall.Listener.class);
- Channel mockChannel = Mockito.mock(ManagedChannel.class);
+ Channel mockChannel = mock(ManagedChannel.class);
ArgumentCaptor capturedCallOptions = ArgumentCaptor.forClass(CallOptions.class);
@@ -348,14 +350,16 @@ void testTraceContextHeaders() throws IOException {
MethodDescriptor descriptor = FakeServiceGrpc.METHOD_RECOGNIZE;
@SuppressWarnings("unchecked")
- ClientCall mockClientCall = Mockito.mock(ClientCall.class);
+ ClientCall mockClientCall = mock(ClientCall.class);
@SuppressWarnings("unchecked")
- ClientCall.Listener mockListener = Mockito.mock(ClientCall.Listener.class);
+ ClientCall.Listener mockListener = mock(ClientCall.Listener.class);
- Channel mockChannel = Mockito.mock(ManagedChannel.class);
+ Channel mockChannel = mock(ManagedChannel.class);
com.google.api.gax.tracing.ApiTracer mockTracer =
- Mockito.mock(com.google.api.gax.tracing.ApiTracer.class);
+ mock(
+ com.google.api.gax.tracing.ApiTracer.class,
+ Mockito.withSettings().withoutAnnotations());
Mockito.doAnswer(
invocation -> {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallableTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallableTest.java
index d969f81b42c0..39c05ade33ae 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallableTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectServerStreamingCallableTest.java
@@ -85,7 +85,8 @@ void setUp() throws InstantiationException, IllegalAccessException, IOException
inprocessServer = new InProcessServer<>(serviceImpl, serverName);
inprocessServer.start();
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectStreamingCallableTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectStreamingCallableTest.java
index d41d4cd00589..07c841d5dd46 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectStreamingCallableTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcDirectStreamingCallableTest.java
@@ -73,7 +73,8 @@ void setUp() throws InstantiationException, IllegalAccessException, IOException
inprocessServer = new InProcessServer<>(serviceImpl, serverName);
inprocessServer.start();
channel = InProcessChannelBuilder.forName(serverName).directExecutor().usePlaintext().build();
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java
index 4ef466dd6864..667e0758006c 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningClientTest.java
@@ -29,7 +29,6 @@
*/
package com.google.api.gax.grpc;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.google.api.core.ApiFuture;
@@ -45,13 +44,14 @@
import com.google.longrunning.stub.OperationsStub;
import com.google.protobuf.Empty;
import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
class GrpcLongRunningClientTest {
@Test
void get() {
OperationsStub operationsStub =
- mock(OperationsStub.class, org.mockito.Mockito.withSettings().withoutAnnotations());
+ Mockito.mock(OperationsStub.class, Mockito.withSettings().withoutAnnotations());
when(operationsStub.getOperationCallable())
.thenReturn(
new UnaryCallable() {
@@ -75,7 +75,7 @@ public ApiFuture futureCall(
@Test
void cancel() {
OperationsStub operationsStub =
- mock(OperationsStub.class, org.mockito.Mockito.withSettings().withoutAnnotations());
+ Mockito.mock(OperationsStub.class, Mockito.withSettings().withoutAnnotations());
when(operationsStub.cancelOperationCallable())
.thenReturn(
new UnaryCallable() {
@@ -97,7 +97,7 @@ public ApiFuture futureCall(
@Test
void delete() {
OperationsStub operationsStub =
- mock(OperationsStub.class, org.mockito.Mockito.withSettings().withoutAnnotations());
+ Mockito.mock(OperationsStub.class, Mockito.withSettings().withoutAnnotations());
when(operationsStub.deleteOperationCallable())
.thenReturn(
new UnaryCallable() {
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningTest.java
index ac88e4acec6f..568f24f1b514 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcLongRunningTest.java
@@ -97,7 +97,8 @@ class GrpcLongRunningTest {
@BeforeEach
void setUp() throws IOException {
channel = mock(ManagedChannel.class);
- TransportChannelProvider operationsChannelProvider = mock(TransportChannelProvider.class);
+ TransportChannelProvider operationsChannelProvider =
+ mock(TransportChannelProvider.class, Mockito.withSettings().withoutAnnotations());
TransportChannel transportChannel =
GrpcTransportChannel.newBuilder().setManagedChannel(channel).build();
when(operationsChannelProvider.getTransportChannel()).thenReturn(transportChannel);
@@ -134,7 +135,8 @@ void setUp() throws IOException {
.setPollingAlgorithm(pollingAlgorithm)
.build();
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
@@ -162,7 +164,8 @@ void testCall() throws IOException {
GrpcCallableFactory.createOperationCallable(
createGrpcSettings(), callSettings, initialContext, operationsStub);
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcResponseMetadataTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcResponseMetadataTest.java
index bc294ef50e59..ca1650b238b2 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcResponseMetadataTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcResponseMetadataTest.java
@@ -29,6 +29,8 @@
*/
package com.google.api.gax.grpc;
+import static org.mockito.Mockito.mock;
+
import com.google.api.gax.grpc.testing.FakeServiceGrpc;
import com.google.api.gax.grpc.testing.FakeServiceGrpc.FakeServiceImplBase;
import com.google.api.gax.grpc.testing.InProcessServer;
@@ -74,7 +76,8 @@ class GrpcResponseMetadataTest {
@BeforeEach
void setUp() throws Exception {
String serverName = "fakeservice";
- FakeServiceImplBase serviceImpl = Mockito.mock(FakeServiceImplBase.class);
+ FakeServiceImplBase serviceImpl =
+ mock(FakeServiceImplBase.class, Mockito.withSettings().withoutAnnotations());
Mockito.doAnswer(
(Answer)
invocation -> {
@@ -130,7 +133,8 @@ public void close(Status status, Metadata trailers) {
.intercept(new GrpcMetadataHandlerInterceptor())
.build();
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcTransportChannelTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcTransportChannelTest.java
index f762c3899e5e..19af043902ab 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcTransportChannelTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/GrpcTransportChannelTest.java
@@ -31,16 +31,16 @@
package com.google.api.gax.grpc;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.mockito.Mockito.mock;
import io.grpc.ManagedChannel;
import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
class GrpcTransportChannelTest {
@Test
void testBuilderDefaults() {
- ManagedChannel channel = Mockito.mock(ManagedChannel.class);
+ ManagedChannel channel = mock(ManagedChannel.class);
GrpcTransportChannel grpcTransportChannel =
GrpcTransportChannel.newBuilder().setManagedChannel(channel).build();
assertFalse(grpcTransportChannel.isDirectPath());
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java
index c7f0bbcd1df9..be0365866615 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java
@@ -36,6 +36,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
import com.google.api.core.ApiFunction;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.Builder;
@@ -103,7 +104,8 @@ public static void setupClass() {
@BeforeEach
public void setup() throws IOException {
- computeEngineCredentials = Mockito.mock(ComputeEngineCredentials.class);
+ computeEngineCredentials =
+ mock(ComputeEngineCredentials.class, Mockito.withSettings().withoutAnnotations());
certificateBasedAccess =
new CertificateBasedAccess(
name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "never" : "false");
@@ -280,15 +282,17 @@ void testWithInterceptorsAndMultipleChannels() throws Exception {
}
private void testWithInterceptors(int numChannels) throws Exception {
- final GrpcInterceptorProvider interceptorProvider = Mockito.mock(GrpcInterceptorProvider.class);
+ final GrpcInterceptorProvider interceptorProvider =
+ mock(GrpcInterceptorProvider.class, Mockito.withSettings().withoutAnnotations());
InstantiatingGrpcChannelProvider channelProvider =
InstantiatingGrpcChannelProvider.newBuilder()
.setCertificateBasedAccess(certificateBasedAccess)
.setEndpoint("localhost:8080")
.setPoolSize(numChannels)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.setInterceptorProvider(interceptorProvider)
.build();
@@ -304,13 +308,14 @@ void testChannelConfigurator() throws IOException {
// Create a mock configurator that will insert mock channels
@SuppressWarnings("unchecked")
ApiFunction channelConfigurator =
- Mockito.mock(ApiFunction.class);
+ mock(ApiFunction.class, Mockito.withSettings().withoutAnnotations());
ArgumentCaptor> channelBuilderCaptor =
ArgumentCaptor.forClass(ManagedChannelBuilder.class);
- ManagedChannelBuilder> swappedBuilder = Mockito.mock(ManagedChannelBuilder.class);
- ManagedChannel fakeChannel = Mockito.mock(ManagedChannel.class);
+ ManagedChannelBuilder> swappedBuilder =
+ mock(ManagedChannelBuilder.class, Mockito.withSettings().withoutAnnotations());
+ ManagedChannel fakeChannel = mock(ManagedChannel.class);
Mockito.when(swappedBuilder.build()).thenReturn(fakeChannel);
Mockito.when(channelConfigurator.apply(channelBuilderCaptor.capture()))
@@ -320,8 +325,8 @@ void testChannelConfigurator() throws IOException {
InstantiatingGrpcChannelProvider.newBuilder()
.setCertificateBasedAccess(certificateBasedAccess)
.setEndpoint("localhost:8080")
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.setChannelConfigurator(channelConfigurator)
.setPoolSize(numChannels)
.build()
@@ -518,14 +523,16 @@ void testWithPrimeChannel() throws IOException {
// create channelProvider with different pool sizes to verify ChannelPrimer is called the
// correct number of times
for (int poolSize = 1; poolSize < 5; poolSize++) {
- final ChannelPrimer mockChannelPrimer = Mockito.mock(ChannelPrimer.class);
+ final ChannelPrimer mockChannelPrimer =
+ mock(ChannelPrimer.class, Mockito.withSettings().withoutAnnotations());
InstantiatingGrpcChannelProvider provider =
InstantiatingGrpcChannelProvider.newBuilder()
.setEndpoint("localhost:8080")
.setPoolSize(poolSize)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.setChannelPrimer(mockChannelPrimer)
.setCertificateBasedAccess(certificateBasedAccess)
.build();
@@ -620,8 +627,9 @@ protected Object getMtlsObjectFromTransportChannel(
.setEndpoint("localhost:8080")
.setMtlsProvider(provider)
.setCertificateBasedAccess(certificateBasedAccess)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.build();
return channelProvider.createMtlsChannelCredentials();
}
@@ -629,8 +637,8 @@ protected Object getMtlsObjectFromTransportChannel(
private InstantiatingGrpcChannelProvider.Builder
createChannelProviderBuilderForDirectPathLogTests() {
return InstantiatingGrpcChannelProvider.newBuilder()
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.setEndpoint("localhost:8080");
}
@@ -703,8 +711,9 @@ void testLogDirectPathMisconfigWrongCredential() throws Exception {
InstantiatingGrpcChannelProvider.newBuilder()
.setAttemptDirectPathXds()
.setAttemptDirectPath(true)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.setEndpoint(DEFAULT_ENDPOINT)
.setCertificateBasedAccess(certificateBasedAccess)
.build();
@@ -731,8 +740,9 @@ void testLogDirectPathMisconfigNotOnGCE() throws Exception {
.setAttemptDirectPathXds()
.setAttemptDirectPath(true)
.setAllowNonDefaultServiceAccount(true)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class))
- .setExecutor(Mockito.mock(Executor.class))
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()))
+ .setExecutor(mock(Executor.class))
.setEndpoint(DEFAULT_ENDPOINT)
.setCertificateBasedAccess(certificateBasedAccess)
.build();
@@ -753,7 +763,8 @@ void testLogDirectPathMisconfigNotOnGCE() throws Exception {
@Test
public void canUseDirectPath_happyPath() throws IOException {
System.setProperty("os.name", "Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -765,7 +776,8 @@ public void canUseDirectPath_happyPath() throws IOException {
.setCredentials(computeEngineCredentials)
.setEndpoint(DEFAULT_ENDPOINT)
.setEnvProvider(envProvider)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class));
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()));
Truth.assertThat(builder.isDirectPathBoundTokenEnabled()).isFalse();
InstantiatingGrpcChannelProvider provider =
new InstantiatingGrpcChannelProvider(builder, GCE_PRODUCTION_NAME_AFTER_2016);
@@ -780,8 +792,9 @@ public void canUseDirectPath_happyPath() throws IOException {
@Test
public void canUseDirectPath_boundTokenNotEnabledWithNonComputeCredentials() {
System.setProperty("os.name", "Linux");
- Credentials credentials = Mockito.mock(Credentials.class);
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ Credentials credentials = mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -803,7 +816,8 @@ public void canUseDirectPath_boundTokenNotEnabledWithNonComputeCredentials() {
@Test
public void canUseDirectPath_happyPathWithBoundToken() throws IOException {
System.setProperty("os.name", "Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -819,7 +833,8 @@ public void canUseDirectPath_happyPathWithBoundToken() throws IOException {
.setAllowHardBoundTokenTypes(Collections.singletonList(HardBoundTokenTypes.ALTS))
.setEndpoint(DEFAULT_ENDPOINT)
.setEnvProvider(envProvider)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class));
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()));
Truth.assertThat(builder.isDirectPathBoundTokenEnabled()).isTrue();
InstantiatingGrpcChannelProvider provider =
new InstantiatingGrpcChannelProvider(builder, GCE_PRODUCTION_NAME_AFTER_2016);
@@ -834,7 +849,8 @@ public void canUseDirectPath_happyPathWithBoundToken() throws IOException {
@Test
public void canUseDirectPath_directPathEnvVarDisabled() throws IOException {
System.setProperty("os.name", "Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -846,7 +862,8 @@ public void canUseDirectPath_directPathEnvVarDisabled() throws IOException {
.setCredentials(computeEngineCredentials)
.setEndpoint(DEFAULT_ENDPOINT)
.setEnvProvider(envProvider)
- .setHeaderProvider(Mockito.mock(HeaderProvider.class));
+ .setHeaderProvider(
+ mock(HeaderProvider.class, Mockito.withSettings().withoutAnnotations()));
InstantiatingGrpcChannelProvider provider =
new InstantiatingGrpcChannelProvider(builder, GCE_PRODUCTION_NAME_AFTER_2016);
Truth.assertThat(provider.canUseDirectPath()).isFalse();
@@ -888,8 +905,9 @@ public void canUseDirectPath_directPathEnvVarNotSet_attemptDirectPathIsFalse() {
@Test
public void canUseDirectPath_nonComputeCredentials() {
System.setProperty("os.name", "Linux");
- Credentials credentials = Mockito.mock(Credentials.class);
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ Credentials credentials = mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -909,7 +927,8 @@ public void canUseDirectPath_nonComputeCredentials() {
@Test
public void canUseDirectPath_isNotOnComputeEngine_invalidOsNameSystemProperty() {
System.setProperty("os.name", "Not Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -929,7 +948,8 @@ public void canUseDirectPath_isNotOnComputeEngine_invalidOsNameSystemProperty()
@Test
public void canUseDirectPath_isNotOnComputeEngine_invalidSystemProductName() {
System.setProperty("os.name", "Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -949,7 +969,8 @@ public void canUseDirectPath_isNotOnComputeEngine_invalidSystemProductName() {
@Test
public void canUseDirectPath_isNotOnComputeEngine_unableToGetSystemProductName() {
System.setProperty("os.name", "Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -968,7 +989,8 @@ public void canUseDirectPath_isNotOnComputeEngine_unableToGetSystemProductName()
@Test
public void canUseDirectPath_nonGDUUniverseDomain() {
System.setProperty("os.name", "Linux");
- EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);
+ EnvironmentProvider envProvider =
+ mock(EnvironmentProvider.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(
envProvider.getenv(
InstantiatingGrpcChannelProvider.DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))
@@ -1049,7 +1071,7 @@ void buildProvider_handlesNullHeaderProvider() {
@Test
void buildProvider_handlesNullCredentialsMetadataRequest() throws IOException {
- Credentials credentials = Mockito.mock(Credentials.class);
+ Credentials credentials = mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(credentials.getRequestMetadata()).thenReturn(null);
InstantiatingGrpcChannelProvider.Builder builder =
InstantiatingGrpcChannelProvider.newBuilder()
@@ -1066,7 +1088,7 @@ void buildProvider_handlesNullCredentialsMetadataRequest() throws IOException {
@Test
void buildProvider_handlesErrorRetrievingCredentialsMetadataRequest() throws IOException {
- Credentials credentials = Mockito.mock(Credentials.class);
+ Credentials credentials = mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
Mockito.when(credentials.getRequestMetadata())
.thenThrow(new IOException("Error getting request metadata"));
InstantiatingGrpcChannelProvider.Builder builder =
@@ -1150,7 +1172,8 @@ void createMtlsToS2AChannelCredentials_success() throws IOException {
@Test
void createS2ASecuredChannelCredentials_bothS2AAddressesNull_returnsNull() {
InstantiatingGrpcChannelProvider.resetS2AChannelCredentials();
- SecureSessionAgent s2aConfigProvider = Mockito.mock(SecureSessionAgent.class);
+ SecureSessionAgent s2aConfigProvider =
+ mock(SecureSessionAgent.class, Mockito.withSettings().withoutAnnotations());
SecureSessionAgentConfig config = SecureSessionAgentConfig.createBuilder().build();
Mockito.when(s2aConfigProvider.getConfig()).thenReturn(config);
InstantiatingGrpcChannelProvider provider =
@@ -1164,7 +1187,8 @@ void createS2ASecuredChannelCredentials_bothS2AAddressesNull_returnsNull() {
void
createS2ASecuredChannelCredentials_mtlsS2AAddressNull_returnsPlaintextToS2AS2AChannelCredentials() {
InstantiatingGrpcChannelProvider.resetS2AChannelCredentials();
- SecureSessionAgent s2aConfigProvider = Mockito.mock(SecureSessionAgent.class);
+ SecureSessionAgent s2aConfigProvider =
+ mock(SecureSessionAgent.class, Mockito.withSettings().withoutAnnotations());
SecureSessionAgentConfig config =
SecureSessionAgentConfig.createBuilder().setPlaintextAddress("localhost:8080").build();
Mockito.when(s2aConfigProvider.getConfig()).thenReturn(config);
@@ -1185,7 +1209,8 @@ void createS2ASecuredChannelCredentials_bothS2AAddressesNull_returnsNull() {
void
createTwoS2ASecuredChannelCredentials_mtlsS2AAddressNull_returnsSamePlaintextToS2AS2AChannelCredentials() {
InstantiatingGrpcChannelProvider.resetS2AChannelCredentials();
- SecureSessionAgent s2aConfigProvider = Mockito.mock(SecureSessionAgent.class);
+ SecureSessionAgent s2aConfigProvider =
+ mock(SecureSessionAgent.class, Mockito.withSettings().withoutAnnotations());
SecureSessionAgentConfig config =
SecureSessionAgentConfig.createBuilder().setPlaintextAddress("localhost:8080").build();
Mockito.when(s2aConfigProvider.getConfig()).thenReturn(config);
@@ -1205,7 +1230,8 @@ void createS2ASecuredChannelCredentials_bothS2AAddressesNull_returnsNull() {
@Test
void createS2ASecuredChannelCredentials_returnsPlaintextToS2AS2AChannelCredentials() {
InstantiatingGrpcChannelProvider.resetS2AChannelCredentials();
- SecureSessionAgent s2aConfigProvider = Mockito.mock(SecureSessionAgent.class);
+ SecureSessionAgent s2aConfigProvider =
+ mock(SecureSessionAgent.class, Mockito.withSettings().withoutAnnotations());
SecureSessionAgentConfig config =
SecureSessionAgentConfig.createBuilder()
.setMtlsAddress("localhost:8080")
@@ -1308,7 +1334,8 @@ void testDefaultBuilderNeedsBackgroundExecutor() {
@Test
void testSettingBackgroundExecutor() {
- ScheduledExecutorService mockExecutor = Mockito.mock(ScheduledExecutorService.class);
+ ScheduledExecutorService mockExecutor =
+ Mockito.mock(ScheduledExecutorService.class, Mockito.withSettings().withoutAnnotations());
InstantiatingGrpcChannelProvider provider =
InstantiatingGrpcChannelProvider.newBuilder().setBackgroundExecutor(mockExecutor).build();
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java
index a1ab8a8e8eea..041ed03233d2 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java
@@ -31,6 +31,7 @@
import static com.google.api.gax.util.TimeConversionTestUtils.testDurationMethod;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.mock;
import com.google.api.gax.batching.BatchingSettings;
import com.google.api.gax.core.CredentialsProvider;
@@ -72,11 +73,13 @@ private static class FakeStubSettings extends StubSettings {
@SuppressWarnings("unchecked")
private static final PagedListResponseFactory
- fakePagedListResponseFactory = Mockito.mock(PagedListResponseFactory.class);
+ fakePagedListResponseFactory =
+ Mockito.mock(
+ PagedListResponseFactory.class, Mockito.withSettings().withoutAnnotations());
@SuppressWarnings("unchecked")
private static final BatchingDescriptor FAKE_BATCHING_DESCRIPTOR =
- Mockito.mock(BatchingDescriptor.class);
+ Mockito.mock(BatchingDescriptor.class, Mockito.withSettings().withoutAnnotations());
private static final String DEFAULT_GAPIC_NAME = "gapic";
public static final String DEFAULT_SERVICE_ADDRESS = "pubsub-experimental.googleapis.com";
@@ -265,7 +268,7 @@ public BatchingCallSettings.Builder fakeMethodBatching() {
@Test
void customCredentials() throws IOException {
- Credentials credentials = Mockito.mock(Credentials.class);
+ Credentials credentials = mock(Credentials.class, Mockito.withSettings().withoutAnnotations());
FakeStubSettings settings =
FakeStubSettings.newBuilder()
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/TimeoutTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/TimeoutTest.java
index ab0848e6ff14..16ac30a05c5d 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/TimeoutTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/TimeoutTest.java
@@ -30,6 +30,7 @@
package com.google.api.gax.grpc;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import com.google.api.gax.retrying.RetrySettings;
@@ -66,6 +67,7 @@
@ExtendWith(MockitoExtension.class)
class TimeoutTest {
+
private static final String CALL_OPTIONS_AUTHORITY = "RETRYING_TEST";
private static final int DEADLINE_IN_DAYS = 7;
private static final int DEADLINE_IN_MINUTES = 10;
@@ -82,12 +84,19 @@ class TimeoutTest {
private static GrpcCallContext defaultCallContext;
@Mock private Marshaller stringMarshaller;
- @Mock private RequestParamsExtractor paramsExtractor;
+ private RequestParamsExtractor paramsExtractor;
@Mock private ManagedChannel managedChannel;
+ @org.junit.jupiter.api.BeforeEach
+ void initParamsExtractor() {
+ paramsExtractor =
+ Mockito.mock(RequestParamsExtractor.class, Mockito.withSettings().withoutAnnotations());
+ }
+
@BeforeAll
public static void setUp() throws IOException {
- EndpointContext endpointContext = Mockito.mock(EndpointContext.class);
+ EndpointContext endpointContext =
+ Mockito.mock(EndpointContext.class, Mockito.withSettings().withoutAnnotations());
Mockito.doNothing()
.when(endpointContext)
.validateUniverseDomain(Mockito.any(Credentials.class), Mockito.any(GrpcStatusCode.class));
@@ -336,7 +345,7 @@ private CallOptions setupUnaryCallable(
.build();
@SuppressWarnings("unchecked")
- ClientCall clientCall = Mockito.mock(ClientCall.class);
+ ClientCall clientCall = mock(ClientCall.class);
Mockito.doReturn(clientCall)
.when(managedChannel)
.newCall(ArgumentMatchers.eq(methodDescriptor), ArgumentMatchers.any(CallOptions.class));
@@ -397,7 +406,7 @@ private CallOptions setupServerStreamingCallable(
.build();
@SuppressWarnings("unchecked")
- ClientCall clientCall = Mockito.mock(ClientCall.class);
+ ClientCall clientCall = mock(ClientCall.class);
Mockito.doReturn(clientCall)
.when(managedChannel)
.newCall(ArgumentMatchers.eq(methodDescriptor), ArgumentMatchers.any(CallOptions.class));
diff --git a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/testing/MockServiceHelperTest.java b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/testing/MockServiceHelperTest.java
index c851e93c7bef..47e0cb715fa6 100644
--- a/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/testing/MockServiceHelperTest.java
+++ b/sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/testing/MockServiceHelperTest.java
@@ -45,18 +45,21 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
/** Tests for {@link MockServiceHelper}. */
public class MockServiceHelperTest {
- @Mock private MockGrpcService grpcService;
- @Mock private MockGrpcService grpcService2;
+ private MockGrpcService grpcService;
+ private MockGrpcService grpcService2;
@Mock private Server server;
/** Sets up mocks. */
@BeforeEach
void setUp() {
+ grpcService = Mockito.mock(MockGrpcService.class, Mockito.withSettings().withoutAnnotations());
+ grpcService2 = Mockito.mock(MockGrpcService.class, Mockito.withSettings().withoutAnnotations());
MockitoAnnotations.initMocks(this);
when(grpcService.getServiceDefinition())
.thenReturn(ServerServiceDefinition.builder("fake-service").build());
diff --git a/sdk-platform-java/gax-java/gax-httpjson/BUILD.bazel b/sdk-platform-java/gax-java/gax-httpjson/BUILD.bazel
index 78b2c01bb256..6b1c5595897a 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/BUILD.bazel
+++ b/sdk-platform-java/gax-java/gax-httpjson/BUILD.bazel
@@ -12,6 +12,7 @@ _COMPILE_DEPS = [
"@com_google_guava_guava//jar",
"@com_google_code_findbugs_jsr305//jar",
"@com_google_errorprone_error_prone_annotations//jar",
+ "@org_jspecify_jspecify//jar",
"@org_threeten_threetenbp//jar",
"@com_google_http_client_google_http_client//jar",
"@gapic_generator_java//google-auth-library-java/oauth2_http",
diff --git a/sdk-platform-java/gax-java/gax-httpjson/pom.xml b/sdk-platform-java/gax-java/gax-httpjson/pom.xml
index de839fe6e074..d46c32ffa025 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/pom.xml
+++ b/sdk-platform-java/gax-java/gax-httpjson/pom.xml
@@ -20,6 +20,10 @@
+
+ org.jspecify
+ jspecify
+
com.google.api
gax
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ApiMethodDescriptor.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ApiMethodDescriptor.java
index 69e2e0fff7e1..0878c3e5b848 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ApiMethodDescriptor.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ApiMethodDescriptor.java
@@ -30,10 +30,12 @@
package com.google.api.gax.httpjson;
import com.google.auto.value.AutoValue;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
@AutoValue
/* Method descriptor for messages to be transmitted over HTTP. */
+@NullMarked
public abstract class ApiMethodDescriptor {
public enum MethodType {
UNARY,
@@ -50,14 +52,12 @@ public enum MethodType {
public abstract HttpResponseParser getResponseParser();
/** Return the HTTP method for this request message type. */
- @Nullable
- public abstract String getHttpMethod();
+ public abstract @Nullable String getHttpMethod();
- @Nullable
- public abstract OperationSnapshotFactory getOperationSnapshotFactory();
+ public abstract @Nullable OperationSnapshotFactory
+ getOperationSnapshotFactory();
- @Nullable
- public abstract PollingRequestFactory getPollingRequestFactory();
+ public abstract @Nullable PollingRequestFactory getPollingRequestFactory();
public abstract MethodType getType();
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/FieldsExtractor.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/FieldsExtractor.java
index aa42604596fc..463acb9aebed 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/FieldsExtractor.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/FieldsExtractor.java
@@ -29,10 +29,13 @@
*/
package com.google.api.gax.httpjson;
+import org.jspecify.annotations.NullMarked;
+
/**
* A functional interface to be implemented for each request message to extract specific fields from
* it. For advanced usage only.
*/
+@NullMarked
@FunctionalInterface
public interface FieldsExtractor {
ParamsT extract(RequestT request);
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCall.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCall.java
index 09e97a61c86c..f1bea5a1688a 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCall.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCall.java
@@ -29,12 +29,14 @@
*/
package com.google.api.gax.httpjson;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A {@link HttpJsonClientCall} which forwards all of its methods to another {@link
* HttpJsonClientCall}.
*/
+@NullMarked
public abstract class ForwardingHttpJsonClientCall
extends HttpJsonClientCall {
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCallListener.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCallListener.java
index 1d6eb2599a6a..26ecc1895f9f 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCallListener.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ForwardingHttpJsonClientCallListener.java
@@ -30,10 +30,13 @@
package com.google.api.gax.httpjson;
+import org.jspecify.annotations.NullMarked;
+
/**
* A {@link HttpJsonClientCall.Listener} which forwards all of its methods to another {@link
* HttpJsonClientCall.Listener}.
*/
+@NullMarked
public abstract class ForwardingHttpJsonClientCallListener
extends HttpJsonClientCall.Listener {
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/GaxHttpJsonProperties.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/GaxHttpJsonProperties.java
index a12f771fdc3f..af4503fe9257 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/GaxHttpJsonProperties.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/GaxHttpJsonProperties.java
@@ -31,8 +31,10 @@
import com.google.api.core.InternalApi;
import java.util.regex.Pattern;
+import org.jspecify.annotations.NullMarked;
/** Provides properties of the GAX-HTTPJSON library. */
+@NullMarked
@InternalApi
public class GaxHttpJsonProperties {
private static final Pattern DEFAULT_API_CLIENT_HEADER_PATTERN =
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpHeadersUtils.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpHeadersUtils.java
index 8f1ce432ef66..66f89451225f 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpHeadersUtils.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpHeadersUtils.java
@@ -36,11 +36,14 @@
import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Map;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/** This class is for internal use only and is public for technical reasons. */
+@NullMarked
@InternalApi
public class HttpHeadersUtils {
- public static String getUserAgentValue(Map headersMap) {
+ public static @Nullable String getUserAgentValue(Map headersMap) {
for (Map.Entry entry : headersMap.entrySet()) {
if ("user-agent".equalsIgnoreCase(entry.getKey())) {
return entry.getValue();
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonApiExceptionFactory.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonApiExceptionFactory.java
index 55c9a68b52b9..bbd7e3ea58cd 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonApiExceptionFactory.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonApiExceptionFactory.java
@@ -39,7 +39,9 @@
import com.google.rpc.Status;
import java.util.Set;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
+@NullMarked
class HttpJsonApiExceptionFactory {
private final Set retryableCodes;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java
index c946e9aab03d..941dc646f14a 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java
@@ -56,7 +56,8 @@
import java.util.Objects;
import java.util.Set;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* HttpJsonCallContext encapsulates context data used to make an http-json call.
@@ -66,19 +67,20 @@
* copies of the object, but with one field changed. The immutability and thread safety of the
* arguments solely depends on the arguments themselves.
*/
+@NullMarked
public final class HttpJsonCallContext implements ApiCallContext {
private static final HttpJsonStatusCode UNAUTHENTICATED_STATUS_CODE =
HttpJsonStatusCode.of(StatusCode.Code.UNAUTHENTICATED);
private final HttpJsonChannel channel;
private final HttpJsonCallOptions callOptions;
- @Nullable private final java.time.Duration timeout;
- @Nullable private final java.time.Duration streamWaitTimeout;
- @Nullable private final java.time.Duration streamIdleTimeout;
+ private final java.time.@Nullable Duration timeout;
+ private final java.time.@Nullable Duration streamWaitTimeout;
+ private final java.time.@Nullable Duration streamIdleTimeout;
private final ImmutableMap> extraHeaders;
private final ApiCallContextOptions options;
private final ApiTracer tracer;
- @Nullable private final RetrySettings retrySettings;
- @Nullable private final ImmutableSet retryableCodes;
+ private final @Nullable RetrySettings retrySettings;
+ private final @Nullable ImmutableSet retryableCodes;
private final EndpointContext endpointContext;
/** Returns an empty instance. */
@@ -113,16 +115,16 @@ public static HttpJsonCallContext of(HttpJsonChannel channel, HttpJsonCallOption
}
private HttpJsonCallContext(
- HttpJsonChannel channel,
+ @Nullable HttpJsonChannel channel,
HttpJsonCallOptions callOptions,
- java.time.Duration timeout,
- java.time.Duration streamWaitTimeout,
- java.time.Duration streamIdleTimeout,
+ java.time.@Nullable Duration timeout,
+ java.time.@Nullable Duration streamWaitTimeout,
+ java.time.@Nullable Duration streamIdleTimeout,
ImmutableMap> extraHeaders,
ApiCallContextOptions options,
- ApiTracer tracer,
- RetrySettings defaultRetrySettings,
- Set defaultRetryableCodes,
+ @Nullable ApiTracer tracer,
+ @Nullable RetrySettings defaultRetrySettings,
+ @Nullable Set defaultRetryableCodes,
@Nullable EndpointContext endpointContext) {
this.channel = channel;
this.callOptions = callOptions;
@@ -303,16 +305,14 @@ public HttpJsonCallContext withTimeoutDuration(java.time.Duration timeout) {
}
/** This method is obsolete. Use {@link #getTimeoutDuration()} instead. */
- @Nullable
@Override
@ObsoleteApi("Use getTimeoutDuration instead")
- public org.threeten.bp.Duration getTimeout() {
+ public org.threeten.bp.@Nullable Duration getTimeout() {
return toThreetenDuration(getTimeoutDuration());
}
- @Nullable
@Override
- public java.time.Duration getTimeoutDuration() {
+ public java.time.@Nullable Duration getTimeoutDuration() {
return timeout;
}
@@ -323,13 +323,13 @@ public java.time.Duration getTimeoutDuration() {
@Override
@ObsoleteApi("Use withStreamWaitTimeoutDuration(java.time.Duration) instead")
public HttpJsonCallContext withStreamWaitTimeout(
- @Nullable org.threeten.bp.Duration streamWaitTimeout) {
+ org.threeten.bp.@Nullable Duration streamWaitTimeout) {
return withStreamWaitTimeoutDuration(toJavaTimeDuration(streamWaitTimeout));
}
@Override
public HttpJsonCallContext withStreamWaitTimeoutDuration(
- @Nullable java.time.Duration streamWaitTimeout) {
+ java.time.@Nullable Duration streamWaitTimeout) {
if (streamWaitTimeout != null) {
Preconditions.checkArgument(
streamWaitTimeout.compareTo(java.time.Duration.ZERO) >= 0, "Invalid timeout: < 0 s");
@@ -351,9 +351,8 @@ public HttpJsonCallContext withStreamWaitTimeoutDuration(
/** This method is obsolete. Use {@link #getStreamWaitTimeoutDuration()} instead. */
@Override
- @Nullable
@ObsoleteApi("Use getStreamWaitTimeoutDuration() instead")
- public org.threeten.bp.Duration getStreamWaitTimeout() {
+ public org.threeten.bp.@Nullable Duration getStreamWaitTimeout() {
return toThreetenDuration(getStreamWaitTimeoutDuration());
}
@@ -363,8 +362,7 @@ public org.threeten.bp.Duration getStreamWaitTimeout() {
* @see ApiCallContext#withStreamWaitTimeoutDuration(java.time.Duration)
*/
@Override
- @Nullable
- public java.time.Duration getStreamWaitTimeoutDuration() {
+ public java.time.@Nullable Duration getStreamWaitTimeoutDuration() {
return streamWaitTimeout;
}
@@ -375,13 +373,13 @@ public java.time.Duration getStreamWaitTimeoutDuration() {
@Override
@ObsoleteApi("Use withStreamIdleTimeoutDuration(java.time.Duration) instead")
public HttpJsonCallContext withStreamIdleTimeout(
- @Nullable org.threeten.bp.Duration streamIdleTimeout) {
+ org.threeten.bp.@Nullable Duration streamIdleTimeout) {
return withStreamIdleTimeoutDuration(toJavaTimeDuration(streamIdleTimeout));
}
@Override
public HttpJsonCallContext withStreamIdleTimeoutDuration(
- @Nullable java.time.Duration streamIdleTimeout) {
+ java.time.@Nullable Duration streamIdleTimeout) {
if (streamIdleTimeout != null) {
Preconditions.checkArgument(
streamIdleTimeout.compareTo(java.time.Duration.ZERO) >= 0, "Invalid timeout: < 0 s");
@@ -403,9 +401,8 @@ public HttpJsonCallContext withStreamIdleTimeoutDuration(
/** This method is obsolete. Use {@link #getStreamIdleTimeoutDuration()} instead. */
@Override
- @Nullable
@ObsoleteApi("Use getStreamIdleTimeoutDuration() instead")
- public org.threeten.bp.Duration getStreamIdleTimeout() {
+ public org.threeten.bp.@Nullable Duration getStreamIdleTimeout() {
return toThreetenDuration(getStreamIdleTimeoutDuration());
}
@@ -415,8 +412,7 @@ public org.threeten.bp.Duration getStreamIdleTimeout() {
* @see ApiCallContext#withStreamIdleTimeoutDuration(java.time.Duration)
*/
@Override
- @Nullable
- public java.time.Duration getStreamIdleTimeoutDuration() {
+ public java.time.@Nullable Duration getStreamIdleTimeoutDuration() {
return streamIdleTimeout;
}
@@ -504,14 +500,12 @@ public HttpJsonCallOptions getCallOptions() {
}
@Deprecated
- @Nullable
- public org.threeten.bp.Instant getDeadline() {
+ public org.threeten.bp.@Nullable Instant getDeadline() {
return getCallOptions() != null ? getCallOptions().getDeadline() : null;
}
@Deprecated
- @Nullable
- public Credentials getCredentials() {
+ public @Nullable Credentials getCredentials() {
return getCallOptions() != null ? getCallOptions().getCredentials() : null;
}
@@ -624,7 +618,7 @@ public HttpJsonCallContext withTracer(@Nonnull ApiTracer newTracer) {
}
@Override
- public boolean equals(Object o) {
+ public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallOptions.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallOptions.java
index 1f0022bb4390..aac7a69c590d 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallOptions.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallOptions.java
@@ -39,41 +39,36 @@
import com.google.auth.Credentials;
import com.google.auto.value.AutoValue;
import com.google.protobuf.TypeRegistry;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/** Options for an http-json call, including deadline and credentials. */
+@NullMarked
@AutoValue
public abstract class HttpJsonCallOptions {
public static final HttpJsonCallOptions DEFAULT = newBuilder().build();
/** This method is obsolete. Use {@link #getTimeoutDuration()} instead. */
- @Nullable
@ObsoleteApi("Use getTimeoutDuration() instead")
- public final org.threeten.bp.Duration getTimeout() {
+ public final org.threeten.bp.@Nullable Duration getTimeout() {
return toThreetenDuration(getTimeoutDuration());
}
- @Nullable
- public abstract java.time.Duration getTimeoutDuration();
+ public abstract java.time.@Nullable Duration getTimeoutDuration();
/** This method is obsolete. Use {@link #getDeadlineInstant()} instead. */
- @Nullable
@ObsoleteApi("Use getDeadlineInstant() instead")
- public final org.threeten.bp.Instant getDeadline() {
+ public final org.threeten.bp.@Nullable Instant getDeadline() {
return toThreetenInstant(getDeadlineInstant());
}
- @Nullable
- public abstract java.time.Instant getDeadlineInstant();
+ public abstract java.time.@Nullable Instant getDeadlineInstant();
- @Nullable
- public abstract Credentials getCredentials();
+ public abstract @Nullable Credentials getCredentials();
- @Nullable
- public abstract TypeRegistry getTypeRegistry();
+ public abstract @Nullable TypeRegistry getTypeRegistry();
- @Nullable
- public abstract ApiTracer getTracer();
+ public abstract @Nullable ApiTracer getTracer();
public abstract Builder toBuilder();
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallSettings.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallSettings.java
index 835fe5c92346..36ba46069e37 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallSettings.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallSettings.java
@@ -34,8 +34,10 @@
import com.google.api.gax.rpc.RequestParamsExtractor;
import com.google.api.gax.rpc.ResourceNameExtractor;
import com.google.protobuf.TypeRegistry;
+import org.jspecify.annotations.NullMarked;
/** HTTP-specific settings for creating callables. */
+@NullMarked
public class HttpJsonCallSettings {
private final ApiMethodDescriptor methodDescriptor;
private final RequestParamsExtractor paramsExtractor;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallableFactory.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallableFactory.java
index 447fc46dd9e0..3baeb3d284c2 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallableFactory.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallableFactory.java
@@ -46,8 +46,10 @@
import com.google.api.gax.tracing.ApiTracerContext;
import com.google.api.gax.tracing.TracedUnaryCallable;
import javax.annotation.Nonnull;
+import org.jspecify.annotations.NullMarked;
/** Class with utility methods to create http/json-based direct callables. */
+@NullMarked
public class HttpJsonCallableFactory {
private HttpJsonCallableFactory() {}
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonChannel.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonChannel.java
index bea8c5ea8021..4d6249e2b7e2 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonChannel.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonChannel.java
@@ -29,7 +29,10 @@
*/
package com.google.api.gax.httpjson;
+import org.jspecify.annotations.NullMarked;
+
/** HttpJsonChannel contains the functionality to issue http-json calls. */
+@NullMarked
public interface HttpJsonChannel {
HttpJsonClientCall newCall(
ApiMethodDescriptor methodDescriptor, HttpJsonCallOptions callOptions);
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCall.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCall.java
index e70a6eb8576f..fef0f62fd445 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCall.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCall.java
@@ -29,7 +29,8 @@
*/
package com.google.api.gax.httpjson;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
// This class mimics the structure and behavior of the corresponding ClientCall from gRPC package as
// closely as possible.
@@ -57,6 +58,7 @@
* @param type of message sent to the server
* @param type of message received one or more times from the server
*/
+@NullMarked
public abstract class HttpJsonClientCall {
/**
* Callbacks for receiving metadata, response messages and completion status from the server.
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCallImpl.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCallImpl.java
index 53a4dd66d3ad..a89e2e02a0dc 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCallImpl.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCallImpl.java
@@ -47,7 +47,8 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* This class serves as main implementation of {@link HttpJsonClientCall} for REST transport and is
@@ -60,6 +61,7 @@
* @param call request type
* @param call response type
*/
+@NullMarked
final class HttpJsonClientCallImpl
extends HttpJsonClientCall implements ResultListener {
//
@@ -109,6 +111,7 @@ final class HttpJsonClientCallImpl
//
// Response-specific data (received from server).
//
+ @Nullable
@GuardedBy("lock")
private HttpRequestRunnable requestRunnable;
@@ -125,6 +128,7 @@ final class HttpJsonClientCallImpl
// can be cancelled if a response (either an error or valid payload) has been
// received before the timeout. This value may be null if the RPC does not have a
// timeout.
+ @Nullable
@GuardedBy("lock")
private volatile ScheduledFuture> timeoutFuture;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCalls.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCalls.java
index 6a2f97401101..221e4fa2d8d0 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCalls.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientCalls.java
@@ -34,12 +34,14 @@
import com.google.api.gax.rpc.ApiCallContext;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.jspecify.annotations.NullMarked;
/**
* {@code HttpJsonClientCalls} creates a new {@code HttpJsonClientCall} from the given call context.
*
* Package-private for internal use.
*/
+@NullMarked
class HttpJsonClientCalls {
private static final Logger LOGGER = Logger.getLogger(HttpJsonClientCalls.class.getName());
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientInterceptor.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientInterceptor.java
index 08dbe2970beb..c621a0c9455e 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientInterceptor.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonClientInterceptor.java
@@ -29,6 +29,8 @@
*/
package com.google.api.gax.httpjson;
+import org.jspecify.annotations.NullMarked;
+
/**
* Interface for intercepting outgoing calls before they are dispatched by a {@link
* HttpJsonChannel}.
@@ -36,6 +38,7 @@
*
The interceptor may be called for multiple {@link HttpJsonClientCall calls} by one or more
* threads without completing the previous ones first. The implementations must be thread-safe.
*/
+@NullMarked
public interface HttpJsonClientInterceptor {
/**
* Intercept {@link HttpJsonClientCall} creation by the {@code next} {@link HttpJsonChannel}.
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectCallable.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectCallable.java
index abf3290067d8..5601fadec554 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectCallable.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectCallable.java
@@ -34,12 +34,15 @@
import com.google.api.gax.rpc.UnaryCallable;
import com.google.common.base.Preconditions;
import com.google.protobuf.TypeRegistry;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* {@code HttpJsonDirectCallable} creates HTTP calls.
*
*
Package-private for internal use.
*/
+@NullMarked
class HttpJsonDirectCallable extends UnaryCallable {
private final ApiMethodDescriptor descriptor;
private final TypeRegistry typeRegistry;
@@ -49,7 +52,7 @@ class HttpJsonDirectCallable extends UnaryCallable descriptor, TypeRegistry typeRegistry) {
+ ApiMethodDescriptor descriptor, @Nullable TypeRegistry typeRegistry) {
this.descriptor = descriptor;
this.typeRegistry = typeRegistry;
}
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectServerStreamingCallable.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectServerStreamingCallable.java
index 2f98ac177eaf..04db4b091198 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectServerStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectServerStreamingCallable.java
@@ -34,6 +34,7 @@
import com.google.api.gax.rpc.ServerStreamingCallable;
import com.google.api.gax.rpc.StreamController;
import com.google.common.base.Preconditions;
+import org.jspecify.annotations.NullMarked;
/**
* {@code HttpJsonDirectServerStreamingCallable} creates server-streaming REST calls.
@@ -45,6 +46,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class HttpJsonDirectServerStreamingCallable
extends ServerStreamingCallable {
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectStreamController.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectStreamController.java
index 9e1b23b25741..6596888e7712 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectStreamController.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonDirectStreamController.java
@@ -34,6 +34,7 @@
import com.google.api.gax.rpc.StreamController;
import com.google.common.base.Preconditions;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
/**
* Wraps a HttpJsonClientCall in a {@link StreamController}. It feeds events to a {@link
@@ -41,6 +42,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class HttpJsonDirectStreamController implements StreamController {
private final HttpJsonClientCall clientCall;
private final ResponseObserver responseObserver;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonErrorParser.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonErrorParser.java
index 329a7542b96b..6ba0be8f8f1b 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonErrorParser.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonErrorParser.java
@@ -50,6 +50,7 @@
import com.google.rpc.ResourceInfo;
import com.google.rpc.RetryInfo;
import com.google.rpc.Status;
+import org.jspecify.annotations.NullMarked;
/**
* Utility for parsing Google Cloud error responses from JSON.
@@ -59,6 +60,7 @@
* href="https://google.aip.dev/193#http11-json-representation">AIP-193. The payload typically
* contains a top-level "error" object with a "details" list.
*/
+@NullMarked
@InternalApi
class HttpJsonErrorParser {
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionCallable.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionCallable.java
index ede9ce3437fd..6360a9404b19 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionCallable.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionCallable.java
@@ -42,12 +42,14 @@
import com.google.common.base.Preconditions;
import java.util.Set;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
/**
* Transforms all {@code Throwable}s thrown during a call into an instance of {@link ApiException}.
*
* Package-private for internal use.
*/
+@NullMarked
class HttpJsonExceptionCallable extends UnaryCallable {
private final UnaryCallable callable;
private final HttpJsonApiExceptionFactory exceptionFactory;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionResponseObserver.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionResponseObserver.java
index 0264a33f080a..b8998b65500e 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionResponseObserver.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionResponseObserver.java
@@ -33,8 +33,10 @@
import com.google.api.gax.rpc.StateCheckingResponseObserver;
import com.google.api.gax.rpc.StreamController;
import java.util.concurrent.CancellationException;
+import org.jspecify.annotations.NullMarked;
/** Package-private for internal use. */
+@NullMarked
class HttpJsonExceptionResponseObserver
extends StateCheckingResponseObserver {
private final ResponseObserver innerObserver;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionServerStreamingCallable.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionServerStreamingCallable.java
index 7c82b2fb1353..7d56ec59d544 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionServerStreamingCallable.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonExceptionServerStreamingCallable.java
@@ -36,6 +36,7 @@
import com.google.api.gax.rpc.ServerStreamingCallable;
import com.google.api.gax.rpc.StatusCode.Code;
import java.util.Set;
+import org.jspecify.annotations.NullMarked;
/**
* Transforms all {@code Throwable}s thrown during a rest call into an instance of {@link
@@ -43,6 +44,7 @@
*
* Package-private for internal use.
*/
+@NullMarked
class HttpJsonExceptionServerStreamingCallable
extends ServerStreamingCallable {
private final ServerStreamingCallable inner;
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancer.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancer.java
index 0efa599b8b01..2e9be2eb3788 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancer.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancer.java
@@ -30,8 +30,10 @@
package com.google.api.gax.httpjson;
import com.google.api.client.http.HttpHeaders;
+import org.jspecify.annotations.NullMarked;
/** Interface for functionality to enhance headers for an http-json call. */
+@NullMarked
public interface HttpJsonHeaderEnhancer {
void enhance(HttpHeaders headers);
}
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancers.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancers.java
index 074cfc29b25a..bbd609293f78 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancers.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderEnhancers.java
@@ -30,8 +30,10 @@
package com.google.api.gax.httpjson;
import com.google.api.client.http.HttpHeaders;
+import org.jspecify.annotations.NullMarked;
/** Utility class that creates instances of {@link HttpJsonHeaderEnhancer}. */
+@NullMarked
public class HttpJsonHeaderEnhancers {
private HttpJsonHeaderEnhancers() {}
diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderInterceptor.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderInterceptor.java
index 0f58181cb61b..a07931572250 100644
--- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderInterceptor.java
+++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonHeaderInterceptor.java
@@ -32,12 +32,14 @@
import com.google.api.gax.httpjson.ForwardingHttpJsonClientCall.SimpleForwardingHttpJsonClientCall;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
+import org.jspecify.annotations.NullMarked;
/**
* An interceptor to handle custom headers.
*
*