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 data() { public static void afterClass() throws Exception { HELPER_DEFAULT_HTTP.deleteNamespace(); HELPER_CUSTOM_DB_HTTP.deleteNamespace(); - DATASTORE_DEFAULT_HTTP.close(); - DATASTORE_CUSTOM_DB_HTTP.close(); } }