diff --git a/google-cloud-clients/google-cloud-firestore/src/main/java/com/google/cloud/firestore/FirestoreOptions.java b/google-cloud-clients/google-cloud-firestore/src/main/java/com/google/cloud/firestore/FirestoreOptions.java index 0d91ee0764fa..ba79ee48c6ad 100644 --- a/google-cloud-clients/google-cloud-firestore/src/main/java/com/google/cloud/firestore/FirestoreOptions.java +++ b/google-cloud-clients/google-cloud-firestore/src/main/java/com/google/cloud/firestore/FirestoreOptions.java @@ -33,6 +33,7 @@ import java.util.Objects; import java.util.Set; import javax.annotation.Nonnull; +import javax.annotation.Nullable; /** A Factory class to create new Firestore instances. */ public final class FirestoreOptions extends ServiceOptions { @@ -107,12 +108,10 @@ public TransportChannelProvider getTransportChannelProvider() { public static class Builder extends ServiceOptions.Builder { - private String databaseId = FirestoreDefaults.INSTANCE.getDatabaseId(); - private boolean timestampsInSnapshotsEnabled = DEFAULT_TIMESTAMPS_IN_SNAPSHOTS_ENABLED; - private TransportChannelProvider channelProvider = - FirestoreDefaults.INSTANCE.getDefaultTransportChannelProvider(); - private CredentialsProvider credentialsProvider = - FirestoreDefaults.INSTANCE.getDefaultCredentialsProvider(); + @Nullable private String databaseId = null; + @Nullable private Boolean timestampsInSnapshotsEnabled = null; + @Nullable private TransportChannelProvider channelProvider = null; + @Nullable private CredentialsProvider credentialsProvider = null; private Builder() {} @@ -217,10 +216,26 @@ public FirestoreOptions build() { protected FirestoreOptions(Builder builder) { super(FirestoreFactory.class, FirestoreRpcFactory.class, builder, new FirestoreDefaults()); - this.databaseId = builder.databaseId; - this.channelProvider = builder.channelProvider; - this.credentialsProvider = builder.credentialsProvider; - this.timestampsInSnapshotsEnabled = builder.timestampsInSnapshotsEnabled; + this.databaseId = + builder.databaseId != null + ? builder.databaseId + : FirestoreDefaults.INSTANCE.getDatabaseId(); + + this.timestampsInSnapshotsEnabled = + builder.timestampsInSnapshotsEnabled != null + ? builder.timestampsInSnapshotsEnabled + : DEFAULT_TIMESTAMPS_IN_SNAPSHOTS_ENABLED; + + this.channelProvider = + builder.channelProvider != null + ? builder.channelProvider + : GrpcTransportOptions.setUpChannelProvider( + FirestoreSettings.defaultGrpcTransportProviderBuilder(), this); + + this.credentialsProvider = + builder.credentialsProvider != null + ? builder.credentialsProvider + : GrpcTransportOptions.setUpCredentialsProvider(this); } private static class FirestoreDefaults implements ServiceDefaults { @@ -229,10 +244,6 @@ private static class FirestoreDefaults implements ServiceDefaults