diff --git a/README.md b/README.md
index c582f2b63..dcb40a9cc 100644
--- a/README.md
+++ b/README.md
@@ -50,20 +50,20 @@ If you are using Maven without the BOM, add this to your dependencies:
If you are using Gradle 5.x or later, add this to your dependencies:
```Groovy
-implementation platform('com.google.cloud:libraries-bom:26.34.0')
+implementation platform('com.google.cloud:libraries-bom:26.37.0')
implementation 'com.google.cloud:google-cloud-datastore'
```
If you are using Gradle without BOM, add this to your dependencies:
```Groovy
-implementation 'com.google.cloud:google-cloud-datastore:2.18.5'
+implementation 'com.google.cloud:google-cloud-datastore:2.19.0'
```
If you are using SBT, add this to your dependencies:
```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.18.5"
+libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.19.0"
```
@@ -380,7 +380,7 @@ Java is a registered trademark of Oracle and/or its affiliates.
[kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-datastore/java11.html
[stability-image]: https://img.shields.io/badge/stability-stable-green
[maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-datastore.svg
-[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.18.5
+[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.19.0
[authentication]: https://github.com/googleapis/google-cloud-java#authentication
[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles
diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml
index e07c6912d..45ffa5998 100644
--- a/google-cloud-datastore/pom.xml
+++ b/google-cloud-datastore/pom.xml
@@ -42,6 +42,10 @@
com.google.api.grpc
proto-google-cloud-datastore-admin-v1
+
+ com.google.cloud.datastore
+ datastore-v1-proto-client
+
io.grpc
grpc-api
@@ -102,6 +106,10 @@
com.google.oauth-client
google-oauth-client
+
+ com.google.auth
+ google-auth-library-oauth2-http
+
io.opencensus
opencensus-api
diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java
index c852fdb7f..7e5192b52 100644
--- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java
+++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java
@@ -18,6 +18,7 @@
import static com.google.cloud.datastore.Validator.validateNamespace;
+import com.google.api.core.BetaApi;
import com.google.api.gax.core.CredentialsProvider;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
import com.google.api.gax.rpc.TransportChannelProvider;
@@ -74,15 +75,8 @@ public ServiceRpc create(DatastoreOptions options) {
try {
if (options.getTransportOptions() instanceof GrpcTransportOptions) {
return new GrpcDatastoreRpc(options);
- } else if (options.getTransportOptions() instanceof HttpTransportOptions) {
- // todo see if we can remove this check
- if (DatastoreUtils.isEmulator(options)) {
- throw new IllegalArgumentException("Only GRPC channels are allowed for emulator.");
- }
- return new HttpDatastoreRpc(options);
} else {
- throw new IllegalArgumentException(
- "unknown transport type: " + options.getTransportOptions());
+ return new HttpDatastoreRpc(options);
}
} catch (IOException e) {
throw new RuntimeException(e);
@@ -96,6 +90,8 @@ public static class Builder extends ServiceOptions.Builder datastore.get(KEY3));
- }
-
private void checkKeyProperties(BaseKey key) {
assertEquals(options.getDatabaseId(), key.getDatabaseId());
assertEquals(options.getProjectId(), key.getProjectId());
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java
index 357471abc..7c105672c 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java
@@ -70,6 +70,7 @@
import com.google.cloud.datastore.TimestampValue;
import com.google.cloud.datastore.Transaction;
import com.google.cloud.datastore.ValueType;
+import com.google.cloud.grpc.GrpcTransportOptions;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.datastore.v1.TransactionOptions;
@@ -1449,9 +1450,13 @@ public Integer run(DatastoreReaderWriter transaction) {
datastore.runInTransaction(callable2, readOnlyOptions);
fail("Expecting a failure");
} catch (DatastoreException expected) {
- assertEquals(
- INVALID_ARGUMENT.getHttpStatusCode(),
- ((DatastoreException) expected.getCause()).getCode());
+ if (datastore.getOptions().getTransportOptions() instanceof GrpcTransportOptions) {
+ assertEquals(
+ INVALID_ARGUMENT.getHttpStatusCode(),
+ ((DatastoreException) expected.getCause()).getCode());
+ } else {
+ assertEquals(3, ((DatastoreException) expected.getCause()).getCode());
+ }
}
}
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreConceptsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreConceptsTest.java
index f61db4f48..1d6b2f838 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreConceptsTest.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreConceptsTest.java
@@ -67,7 +67,6 @@
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.junit.After;
-import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -132,11 +131,6 @@ public void tearDown() {
datastore.delete(taskKeysToDelete);
}
- @AfterClass
- public static void afterClass() throws Exception {
- datastore.close();
- }
-
private void assertValidKey(Key taskKey) {
datastore.put(Entity.newBuilder(taskKey, TEST_FULL_ENTITY).build());
}
@@ -575,7 +569,7 @@ public void testInequalityRange() {
}
@Test
- public void testInequalityInvalid() {
+ public void testInequalityValid() {
Query query =
Query.newEntityQueryBuilder()
.setKind(TASK_CONCEPTS)
@@ -583,7 +577,7 @@ public void testInequalityInvalid() {
CompositeFilter.and(
PropertyFilter.gt("created", startDate), PropertyFilter.gt("priority", 3)))
.build();
- assertInvalidQuery(query);
+ assertValidQuery(query);
}
@Test
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestGrpc.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestGrpc.java
index d9acbd088..7bb809997 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestGrpc.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestGrpc.java
@@ -18,6 +18,8 @@
import com.google.cloud.datastore.Datastore;
import com.google.cloud.datastore.DatastoreOptions;
import com.google.cloud.datastore.testing.RemoteDatastoreHelper;
+import com.google.cloud.grpc.GrpcTransportOptions;
+import com.google.common.truth.Truth;
import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.runner.RunWith;
@@ -26,13 +28,14 @@
@RunWith(Parameterized.class)
public class ITDatastoreTestGrpc extends AbstractITDatastoreTest {
// setup for default db, grpc transport
- protected static final RemoteDatastoreHelper HELPER_DEFAULT_GRPC = RemoteDatastoreHelper.create();
+ protected static final RemoteDatastoreHelper HELPER_DEFAULT_GRPC =
+ RemoteDatastoreHelper.create(GrpcTransportOptions.newBuilder().build());
private static final DatastoreOptions OPTIONS_DEFAULT_GRPC = HELPER_DEFAULT_GRPC.getOptions();
private static final Datastore DATASTORE_DEFAULT_GRPC = OPTIONS_DEFAULT_GRPC.getService();
// setup for custom db, grpc transport
private static final RemoteDatastoreHelper HELPER_CUSTOM_DB_GRPC =
- RemoteDatastoreHelper.create(CUSTOM_DB_ID);
+ RemoteDatastoreHelper.create(CUSTOM_DB_ID, GrpcTransportOptions.newBuilder().build());
private static final DatastoreOptions OPTIONS_CUSTOM_DB_GRPC = HELPER_CUSTOM_DB_GRPC.getOptions();
private static final Datastore DATASTORE_CUSTOM_DB_GRPC = OPTIONS_CUSTOM_DB_GRPC.getService();
@@ -55,5 +58,7 @@ public static void afterClass() throws Exception {
HELPER_CUSTOM_DB_GRPC.deleteNamespace();
DATASTORE_DEFAULT_GRPC.close();
DATASTORE_CUSTOM_DB_GRPC.close();
+ Truth.assertThat(DATASTORE_DEFAULT_GRPC.isClosed()).isTrue();
+ Truth.assertThat(DATASTORE_CUSTOM_DB_GRPC.isClosed()).isTrue();
}
}
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestHttp.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestHttp.java
index 0a453bbb4..3546bfcaf 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestHttp.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestHttp.java
@@ -18,7 +18,6 @@
import com.google.cloud.datastore.Datastore;
import com.google.cloud.datastore.DatastoreOptions;
import com.google.cloud.datastore.testing.RemoteDatastoreHelper;
-import com.google.cloud.http.HttpTransportOptions;
import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.runner.RunWith;
@@ -27,14 +26,14 @@
@RunWith(Parameterized.class)
public class ITDatastoreTestHttp extends AbstractITDatastoreTest {
// setup for default db, http transport
- private static final RemoteDatastoreHelper HELPER_DEFAULT_HTTP =
- RemoteDatastoreHelper.create(HttpTransportOptions.newBuilder().build());
+ private static final RemoteDatastoreHelper HELPER_DEFAULT_HTTP = RemoteDatastoreHelper.create();
+
private static final DatastoreOptions OPTIONS_DEFAULT_HTTP = HELPER_DEFAULT_HTTP.getOptions();
private static final Datastore DATASTORE_DEFAULT_HTTP = OPTIONS_DEFAULT_HTTP.getService();
// setup for custom db, http transport
private static final RemoteDatastoreHelper HELPER_CUSTOM_DB_HTTP =
- RemoteDatastoreHelper.create(CUSTOM_DB_ID, HttpTransportOptions.newBuilder().build());
+ RemoteDatastoreHelper.create(CUSTOM_DB_ID);
private static final DatastoreOptions OPTIONS_CUSTOM_DB_HTTP = HELPER_CUSTOM_DB_HTTP.getOptions();
private static final Datastore DATASTORE_CUSTOM_DB_HTTP = OPTIONS_CUSTOM_DB_HTTP.getService();
@@ -55,7 +54,5 @@ public static Iterable