From 39839ca9cfea914f0dfaf589e7257f2675784640 Mon Sep 17 00:00:00 2001 From: kolea2 <45548808+kolea2@users.noreply.github.com> Date: Wed, 1 May 2024 11:20:18 -0400 Subject: [PATCH 001/102] chore: update sync-repo-settings.yaml (#1417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://togithub.com/googleapis/java-datastore/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes # ☕️ If you write sample code, please follow the [samples format]( https://togithub.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md). --- .github/sync-repo-settings.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 0159d7ae3..4bdaef4e9 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -162,6 +162,23 @@ branchProtectionRules: - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc + - pattern: grpc-experimental + isAdminEnforced: true + requiredApprovingReviewCount: 1 + requiresCodeOwnerReviews: true + requiresStrictStatusChecks: false + requiredStatusCheckContexts: + - dependencies (17) + - lint + - clirr + - units (8) + - units (11) + - 'Kokoro - Test: Integration' + - cla/google + - OwlBot Post Processor + - 'Kokoro - Test: Java GraalVM Native Image' + - 'Kokoro - Test: Java 17 GraalVM Native Image' + - javadoc permissionRules: - team: yoshi-admins permission: admin From 48d7dafc0c7a49e95bf41d29865ac872b0de0faf Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 May 2024 17:15:13 +0200 Subject: [PATCH 002/102] deps: update dependency com.google.errorprone:error_prone_core to v2.27.1 (#1421) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index eeb20ad87..bdb5d4f68 100644 --- a/pom.xml +++ b/pom.xml @@ -143,7 +143,7 @@ github google-cloud-datastore-parent https://googleapis.dev/java/google-api-grpc/latest - 2.27.0 + 2.27.1 From 5a5dfdfb0855cf485b875ab071b79979d24f98dd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 2 May 2024 17:20:49 +0200 Subject: [PATCH 003/102] deps: update dependency com.google.guava:guava-testlib to v33.2.0-jre (#1422) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 8d6b79e8d..351e0dfae 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -122,7 +122,7 @@ com.google.guava guava-testlib - 33.1.0-jre + 33.2.0-jre test From ac3a1c10f64c8338346f8fb39f4857f47e8fc639 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 3 May 2024 16:56:09 +0200 Subject: [PATCH 004/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 (#1426) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 851d94b20..59c863ec0 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.29.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.30.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index d7a73c2c6..c72b54690 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.29.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.30.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index b5c7f594b..ac1b9d4e9 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.29.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.30.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 2651713e3..f149e76dc 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.29.0 + 3.30.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index bdb5d4f68..a67d68b4e 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.29.0 + 3.30.0 From b265fb3c3b8ebc972edbe5a7beae816379846dac Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 16:32:17 +0000 Subject: [PATCH 005/102] fix(deps): Update the Java code generator (gapic-generator-java) to 2.39.0 (#1406) - [ ] Regenerate this pull request now. PiperOrigin-RevId: 626430774 Source-Link: https://togithub.com/googleapis/googleapis/commit/835b84ebfc4974ab5dcd9b31ad66c01ef3455475 Source-Link: https://togithub.com/googleapis/googleapis-gen/commit/43f369d90f19d09ac18720151ab106042beb811b Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNDNmMzY5ZDkwZjE5ZDA5YWMxODcyMDE1MWFiMTA2MDQyYmViODExYiJ9 --- .../v1/stub/DatastoreAdminStubSettings.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java index 64ad035d8..fc346d38c 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java @@ -258,15 +258,6 @@ public DatastoreAdminStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ @Override public String getServiceName() { @@ -716,15 +707,6 @@ public UnaryCallSettings.Builder getIndexSettings() { return listIndexesSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public DatastoreAdminStubSettings build() throws IOException { return new DatastoreAdminStubSettings(this); From da51c88b81faee5141e9eb6c5ccbc2cc25e581b2 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 14:20:16 +0000 Subject: [PATCH 006/102] chore(main): release 2.19.2 (#1414) :robot: I have created a release *beep* *boop* --- ## [2.19.2](https://togithub.com/googleapis/java-datastore/compare/v2.19.1...v2.19.2) (2024-05-03) ### Bug Fixes * **deps:** Update the Java code generator (gapic-generator-java) to 2.39.0 ([#1406](https://togithub.com/googleapis/java-datastore/issues/1406)) ([b265fb3](https://togithub.com/googleapis/java-datastore/commit/b265fb3c3b8ebc972edbe5a7beae816379846dac)) ### Dependencies * Update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 ([#1426](https://togithub.com/googleapis/java-datastore/issues/1426)) ([ac3a1c1](https://togithub.com/googleapis/java-datastore/commit/ac3a1c10f64c8338346f8fb39f4857f47e8fc639)) * Update dependency com.google.errorprone:error_prone_core to v2.27.0 ([#1411](https://togithub.com/googleapis/java-datastore/issues/1411)) ([a3f5a2c](https://togithub.com/googleapis/java-datastore/commit/a3f5a2c24bff408479541e08278e888cf3166727)) * Update dependency com.google.errorprone:error_prone_core to v2.27.1 ([#1421](https://togithub.com/googleapis/java-datastore/issues/1421)) ([48d7daf](https://togithub.com/googleapis/java-datastore/commit/48d7dafc0c7a49e95bf41d29865ac872b0de0faf)) * Update dependency com.google.guava:guava-testlib to v33.2.0-jre ([#1422](https://togithub.com/googleapis/java-datastore/issues/1422)) ([5a5dfdf](https://togithub.com/googleapis/java-datastore/commit/5a5dfdfb0855cf485b875ab071b79979d24f98dd)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- CHANGELOG.md | 15 +++++++++++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 43 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6bc10ff..b026d8096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [2.19.2](https://github.com/googleapis/java-datastore/compare/v2.19.1...v2.19.2) (2024-05-03) + + +### Bug Fixes + +* **deps:** Update the Java code generator (gapic-generator-java) to 2.39.0 ([#1406](https://github.com/googleapis/java-datastore/issues/1406)) ([b265fb3](https://github.com/googleapis/java-datastore/commit/b265fb3c3b8ebc972edbe5a7beae816379846dac)) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 ([#1426](https://github.com/googleapis/java-datastore/issues/1426)) ([ac3a1c1](https://github.com/googleapis/java-datastore/commit/ac3a1c10f64c8338346f8fb39f4857f47e8fc639)) +* Update dependency com.google.errorprone:error_prone_core to v2.27.0 ([#1411](https://github.com/googleapis/java-datastore/issues/1411)) ([a3f5a2c](https://github.com/googleapis/java-datastore/commit/a3f5a2c24bff408479541e08278e888cf3166727)) +* Update dependency com.google.errorprone:error_prone_core to v2.27.1 ([#1421](https://github.com/googleapis/java-datastore/issues/1421)) ([48d7daf](https://github.com/googleapis/java-datastore/commit/48d7dafc0c7a49e95bf41d29865ac872b0de0faf)) +* Update dependency com.google.guava:guava-testlib to v33.2.0-jre ([#1422](https://github.com/googleapis/java-datastore/issues/1422)) ([5a5dfdf](https://github.com/googleapis/java-datastore/commit/5a5dfdfb0855cf485b875ab071b79979d24f98dd)) + ## [2.19.1](https://github.com/googleapis/java-datastore/compare/v2.19.0...v2.19.1) (2024-04-19) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index e136a9d8c..4c926f630 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.19.2-SNAPSHOT + 2.19.2 com.google.cloud google-cloud-datastore-parent - 2.19.2-SNAPSHOT + 2.19.2 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index f149e76dc..4e9e971c0 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.19.2-SNAPSHOT + 2.19.2 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.19.2-SNAPSHOT + 2.19.2 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.2-SNAPSHOT + 2.19.2 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.2-SNAPSHOT + 0.110.2 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.2-SNAPSHOT + 2.19.2 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 351e0dfae..4337bb677 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.19.2-SNAPSHOT + 2.19.2 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.19.2-SNAPSHOT + 2.19.2 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 150832cde..938047de0 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.2-SNAPSHOT + 2.19.2 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.2-SNAPSHOT + 2.19.2 diff --git a/pom.xml b/pom.xml index a67d68b4e..7e8f89d1b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.19.2-SNAPSHOT + 2.19.2 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.2-SNAPSHOT + 2.19.2 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.2-SNAPSHOT + 2.19.2 com.google.cloud google-cloud-datastore - 2.19.2-SNAPSHOT + 2.19.2 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.2-SNAPSHOT + 0.110.2 com.google.cloud.datastore datastore-v1-proto-client - 2.19.2-SNAPSHOT + 2.19.2 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 58e80a474..f76114f5f 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.2-SNAPSHOT + 2.19.2 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.2-SNAPSHOT + 2.19.2 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index f7533666e..17524e533 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.2-SNAPSHOT + 0.110.2 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.19.2-SNAPSHOT + 2.19.2 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 45331e46b..94b4517b4 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.19.2-SNAPSHOT + 2.19.2 diff --git a/versions.txt b/versions.txt index 3d01cfb1c..572000fda 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.19.1:2.19.2-SNAPSHOT -google-cloud-datastore-bom:2.19.1:2.19.2-SNAPSHOT -proto-google-cloud-datastore-v1:0.110.1:0.110.2-SNAPSHOT -datastore-v1-proto-client:2.19.1:2.19.2-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.19.1:2.19.2-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.19.1:2.19.2-SNAPSHOT +google-cloud-datastore:2.19.2:2.19.2 +google-cloud-datastore-bom:2.19.2:2.19.2 +proto-google-cloud-datastore-v1:0.110.2:0.110.2 +datastore-v1-proto-client:2.19.2:2.19.2 +proto-google-cloud-datastore-admin-v1:2.19.2:2.19.2 +grpc-google-cloud-datastore-admin-v1:2.19.2:2.19.2 From beb8d0d7163ca071039beca66228b926416de7c9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 15:00:31 +0000 Subject: [PATCH 007/102] chore(main): release 2.19.3-SNAPSHOT (#1432) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 4c926f630..afebe45cb 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.19.2 + 2.19.3-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.19.2 + 2.19.3-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 4e9e971c0..526341880 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.19.2 + 2.19.3-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.19.2 + 2.19.3-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.2 + 2.19.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.2 + 0.110.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.2 + 2.19.3-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 4337bb677..ae5c82ff7 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.19.2 + 2.19.3-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.19.2 + 2.19.3-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 938047de0..aea98fffb 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.2 + 2.19.3-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.2 + 2.19.3-SNAPSHOT diff --git a/pom.xml b/pom.xml index 7e8f89d1b..e40fd6e1c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.19.2 + 2.19.3-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.2 + 2.19.3-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.2 + 2.19.3-SNAPSHOT com.google.cloud google-cloud-datastore - 2.19.2 + 2.19.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.2 + 0.110.3-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.19.2 + 2.19.3-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index f76114f5f..3e16b006e 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.2 + 2.19.3-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.2 + 2.19.3-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 17524e533..29cc3ef79 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.2 + 0.110.3-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.19.2 + 2.19.3-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 94b4517b4..4aacf6542 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.19.2 + 2.19.3-SNAPSHOT diff --git a/versions.txt b/versions.txt index 572000fda..6d440544d 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.19.2:2.19.2 -google-cloud-datastore-bom:2.19.2:2.19.2 -proto-google-cloud-datastore-v1:0.110.2:0.110.2 -datastore-v1-proto-client:2.19.2:2.19.2 -proto-google-cloud-datastore-admin-v1:2.19.2:2.19.2 -grpc-google-cloud-datastore-admin-v1:2.19.2:2.19.2 +google-cloud-datastore:2.19.2:2.19.3-SNAPSHOT +google-cloud-datastore-bom:2.19.2:2.19.3-SNAPSHOT +proto-google-cloud-datastore-v1:0.110.2:0.110.3-SNAPSHOT +datastore-v1-proto-client:2.19.2:2.19.3-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.19.2:2.19.3-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.19.2:2.19.3-SNAPSHOT From f93c60f192ddbffdb02d8e377b148942c351a1ef Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 May 2024 19:11:37 +0200 Subject: [PATCH 008/102] build(deps): update dependency org.apache.maven.plugins:maven-deploy-plugin to v3.1.2 (#1412) --- samples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/pom.xml b/samples/pom.xml index a24801164..745443d35 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -39,7 +39,7 @@ org.apache.maven.plugins maven-deploy-plugin - 3.1.1 + 3.1.2 true From 063a81e2d49788f3cca3f4c8f359c1c9b1cf4a34 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 6 May 2024 19:30:18 +0200 Subject: [PATCH 009/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.19.2 (#1433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://togithub.com/googleapis/java-datastore) | `2.19.1` -> `2.19.2` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-datastore/2.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-datastore/2.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-datastore/2.19.1/2.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-datastore/2.19.1/2.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/java-datastore (com.google.cloud:google-cloud-datastore) ### [`v2.19.2`](https://togithub.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2192-2024-05-03) [Compare Source](https://togithub.com/googleapis/java-datastore/compare/v2.19.1...v2.19.2) ##### Bug Fixes - **deps:** Update the Java code generator (gapic-generator-java) to 2.39.0 ([#​1406](https://togithub.com/googleapis/java-datastore/issues/1406)) ([b265fb3](https://togithub.com/googleapis/java-datastore/commit/b265fb3c3b8ebc972edbe5a7beae816379846dac)) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 ([#​1426](https://togithub.com/googleapis/java-datastore/issues/1426)) ([ac3a1c1](https://togithub.com/googleapis/java-datastore/commit/ac3a1c10f64c8338346f8fb39f4857f47e8fc639)) - Update dependency com.google.errorprone:error_prone_core to v2.27.0 ([#​1411](https://togithub.com/googleapis/java-datastore/issues/1411)) ([a3f5a2c](https://togithub.com/googleapis/java-datastore/commit/a3f5a2c24bff408479541e08278e888cf3166727)) - Update dependency com.google.errorprone:error_prone_core to v2.27.1 ([#​1421](https://togithub.com/googleapis/java-datastore/issues/1421)) ([48d7daf](https://togithub.com/googleapis/java-datastore/commit/48d7dafc0c7a49e95bf41d29865ac872b0de0faf)) - Update dependency com.google.guava:guava-testlib to v33.2.0-jre ([#​1422](https://togithub.com/googleapis/java-datastore/issues/1422)) ([5a5dfdf](https://togithub.com/googleapis/java-datastore/commit/5a5dfdfb0855cf485b875ab071b79979d24f98dd))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/java-datastore). --- README.md | 8 ++++---- samples/install-without-bom/pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3f6f9916c..528dec305 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-datastore - 2.19.1 + 2.19.2 ``` @@ -57,13 +57,13 @@ 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.19.1' +implementation 'com.google.cloud:google-cloud-datastore:2.19.2' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.19.1" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.19.2" ``` @@ -384,7 +384,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.19.1 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.19.2 [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/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index d36722381..91a974823 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.19.1 + 2.19.2 From b6f1c89f6892baaba0d545ad87db435aca2055a6 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 10:53:31 -0400 Subject: [PATCH 010/102] chore: autogen updates (#1434) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: An existing method `UpdateVehicleLocation` is removed from service `VehicleService` fix: An existing method `SearchFuzzedVehicles` is removed from service `VehicleService` fix: An existing message `UpdateVehicleLocationRequest` is removed PiperOrigin-RevId: 631557549 Source-Link: https://github.com/googleapis/googleapis/commit/3d50414a7ff3f0b8ffe8ad7858257396e4f18131 Source-Link: https://github.com/googleapis/googleapis-gen/commit/5ce63d4e636a975175bde2d16c15e70dd5a81ff4 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWNlNjNkNGU2MzZhOTc1MTc1YmRlMmQxNmMxNWU3MGRkNWE4MWZmNCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../main/proto/google/datastore/admin/v1/datastore_admin.proto | 2 +- .../src/main/proto/google/datastore/admin/v1/index.proto | 2 +- .../src/main/proto/google/datastore/admin/v1/migration.proto | 2 +- .../src/main/proto/google/datastore/v1/aggregation_result.proto | 2 +- .../src/main/proto/google/datastore/v1/datastore.proto | 2 +- .../src/main/proto/google/datastore/v1/entity.proto | 2 +- .../src/main/proto/google/datastore/v1/query.proto | 2 +- .../src/main/proto/google/datastore/v1/query_profile.proto | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/datastore_admin.proto b/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/datastore_admin.proto index 79ca3df68..a8b3f9986 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/datastore_admin.proto +++ b/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/datastore_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/index.proto b/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/index.proto index 60bb5af5f..6a1d12227 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/index.proto +++ b/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/index.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/migration.proto b/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/migration.proto index e5f7477da..813de87dd 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/migration.proto +++ b/proto-google-cloud-datastore-admin-v1/src/main/proto/google/datastore/admin/v1/migration.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto index 91c521716..262b61fa4 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto index 1a3fbdd11..fbbabb0a3 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto index d80dd9093..ef4429343 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query.proto index d1f0f8d07..81386d47b 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query_profile.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query_profile.proto index 01c9fc254..f38681c66 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query_profile.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/query_profile.proto @@ -1,4 +1,4 @@ -// Copyright 2023 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From d6c295e1aea5f2a3bc3ce5606500d6e712293aa8 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 16:54:27 +0000 Subject: [PATCH 011/102] chore: update dependency versions in java templates (#1964) (#1435) * chore: update dependency versions in java templates * update other templates Source-Link: https://togithub.com/googleapis/synthtool/commit/0b86c72fe652dd7e52ba05a63f61bc1399ad5d65 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-java:latest@sha256:68ba5f5164a4b55529d358bb262feaa000536a0c62980727dd05a91bbb47ea5e --- .github/.OwlBot.lock.yaml | 4 +-- .github/workflows/approve-readme.yaml | 2 +- .github/workflows/ci.yaml | 30 ++++++++++---------- .github/workflows/renovate_config_check.yaml | 2 +- .github/workflows/samples.yaml | 4 +-- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 6167135e9..5db36a5f7 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:81c3ec554428c8ff6c92f0d58668b7ef52265d053a82284c97a326745e786949 -# created: 2024-03-27T17:59:25.436353226Z + digest: sha256:68ba5f5164a4b55529d358bb262feaa000536a0c62980727dd05a91bbb47ea5e +# created: 2024-05-09T16:31:37.168667071Z diff --git a/.github/workflows/approve-readme.yaml b/.github/workflows/approve-readme.yaml index f5fc7d516..59f00b8eb 100644 --- a/.github/workflows/approve-readme.yaml +++ b/.github/workflows/approve-readme.yaml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest if: github.repository_owner == 'googleapis' && github.head_ref == 'autosynth-readme' steps: - - uses: actions/github-script@v6 + - uses: actions/github-script@v7 with: github-token: ${{secrets.YOSHI_APPROVER_TOKEN}} script: | diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ae66b1973..b91fa381f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -27,8 +27,8 @@ jobs: matrix: java: [11, 17, 21] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{matrix.java}} @@ -41,8 +41,8 @@ jobs: name: "units (8)" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: java-version: 8 distribution: temurin @@ -51,7 +51,7 @@ jobs: # https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#jvm run: echo "SUREFIRE_JVM_OPT=-Djvm=${JAVA_HOME}/bin/java" >> $GITHUB_ENV shell: bash - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 17 distribution: temurin @@ -63,8 +63,8 @@ jobs: steps: - name: Support longpaths run: git config --system core.longpaths true - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 8 @@ -78,8 +78,8 @@ jobs: matrix: java: [17] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: ${{matrix.java}} @@ -88,8 +88,8 @@ jobs: javadoc: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 @@ -100,8 +100,8 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 11 @@ -112,8 +112,8 @@ jobs: clirr: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 8 diff --git a/.github/workflows/renovate_config_check.yaml b/.github/workflows/renovate_config_check.yaml index 87d8eb2be..7c5ec7865 100644 --- a/.github/workflows/renovate_config_check.yaml +++ b/.github/workflows/renovate_config_check.yaml @@ -14,7 +14,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: '20' diff --git a/.github/workflows/samples.yaml b/.github/workflows/samples.yaml index 10d252d77..03b293956 100644 --- a/.github/workflows/samples.yaml +++ b/.github/workflows/samples.yaml @@ -20,8 +20,8 @@ jobs: checkstyle: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 8 From 24f878035070d3137e6bd01d65ba60c66f87abd8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 13 May 2024 17:28:56 +0200 Subject: [PATCH 012/102] chore(deps): update dependency com.google.cloud:libraries-bom to v26.39.0 (#1436) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency com.google.cloud:libraries-bom to v26.39.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- README.md | 4 ++-- samples/native-image-sample/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 528dec305..931c9c4dd 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.38.0 + 26.39.0 pom import @@ -50,7 +50,7 @@ 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.38.0') +implementation platform('com.google.cloud:libraries-bom:26.39.0') implementation 'com.google.cloud:google-cloud-datastore' ``` diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index d1d30028d..d1035724c 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -28,7 +28,7 @@ com.google.cloud libraries-bom - 26.38.0 + 26.39.0 pom import diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 82f0945a7..6ac0109ed 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 26.38.0 + 26.39.0 pom import From b9cece7eb2e7fe06cd7424fa27056606bfec97d2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 13 May 2024 17:59:38 +0200 Subject: [PATCH 013/102] build: update actions/setup-java action to v4 (#1391) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 59c863ec0..2ddcab030 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -6,7 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: temurin java-version: 11 From 80dbca1246facf21b08d33e5c6a09b9708b6ce63 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 14 May 2024 15:46:07 +0200 Subject: [PATCH 014/102] deps: update actions/checkout action to v4 (#1390) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 2ddcab030..7890ce870 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -5,7 +5,7 @@ jobs: unmanaged_dependency_check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: temurin From 79f6c46bdbabc66082f23e9562ee9541e0fdeac9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 16 May 2024 19:12:12 +0200 Subject: [PATCH 015/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.30.1 (#1443) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 7890ce870..5ff23d7aa 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.30.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.30.1 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index c72b54690..3b76021ce 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.30.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.30.1" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index ac1b9d4e9..8c9d2b103 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.30.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.30.1" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 526341880..2f271a3bf 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.30.0 + 3.30.1 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index e40fd6e1c..a398872b1 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.30.0 + 3.30.1 From b3836a44c5cb68ee5c13daa63aa10e918ae17bee Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 17:26:17 +0000 Subject: [PATCH 016/102] chore(main): release 2.19.3 (#1438) :robot: I have created a release *beep* *boop* --- ## [2.19.3](https://togithub.com/googleapis/java-datastore/compare/v2.19.2...v2.19.3) (2024-05-16) ### Dependencies * Update actions/checkout action to v4 ([#1390](https://togithub.com/googleapis/java-datastore/issues/1390)) ([80dbca1](https://togithub.com/googleapis/java-datastore/commit/80dbca1246facf21b08d33e5c6a09b9708b6ce63)) * Update dependency com.google.cloud:sdk-platform-java-config to v3.30.1 ([#1443](https://togithub.com/googleapis/java-datastore/issues/1443)) ([79f6c46](https://togithub.com/googleapis/java-datastore/commit/79f6c46bdbabc66082f23e9562ee9541e0fdeac9)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- CHANGELOG.md | 8 ++++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 36 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b026d8096..185e9d891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [2.19.3](https://github.com/googleapis/java-datastore/compare/v2.19.2...v2.19.3) (2024-05-16) + + +### Dependencies + +* Update actions/checkout action to v4 ([#1390](https://github.com/googleapis/java-datastore/issues/1390)) ([80dbca1](https://github.com/googleapis/java-datastore/commit/80dbca1246facf21b08d33e5c6a09b9708b6ce63)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.30.1 ([#1443](https://github.com/googleapis/java-datastore/issues/1443)) ([79f6c46](https://github.com/googleapis/java-datastore/commit/79f6c46bdbabc66082f23e9562ee9541e0fdeac9)) + ## [2.19.2](https://github.com/googleapis/java-datastore/compare/v2.19.1...v2.19.2) (2024-05-03) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index afebe45cb..73888aaa8 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.19.3-SNAPSHOT + 2.19.3 com.google.cloud google-cloud-datastore-parent - 2.19.3-SNAPSHOT + 2.19.3 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 2f271a3bf..808ef3745 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.19.3-SNAPSHOT + 2.19.3 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.19.3-SNAPSHOT + 2.19.3 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.3-SNAPSHOT + 2.19.3 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.3-SNAPSHOT + 0.110.3 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.3-SNAPSHOT + 2.19.3
diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index ae5c82ff7..2d6872b40 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.19.3-SNAPSHOT + 2.19.3 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.19.3-SNAPSHOT + 2.19.3 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index aea98fffb..cd0a1cc64 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.3-SNAPSHOT + 2.19.3 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.3-SNAPSHOT + 2.19.3 diff --git a/pom.xml b/pom.xml index a398872b1..48ecc581a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.19.3-SNAPSHOT + 2.19.3 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.3-SNAPSHOT + 2.19.3 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.3-SNAPSHOT + 2.19.3 com.google.cloud google-cloud-datastore - 2.19.3-SNAPSHOT + 2.19.3 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.3-SNAPSHOT + 0.110.3 com.google.cloud.datastore datastore-v1-proto-client - 2.19.3-SNAPSHOT + 2.19.3 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 3e16b006e..20d09333f 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.3-SNAPSHOT + 2.19.3 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.3-SNAPSHOT + 2.19.3 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 29cc3ef79..cc61e5080 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.3-SNAPSHOT + 0.110.3 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.19.3-SNAPSHOT + 2.19.3 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 4aacf6542..48e7c491b 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.19.3-SNAPSHOT + 2.19.3 diff --git a/versions.txt b/versions.txt index 6d440544d..c31381ffc 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.19.2:2.19.3-SNAPSHOT -google-cloud-datastore-bom:2.19.2:2.19.3-SNAPSHOT -proto-google-cloud-datastore-v1:0.110.2:0.110.3-SNAPSHOT -datastore-v1-proto-client:2.19.2:2.19.3-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.19.2:2.19.3-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.19.2:2.19.3-SNAPSHOT +google-cloud-datastore:2.19.3:2.19.3 +google-cloud-datastore-bom:2.19.3:2.19.3 +proto-google-cloud-datastore-v1:0.110.3:0.110.3 +datastore-v1-proto-client:2.19.3:2.19.3 +proto-google-cloud-datastore-admin-v1:2.19.3:2.19.3 +grpc-google-cloud-datastore-admin-v1:2.19.3:2.19.3 From 13d9af1c3eba37fcad70ce55f69ab4fea9a62627 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 18:12:16 +0000 Subject: [PATCH 017/102] chore(main): release 2.19.4-SNAPSHOT (#1444) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 73888aaa8..4c6c8306b 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.19.3 + 2.19.4-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.19.3 + 2.19.4-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 808ef3745..f4509a986 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.19.3 + 2.19.4-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.19.3 + 2.19.4-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.3 + 2.19.4-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.3 + 0.110.4-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.3 + 2.19.4-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 2d6872b40..50a0dc771 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.19.3 + 2.19.4-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.19.3 + 2.19.4-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index cd0a1cc64..d846af69e 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.3 + 2.19.4-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.3 + 2.19.4-SNAPSHOT diff --git a/pom.xml b/pom.xml index 48ecc581a..859d22ae8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.19.3 + 2.19.4-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.3 + 2.19.4-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.3 + 2.19.4-SNAPSHOT com.google.cloud google-cloud-datastore - 2.19.3 + 2.19.4-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.3 + 0.110.4-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.19.3 + 2.19.4-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 20d09333f..b7d230c93 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.3 + 2.19.4-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.3 + 2.19.4-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index cc61e5080..406872937 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.3 + 0.110.4-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.19.3 + 2.19.4-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 48e7c491b..c74f052fb 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.19.3 + 2.19.4-SNAPSHOT diff --git a/versions.txt b/versions.txt index c31381ffc..5a99dd778 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.19.3:2.19.3 -google-cloud-datastore-bom:2.19.3:2.19.3 -proto-google-cloud-datastore-v1:0.110.3:0.110.3 -datastore-v1-proto-client:2.19.3:2.19.3 -proto-google-cloud-datastore-admin-v1:2.19.3:2.19.3 -grpc-google-cloud-datastore-admin-v1:2.19.3:2.19.3 +google-cloud-datastore:2.19.3:2.19.4-SNAPSHOT +google-cloud-datastore-bom:2.19.3:2.19.4-SNAPSHOT +proto-google-cloud-datastore-v1:0.110.3:0.110.4-SNAPSHOT +datastore-v1-proto-client:2.19.3:2.19.4-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.19.3:2.19.4-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.19.3:2.19.4-SNAPSHOT From 41919388adf2f86e264a504de27619f86c67b7d5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 17 May 2024 21:36:17 +0200 Subject: [PATCH 018/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.19.3 (#1446) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://togithub.com/googleapis/java-datastore) | `2.19.2` -> `2.19.3` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-datastore/2.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-datastore/2.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-datastore/2.19.2/2.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-datastore/2.19.2/2.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/java-datastore (com.google.cloud:google-cloud-datastore) ### [`v2.19.3`](https://togithub.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2193-2024-05-16) [Compare Source](https://togithub.com/googleapis/java-datastore/compare/v2.19.2...v2.19.3) ##### Dependencies - Update actions/checkout action to v4 ([#​1390](https://togithub.com/googleapis/java-datastore/issues/1390)) ([80dbca1](https://togithub.com/googleapis/java-datastore/commit/80dbca1246facf21b08d33e5c6a09b9708b6ce63)) - Update dependency com.google.cloud:sdk-platform-java-config to v3.30.1 ([#​1443](https://togithub.com/googleapis/java-datastore/issues/1443)) ([79f6c46](https://togithub.com/googleapis/java-datastore/commit/79f6c46bdbabc66082f23e9562ee9541e0fdeac9))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/java-datastore). --- README.md | 8 ++++---- samples/install-without-bom/pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 931c9c4dd..0a6931db2 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-datastore - 2.19.2 + 2.19.3 ``` @@ -57,13 +57,13 @@ 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.19.2' +implementation 'com.google.cloud:google-cloud-datastore:2.19.3' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.19.2" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.19.3" ``` @@ -384,7 +384,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.19.2 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.19.3 [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/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 91a974823..5943271fb 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.19.2 + 2.19.3 From 29aea34c916825bbf34f7630c1ac313be14caf92 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 20 May 2024 16:32:08 +0200 Subject: [PATCH 019/102] test(deps): update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.2 (#1448) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * deps: update dependency org.graalvm.buildtools:native-maven-plugin to v0.10.2 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- samples/native-image-sample/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index d1035724c..3b15124d5 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -107,7 +107,7 @@ org.graalvm.buildtools native-maven-plugin - 0.10.1 + 0.10.2 true com.example.datastore.NativeImageDatastoreSample From 6caf603f95926f0d14c007f6dd35d447181d32da Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 20 May 2024 16:33:43 +0200 Subject: [PATCH 020/102] build(deps): update dependency org.codehaus.mojo:build-helper-maven-plugin to v3.6.0 (#1453) --- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 5943271fb..45eb26354 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -53,7 +53,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.5.0 + 3.6.0 add-snippets-source diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index c74f052fb..0f1b38b1b 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -52,7 +52,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.5.0 + 3.6.0 add-snippets-source From 15365eb03b8f26f0b90d11bb41ccbb65093e7a45 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 14:46:16 +0000 Subject: [PATCH 021/102] chore: [java] allow passing libraries_bom_version from env (#1967) (#1451) * feat: [java] allow passing libraries_bom_version from env * reformat Source-Link: https://togithub.com/googleapis/synthtool/commit/e36d2f164ca698f0264fb6f79ddc4b0fa024a940 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-java:latest@sha256:31aa2ef27b071c2e7844b0eb1d5a24254daff06615b1b138b994dd6345c0b0ea --- .github/.OwlBot.lock.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 5db36a5f7..f817c5f44 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:68ba5f5164a4b55529d358bb262feaa000536a0c62980727dd05a91bbb47ea5e -# created: 2024-05-09T16:31:37.168667071Z + digest: sha256:31aa2ef27b071c2e7844b0eb1d5a24254daff06615b1b138b994dd6345c0b0ea +# created: 2024-05-17T15:15:57.6714113Z From 15148f140b62c2f952537b86993a7ab9ea5645b3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 20 May 2024 17:23:19 +0200 Subject: [PATCH 022/102] test(deps): update dependency org.graalvm.buildtools:junit-platform-native to v0.10.2 (#1449) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test(deps): update dependency org.graalvm.buildtools:junit-platform-native to v0.10.2 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- samples/native-image-sample/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index 3b15124d5..00999bee3 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -86,7 +86,7 @@ org.graalvm.buildtools junit-platform-native - 0.10.1 + 0.10.2 test
From c3c131735863d71971110e2ac7ac0244ce16ee92 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 20 May 2024 16:49:25 +0000 Subject: [PATCH 023/102] fix: Migrate off TextPrinter's deprecated methods (#1452) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: chore: Migrate off TextPrinter's deprecated methods * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../src/main/java/com/google/cloud/datastore/Key.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Key.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Key.java index 9e851d0cb..14fe264bb 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Key.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Key.java @@ -145,7 +145,7 @@ public Object getNameOrId() { /** Returns the key in an encoded form that can be used as part of a URL. */ public String toUrlSafe() { try { - return URLEncoder.encode(TextFormat.printToString(toPb()), UTF_8.name()); + return URLEncoder.encode(TextFormat.printer().printToString(toPb()), UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new IllegalStateException("Unexpected encoding exception", e); } From ff5e39775446216b4806f55f14dacb7fc8e8854b Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 15:05:45 -0400 Subject: [PATCH 024/102] feat: New PropertyMask field which allows partial commits, lookups, and query results (#1455) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: New PropertyMask field which allows partial commits, lookups, and query results PiperOrigin-RevId: 635449160 Source-Link: https://github.com/googleapis/googleapis/commit/dde0ec1f36cb8cbf9036dd0f1e8e5eda7882db4e Source-Link: https://github.com/googleapis/googleapis-gen/commit/8caa60d9aea82964a19cdf8faf91384911db8bdd Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGNhYTYwZDlhZWE4Mjk2NGExOWNkZjhmYWY5MTM4NDkxMWRiOGJkZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../google/datastore/v1/DatastoreProto.java | 310 ++++--- .../google/datastore/v1/LookupRequest.java | 329 +++++++ .../datastore/v1/LookupRequestOrBuilder.java | 50 ++ .../com/google/datastore/v1/Mutation.java | 366 +++++++- .../datastore/v1/MutationOrBuilder.java | 56 ++ .../com/google/datastore/v1/PropertyMask.java | 848 ++++++++++++++++++ .../datastore/v1/PropertyMaskOrBuilder.java | 117 +++ .../google/datastore/v1/RunQueryRequest.java | 337 ++++++- .../v1/RunQueryRequestOrBuilder.java | 47 + .../proto/google/datastore/v1/datastore.proto | 42 + 10 files changed, 2346 insertions(+), 156 deletions(-) create mode 100644 proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java create mode 100644 proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java index 1b8753e35..e637dd010 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java @@ -100,6 +100,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_datastore_v1_MutationResult_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_datastore_v1_MutationResult_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_datastore_v1_PropertyMask_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_datastore_v1_PropertyMask_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_datastore_v1_ReadOptions_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -134,151 +138,157 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "entity.proto\032\037google/datastore/v1/query." + "proto\032\'google/datastore/v1/query_profile" + ".proto\032\037google/protobuf/timestamp.proto\"" - + "\242\001\n\rLookupRequest\022\027\n\nproject_id\030\010 \001(\tB\003\340" + + "\334\001\n\rLookupRequest\022\027\n\nproject_id\030\010 \001(\tB\003\340" + "A\002\022\023\n\013database_id\030\t \001(\t\0226\n\014read_options\030" + "\001 \001(\0132 .google.datastore.v1.ReadOptions\022" + "+\n\004keys\030\003 \003(\0132\030.google.datastore.v1.KeyB" - + "\003\340A\002\"\346\001\n\016LookupResponse\0220\n\005found\030\001 \003(\0132!" - + ".google.datastore.v1.EntityResult\0222\n\007mis" - + "sing\030\002 \003(\0132!.google.datastore.v1.EntityR" - + "esult\022*\n\010deferred\030\003 \003(\0132\030.google.datasto" - + "re.v1.Key\022\023\n\013transaction\030\005 \001(\014\022-\n\tread_t" - + "ime\030\007 \001(\0132\032.google.protobuf.Timestamp\"\341\002" - + "\n\017RunQueryRequest\022\027\n\nproject_id\030\010 \001(\tB\003\340" - + "A\002\022\023\n\013database_id\030\t \001(\t\0226\n\014partition_id\030" - + "\002 \001(\0132 .google.datastore.v1.PartitionId\022" - + "6\n\014read_options\030\001 \001(\0132 .google.datastore" - + ".v1.ReadOptions\022+\n\005query\030\003 \001(\0132\032.google." - + "datastore.v1.QueryH\000\0222\n\tgql_query\030\007 \001(\0132" - + "\035.google.datastore.v1.GqlQueryH\000\022A\n\017expl" - + "ain_options\030\014 \001(\0132#.google.datastore.v1." - + "ExplainOptionsB\003\340A\001B\014\n\nquery_type\"\306\001\n\020Ru" - + "nQueryResponse\0224\n\005batch\030\001 \001(\0132%.google.d" - + "atastore.v1.QueryResultBatch\022)\n\005query\030\002 " - + "\001(\0132\032.google.datastore.v1.Query\022\023\n\013trans" - + "action\030\005 \001(\014\022<\n\017explain_metrics\030\t \001(\0132#." - + "google.datastore.v1.ExplainMetrics\"\203\003\n\032R" - + "unAggregationQueryRequest\022\027\n\nproject_id\030" - + "\010 \001(\tB\003\340A\002\022\023\n\013database_id\030\t \001(\t\0226\n\014parti" - + "tion_id\030\002 \001(\0132 .google.datastore.v1.Part" - + "itionId\0226\n\014read_options\030\001 \001(\0132 .google.d" - + "atastore.v1.ReadOptions\022B\n\021aggregation_q" - + "uery\030\003 \001(\0132%.google.datastore.v1.Aggrega" - + "tionQueryH\000\0222\n\tgql_query\030\007 \001(\0132\035.google." - + "datastore.v1.GqlQueryH\000\022A\n\017explain_optio" - + "ns\030\013 \001(\0132#.google.datastore.v1.ExplainOp" - + "tionsB\003\340A\001B\014\n\nquery_type\"\342\001\n\033RunAggregat" - + "ionQueryResponse\022:\n\005batch\030\001 \001(\0132+.google" - + ".datastore.v1.AggregationResultBatch\0224\n\005" - + "query\030\002 \001(\0132%.google.datastore.v1.Aggreg" - + "ationQuery\022\023\n\013transaction\030\005 \001(\014\022<\n\017expla" - + "in_metrics\030\t \001(\0132#.google.datastore.v1.E" - + "xplainMetrics\"\215\001\n\027BeginTransactionReques" - + "t\022\027\n\nproject_id\030\010 \001(\tB\003\340A\002\022\023\n\013database_i" - + "d\030\t \001(\t\022D\n\023transaction_options\030\n \001(\0132\'.g" - + "oogle.datastore.v1.TransactionOptions\"/\n" - + "\030BeginTransactionResponse\022\023\n\013transaction" - + "\030\001 \001(\014\"Y\n\017RollbackRequest\022\027\n\nproject_id\030" - + "\010 \001(\tB\003\340A\002\022\023\n\013database_id\030\t \001(\t\022\030\n\013trans" - + "action\030\001 \001(\014B\003\340A\002\"\022\n\020RollbackResponse\"\350\002" - + "\n\rCommitRequest\022\027\n\nproject_id\030\010 \001(\tB\003\340A\002" - + "\022\023\n\013database_id\030\t \001(\t\0225\n\004mode\030\005 \001(\0162\'.go" - + "ogle.datastore.v1.CommitRequest.Mode\022\025\n\013" - + "transaction\030\001 \001(\014H\000\022I\n\026single_use_transa" - + "ction\030\n \001(\0132\'.google.datastore.v1.Transa" - + "ctionOptionsH\000\0220\n\tmutations\030\006 \003(\0132\035.goog" - + "le.datastore.v1.Mutation\"F\n\004Mode\022\024\n\020MODE" - + "_UNSPECIFIED\020\000\022\021\n\rTRANSACTIONAL\020\001\022\025\n\021NON" - + "_TRANSACTIONAL\020\002B\026\n\024transaction_selector" - + "\"\227\001\n\016CommitResponse\022=\n\020mutation_results\030" - + "\003 \003(\0132#.google.datastore.v1.MutationResu" - + "lt\022\025\n\rindex_updates\030\004 \001(\005\022/\n\013commit_time" - + "\030\010 \001(\0132\032.google.protobuf.Timestamp\"o\n\022Al" - + "locateIdsRequest\022\027\n\nproject_id\030\010 \001(\tB\003\340A" - + "\002\022\023\n\013database_id\030\t \001(\t\022+\n\004keys\030\001 \003(\0132\030.g" - + "oogle.datastore.v1.KeyB\003\340A\002\"=\n\023AllocateI" - + "dsResponse\022&\n\004keys\030\001 \003(\0132\030.google.datast" - + "ore.v1.Key\"n\n\021ReserveIdsRequest\022\027\n\nproje" - + "ct_id\030\010 \001(\tB\003\340A\002\022\023\n\013database_id\030\t \001(\t\022+\n" - + "\004keys\030\001 \003(\0132\030.google.datastore.v1.KeyB\003\340" - + "A\002\"\024\n\022ReserveIdsResponse\"\272\002\n\010Mutation\022-\n" - + "\006insert\030\004 \001(\0132\033.google.datastore.v1.Enti" - + "tyH\000\022-\n\006update\030\005 \001(\0132\033.google.datastore." - + "v1.EntityH\000\022-\n\006upsert\030\006 \001(\0132\033.google.dat" - + "astore.v1.EntityH\000\022*\n\006delete\030\007 \001(\0132\030.goo" - + "gle.datastore.v1.KeyH\000\022\026\n\014base_version\030\010" - + " \001(\003H\001\0221\n\013update_time\030\013 \001(\0132\032.google.pro" - + "tobuf.TimestampH\001B\013\n\toperationB\035\n\033confli" - + "ct_detection_strategy\"\305\001\n\016MutationResult" - + "\022%\n\003key\030\003 \001(\0132\030.google.datastore.v1.Key\022" - + "\017\n\007version\030\004 \001(\003\022/\n\013create_time\030\007 \001(\0132\032." - + "google.protobuf.Timestamp\022/\n\013update_time" - + "\030\006 \001(\0132\032.google.protobuf.Timestamp\022\031\n\021co" - + "nflict_detected\030\005 \001(\010\"\312\002\n\013ReadOptions\022L\n" - + "\020read_consistency\030\001 \001(\01620.google.datasto" - + "re.v1.ReadOptions.ReadConsistencyH\000\022\025\n\013t" - + "ransaction\030\002 \001(\014H\000\022B\n\017new_transaction\030\003 " - + "\001(\0132\'.google.datastore.v1.TransactionOpt" - + "ionsH\000\022/\n\tread_time\030\004 \001(\0132\032.google.proto" - + "buf.TimestampH\000\"M\n\017ReadConsistency\022 \n\034RE" - + "AD_CONSISTENCY_UNSPECIFIED\020\000\022\n\n\006STRONG\020\001" - + "\022\014\n\010EVENTUAL\020\002B\022\n\020consistency_type\"\222\002\n\022T" - + "ransactionOptions\022G\n\nread_write\030\001 \001(\01321." - + "google.datastore.v1.TransactionOptions.R" - + "eadWriteH\000\022E\n\tread_only\030\002 \001(\01320.google.d" - + "atastore.v1.TransactionOptions.ReadOnlyH" - + "\000\032)\n\tReadWrite\022\034\n\024previous_transaction\030\001" - + " \001(\014\0329\n\010ReadOnly\022-\n\tread_time\030\001 \001(\0132\032.go" - + "ogle.protobuf.TimestampB\006\n\004mode2\341\r\n\tData" - + "store\022\300\001\n\006Lookup\022\".google.datastore.v1.L" - + "ookupRequest\032#.google.datastore.v1.Looku" - + "pResponse\"m\332A\034project_id,read_options,ke" - + "ys\202\323\344\223\002%\" /v1/projects/{project_id}:look" - + "up:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id" - + "\022\251\001\n\010RunQuery\022$.google.datastore.v1.RunQ" - + "ueryRequest\032%.google.datastore.v1.RunQue" - + "ryResponse\"P\202\323\344\223\002\'\"\"/v1/projects/{projec" - + "t_id}:runQuery:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n" - + "\013database_id\022\325\001\n\023RunAggregationQuery\022/.g" - + "oogle.datastore.v1.RunAggregationQueryRe" - + "quest\0320.google.datastore.v1.RunAggregati" - + "onQueryResponse\"[\202\323\344\223\0022\"-/v1/projects/{p" - + "roject_id}:runAggregationQuery:\001*\212\323\344\223\002\035\022" - + "\014\n\nproject_id\022\r\n\013database_id\022\326\001\n\020BeginTr" - + "ansaction\022,.google.datastore.v1.BeginTra" - + "nsactionRequest\032-.google.datastore.v1.Be" - + "ginTransactionResponse\"e\332A\nproject_id\202\323\344" - + "\223\002/\"*/v1/projects/{project_id}:beginTran" - + "saction:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013databa" - + "se_id\022\346\001\n\006Commit\022\".google.datastore.v1.C" - + "ommitRequest\032#.google.datastore.v1.Commi" - + "tResponse\"\222\001\332A%project_id,mode,transacti" - + "on,mutations\332A\031project_id,mode,mutations" - + "\202\323\344\223\002%\" /v1/projects/{project_id}:commit" - + ":\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\302" - + "\001\n\010Rollback\022$.google.datastore.v1.Rollba" - + "ckRequest\032%.google.datastore.v1.Rollback" - + "Response\"i\332A\026project_id,transaction\202\323\344\223\002" - + "\'\"\"/v1/projects/{project_id}:rollback:\001*" - + "\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\307\001\n\013" - + "AllocateIds\022\'.google.datastore.v1.Alloca" - + "teIdsRequest\032(.google.datastore.v1.Alloc" - + "ateIdsResponse\"e\332A\017project_id,keys\202\323\344\223\002*" - + "\"%/v1/projects/{project_id}:allocateIds:" - + "\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\303\001" - + "\n\nReserveIds\022&.google.datastore.v1.Reser" - + "veIdsRequest\032\'.google.datastore.v1.Reser" - + "veIdsResponse\"d\332A\017project_id,keys\202\323\344\223\002)\"" - + "$/v1/projects/{project_id}:reserveIds:\001*" - + "\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\032v\312A\030" - + "datastore.googleapis.com\322AXhttps://www.g" - + "oogleapis.com/auth/cloud-platform,https:" - + "//www.googleapis.com/auth/datastoreB\300\001\n\027" - + "com.google.datastore.v1B\016DatastoreProtoP" - + "\001Z + * The properties to return. Defaults to returning all properties. + * + * If this field is set and an entity has a property not referenced in the + * mask, it will be absent from [LookupResponse.found.entity.properties][]. + * + * The entity's key is always returned. + * + * + * .google.datastore.v1.PropertyMask property_mask = 5; + * + * @return Whether the propertyMask field is set. + */ + @java.lang.Override + public boolean hasPropertyMask() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+   * The properties to return. Defaults to returning all properties.
+   *
+   * If this field is set and an entity has a property not referenced in the
+   * mask, it will be absent from [LookupResponse.found.entity.properties][].
+   *
+   * The entity's key is always returned.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + * + * @return The propertyMask. + */ + @java.lang.Override + public com.google.datastore.v1.PropertyMask getPropertyMask() { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + /** + * + * + *
+   * The properties to return. Defaults to returning all properties.
+   *
+   * If this field is set and an entity has a property not referenced in the
+   * mask, it will be absent from [LookupResponse.found.entity.properties][].
+   *
+   * The entity's key is always returned.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + @java.lang.Override + public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -319,6 +384,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < keys_.size(); i++) { output.writeMessage(3, keys_.get(i)); } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(5, getPropertyMask()); + } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(projectId_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 8, projectId_); } @@ -340,6 +408,9 @@ public int getSerializedSize() { for (int i = 0; i < keys_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, keys_.get(i)); } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getPropertyMask()); + } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(projectId_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, projectId_); } @@ -368,6 +439,10 @@ public boolean equals(final java.lang.Object obj) { if (!getReadOptions().equals(other.getReadOptions())) return false; } if (!getKeysList().equals(other.getKeysList())) return false; + if (hasPropertyMask() != other.hasPropertyMask()) return false; + if (hasPropertyMask()) { + if (!getPropertyMask().equals(other.getPropertyMask())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -391,6 +466,10 @@ public int hashCode() { hash = (37 * hash) + KEYS_FIELD_NUMBER; hash = (53 * hash) + getKeysList().hashCode(); } + if (hasPropertyMask()) { + hash = (37 * hash) + PROPERTY_MASK_FIELD_NUMBER; + hash = (53 * hash) + getPropertyMask().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -532,6 +611,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getReadOptionsFieldBuilder(); getKeysFieldBuilder(); + getPropertyMaskFieldBuilder(); } } @@ -553,6 +633,11 @@ public Builder clear() { keysBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000008); + propertyMask_ = null; + if (propertyMaskBuilder_ != null) { + propertyMaskBuilder_.dispose(); + propertyMaskBuilder_ = null; + } return this; } @@ -614,6 +699,11 @@ private void buildPartial0(com.google.datastore.v1.LookupRequest result) { readOptionsBuilder_ == null ? readOptions_ : readOptionsBuilder_.build(); to_bitField0_ |= 0x00000001; } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.propertyMask_ = + propertyMaskBuilder_ == null ? propertyMask_ : propertyMaskBuilder_.build(); + to_bitField0_ |= 0x00000002; + } result.bitField0_ |= to_bitField0_; } @@ -702,6 +792,9 @@ public Builder mergeFrom(com.google.datastore.v1.LookupRequest other) { } } } + if (other.hasPropertyMask()) { + mergePropertyMask(other.getPropertyMask()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -746,6 +839,12 @@ public Builder mergeFrom( } break; } // case 26 + case 42: + { + input.readMessage(getPropertyMaskFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000010; + break; + } // case 42 case 66: { projectId_ = input.readStringRequireUtf8(); @@ -1549,6 +1648,236 @@ public java.util.List getKeysBuilderList() return keysBuilder_; } + private com.google.datastore.v1.PropertyMask propertyMask_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder> + propertyMaskBuilder_; + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + * + * @return Whether the propertyMask field is set. + */ + public boolean hasPropertyMask() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + * + * @return The propertyMask. + */ + public com.google.datastore.v1.PropertyMask getPropertyMask() { + if (propertyMaskBuilder_ == null) { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } else { + return propertyMaskBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + public Builder setPropertyMask(com.google.datastore.v1.PropertyMask value) { + if (propertyMaskBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + propertyMask_ = value; + } else { + propertyMaskBuilder_.setMessage(value); + } + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + public Builder setPropertyMask(com.google.datastore.v1.PropertyMask.Builder builderForValue) { + if (propertyMaskBuilder_ == null) { + propertyMask_ = builderForValue.build(); + } else { + propertyMaskBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + public Builder mergePropertyMask(com.google.datastore.v1.PropertyMask value) { + if (propertyMaskBuilder_ == null) { + if (((bitField0_ & 0x00000010) != 0) + && propertyMask_ != null + && propertyMask_ != com.google.datastore.v1.PropertyMask.getDefaultInstance()) { + getPropertyMaskBuilder().mergeFrom(value); + } else { + propertyMask_ = value; + } + } else { + propertyMaskBuilder_.mergeFrom(value); + } + if (propertyMask_ != null) { + bitField0_ |= 0x00000010; + onChanged(); + } + return this; + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + public Builder clearPropertyMask() { + bitField0_ = (bitField0_ & ~0x00000010); + propertyMask_ = null; + if (propertyMaskBuilder_ != null) { + propertyMaskBuilder_.dispose(); + propertyMaskBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + public com.google.datastore.v1.PropertyMask.Builder getPropertyMaskBuilder() { + bitField0_ |= 0x00000010; + onChanged(); + return getPropertyMaskFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() { + if (propertyMaskBuilder_ != null) { + return propertyMaskBuilder_.getMessageOrBuilder(); + } else { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + } + /** + * + * + *
+     * The properties to return. Defaults to returning all properties.
+     *
+     * If this field is set and an entity has a property not referenced in the
+     * mask, it will be absent from [LookupResponse.found.entity.properties][].
+     *
+     * The entity's key is always returned.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder> + getPropertyMaskFieldBuilder() { + if (propertyMaskBuilder_ == null) { + propertyMaskBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder>( + getPropertyMask(), getParentForChildren(), isClean()); + propertyMask_ = null; + } + return propertyMaskBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java index 82fe24661..d343eeca4 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java @@ -170,4 +170,54 @@ public interface LookupRequestOrBuilder * */ com.google.datastore.v1.KeyOrBuilder getKeysOrBuilder(int index); + + /** + * + * + *
+   * The properties to return. Defaults to returning all properties.
+   *
+   * If this field is set and an entity has a property not referenced in the
+   * mask, it will be absent from [LookupResponse.found.entity.properties][].
+   *
+   * The entity's key is always returned.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + * + * @return Whether the propertyMask field is set. + */ + boolean hasPropertyMask(); + /** + * + * + *
+   * The properties to return. Defaults to returning all properties.
+   *
+   * If this field is set and an entity has a property not referenced in the
+   * mask, it will be absent from [LookupResponse.found.entity.properties][].
+   *
+   * The entity's key is always returned.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + * + * @return The propertyMask. + */ + com.google.datastore.v1.PropertyMask getPropertyMask(); + /** + * + * + *
+   * The properties to return. Defaults to returning all properties.
+   *
+   * If this field is set and an entity has a property not referenced in the
+   * mask, it will be absent from [LookupResponse.found.entity.properties][].
+   *
+   * The entity's key is always returned.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 5; + */ + com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder(); } diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java index 91895d180..6857d48a6 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java @@ -60,6 +60,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { com.google.datastore.v1.Mutation.class, com.google.datastore.v1.Mutation.Builder.class); } + private int bitField0_; private int operationCase_ = 0; @SuppressWarnings("serial") @@ -476,6 +477,77 @@ public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() { return com.google.protobuf.Timestamp.getDefaultInstance(); } + public static final int PROPERTY_MASK_FIELD_NUMBER = 9; + private com.google.datastore.v1.PropertyMask propertyMask_; + /** + * + * + *
+   * The properties to write in this mutation.
+   * None of the properties in the mask may have a reserved name, except for
+   * `__key__`.
+   * This field is ignored for `delete`.
+   *
+   * If the entity already exists, only properties referenced in the mask are
+   * updated, others are left untouched.
+   * Properties referenced in the mask but not in the entity are deleted.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + * + * @return Whether the propertyMask field is set. + */ + @java.lang.Override + public boolean hasPropertyMask() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * The properties to write in this mutation.
+   * None of the properties in the mask may have a reserved name, except for
+   * `__key__`.
+   * This field is ignored for `delete`.
+   *
+   * If the entity already exists, only properties referenced in the mask are
+   * updated, others are left untouched.
+   * Properties referenced in the mask but not in the entity are deleted.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + * + * @return The propertyMask. + */ + @java.lang.Override + public com.google.datastore.v1.PropertyMask getPropertyMask() { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + /** + * + * + *
+   * The properties to write in this mutation.
+   * None of the properties in the mask may have a reserved name, except for
+   * `__key__`.
+   * This field is ignored for `delete`.
+   *
+   * If the entity already exists, only properties referenced in the mask are
+   * updated, others are left untouched.
+   * Properties referenced in the mask but not in the entity are deleted.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + @java.lang.Override + public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -505,6 +577,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (conflictDetectionStrategyCase_ == 8) { output.writeInt64(8, (long) ((java.lang.Long) conflictDetectionStrategy_)); } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(9, getPropertyMask()); + } if (conflictDetectionStrategyCase_ == 11) { output.writeMessage(11, (com.google.protobuf.Timestamp) conflictDetectionStrategy_); } @@ -542,6 +617,9 @@ public int getSerializedSize() { com.google.protobuf.CodedOutputStream.computeInt64Size( 8, (long) ((java.lang.Long) conflictDetectionStrategy_)); } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getPropertyMask()); + } if (conflictDetectionStrategyCase_ == 11) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( @@ -562,6 +640,10 @@ public boolean equals(final java.lang.Object obj) { } com.google.datastore.v1.Mutation other = (com.google.datastore.v1.Mutation) obj; + if (hasPropertyMask() != other.hasPropertyMask()) return false; + if (hasPropertyMask()) { + if (!getPropertyMask().equals(other.getPropertyMask())) return false; + } if (!getOperationCase().equals(other.getOperationCase())) return false; switch (operationCase_) { case 4: @@ -602,6 +684,10 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); + if (hasPropertyMask()) { + hash = (37 * hash) + PROPERTY_MASK_FIELD_NUMBER; + hash = (53 * hash) + getPropertyMask().hashCode(); + } switch (operationCase_) { case 4: hash = (37 * hash) + INSERT_FIELD_NUMBER; @@ -762,10 +848,19 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { } // Construct using com.google.datastore.v1.Mutation.newBuilder() - private Builder() {} + private Builder() { + maybeForceBuilderInitialization(); + } private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getPropertyMaskFieldBuilder(); + } } @java.lang.Override @@ -787,6 +882,11 @@ public Builder clear() { if (updateTimeBuilder_ != null) { updateTimeBuilder_.clear(); } + propertyMask_ = null; + if (propertyMaskBuilder_ != null) { + propertyMaskBuilder_.dispose(); + propertyMaskBuilder_ = null; + } operationCase_ = 0; operation_ = null; conflictDetectionStrategyCase_ = 0; @@ -827,6 +927,13 @@ public com.google.datastore.v1.Mutation buildPartial() { private void buildPartial0(com.google.datastore.v1.Mutation result) { int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000040) != 0)) { + result.propertyMask_ = + propertyMaskBuilder_ == null ? propertyMask_ : propertyMaskBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; } private void buildPartialOneofs(com.google.datastore.v1.Mutation result) { @@ -896,6 +1003,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(com.google.datastore.v1.Mutation other) { if (other == com.google.datastore.v1.Mutation.getDefaultInstance()) return this; + if (other.hasPropertyMask()) { + mergePropertyMask(other.getPropertyMask()); + } switch (other.getOperationCase()) { case INSERT: { @@ -994,6 +1104,12 @@ public Builder mergeFrom( conflictDetectionStrategyCase_ = 8; break; } // case 64 + case 74: + { + input.readMessage(getPropertyMaskFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000040; + break; + } // case 74 case 90: { input.readMessage(getUpdateTimeFieldBuilder().getBuilder(), extensionRegistry); @@ -2206,6 +2322,254 @@ public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() { return updateTimeBuilder_; } + private com.google.datastore.v1.PropertyMask propertyMask_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder> + propertyMaskBuilder_; + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + * + * @return Whether the propertyMask field is set. + */ + public boolean hasPropertyMask() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + * + * @return The propertyMask. + */ + public com.google.datastore.v1.PropertyMask getPropertyMask() { + if (propertyMaskBuilder_ == null) { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } else { + return propertyMaskBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + public Builder setPropertyMask(com.google.datastore.v1.PropertyMask value) { + if (propertyMaskBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + propertyMask_ = value; + } else { + propertyMaskBuilder_.setMessage(value); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + public Builder setPropertyMask(com.google.datastore.v1.PropertyMask.Builder builderForValue) { + if (propertyMaskBuilder_ == null) { + propertyMask_ = builderForValue.build(); + } else { + propertyMaskBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + public Builder mergePropertyMask(com.google.datastore.v1.PropertyMask value) { + if (propertyMaskBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0) + && propertyMask_ != null + && propertyMask_ != com.google.datastore.v1.PropertyMask.getDefaultInstance()) { + getPropertyMaskBuilder().mergeFrom(value); + } else { + propertyMask_ = value; + } + } else { + propertyMaskBuilder_.mergeFrom(value); + } + if (propertyMask_ != null) { + bitField0_ |= 0x00000040; + onChanged(); + } + return this; + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + public Builder clearPropertyMask() { + bitField0_ = (bitField0_ & ~0x00000040); + propertyMask_ = null; + if (propertyMaskBuilder_ != null) { + propertyMaskBuilder_.dispose(); + propertyMaskBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + public com.google.datastore.v1.PropertyMask.Builder getPropertyMaskBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getPropertyMaskFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() { + if (propertyMaskBuilder_ != null) { + return propertyMaskBuilder_.getMessageOrBuilder(); + } else { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + } + /** + * + * + *
+     * The properties to write in this mutation.
+     * None of the properties in the mask may have a reserved name, except for
+     * `__key__`.
+     * This field is ignored for `delete`.
+     *
+     * If the entity already exists, only properties referenced in the mask are
+     * updated, others are left untouched.
+     * Properties referenced in the mask but not in the entity are deleted.
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder> + getPropertyMaskFieldBuilder() { + if (propertyMaskBuilder_ == null) { + propertyMaskBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder>( + getPropertyMask(), getParentForChildren(), isClean()); + propertyMask_ = null; + } + return propertyMaskBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java index e833ed942..e051e6003 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java @@ -246,6 +246,62 @@ public interface MutationOrBuilder */ com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder(); + /** + * + * + *
+   * The properties to write in this mutation.
+   * None of the properties in the mask may have a reserved name, except for
+   * `__key__`.
+   * This field is ignored for `delete`.
+   *
+   * If the entity already exists, only properties referenced in the mask are
+   * updated, others are left untouched.
+   * Properties referenced in the mask but not in the entity are deleted.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + * + * @return Whether the propertyMask field is set. + */ + boolean hasPropertyMask(); + /** + * + * + *
+   * The properties to write in this mutation.
+   * None of the properties in the mask may have a reserved name, except for
+   * `__key__`.
+   * This field is ignored for `delete`.
+   *
+   * If the entity already exists, only properties referenced in the mask are
+   * updated, others are left untouched.
+   * Properties referenced in the mask but not in the entity are deleted.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + * + * @return The propertyMask. + */ + com.google.datastore.v1.PropertyMask getPropertyMask(); + /** + * + * + *
+   * The properties to write in this mutation.
+   * None of the properties in the mask may have a reserved name, except for
+   * `__key__`.
+   * This field is ignored for `delete`.
+   *
+   * If the entity already exists, only properties referenced in the mask are
+   * updated, others are left untouched.
+   * Properties referenced in the mask but not in the entity are deleted.
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 9; + */ + com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder(); + com.google.datastore.v1.Mutation.OperationCase getOperationCase(); com.google.datastore.v1.Mutation.ConflictDetectionStrategyCase getConflictDetectionStrategyCase(); diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java new file mode 100644 index 000000000..2d9c2caf6 --- /dev/null +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java @@ -0,0 +1,848 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/datastore/v1/datastore.proto + +// Protobuf Java Version: 3.25.3 +package com.google.datastore.v1; + +/** + * + * + *
+ * The set of arbitrarily nested property paths used to restrict an operation to
+ * only a subset of properties in an entity.
+ * 
+ * + * Protobuf type {@code google.datastore.v1.PropertyMask} + */ +public final class PropertyMask extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.datastore.v1.PropertyMask) + PropertyMaskOrBuilder { + private static final long serialVersionUID = 0L; + // Use PropertyMask.newBuilder() to construct. + private PropertyMask(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private PropertyMask() { + paths_ = com.google.protobuf.LazyStringArrayList.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new PropertyMask(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyMask_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyMask_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.datastore.v1.PropertyMask.class, + com.google.datastore.v1.PropertyMask.Builder.class); + } + + public static final int PATHS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList paths_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @return A list containing the paths. + */ + public com.google.protobuf.ProtocolStringList getPathsList() { + return paths_; + } + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @return The count of paths. + */ + public int getPathsCount() { + return paths_.size(); + } + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @param index The index of the element to return. + * @return The paths at the given index. + */ + public java.lang.String getPaths(int index) { + return paths_.get(index); + } + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @param index The index of the value to return. + * @return The bytes of the paths at the given index. + */ + public com.google.protobuf.ByteString getPathsBytes(int index) { + return paths_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < paths_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, paths_.getRaw(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < paths_.size(); i++) { + dataSize += computeStringSizeNoTag(paths_.getRaw(i)); + } + size += dataSize; + size += 1 * getPathsList().size(); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.datastore.v1.PropertyMask)) { + return super.equals(obj); + } + com.google.datastore.v1.PropertyMask other = (com.google.datastore.v1.PropertyMask) obj; + + if (!getPathsList().equals(other.getPathsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getPathsCount() > 0) { + hash = (37 * hash) + PATHS_FIELD_NUMBER; + hash = (53 * hash) + getPathsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.datastore.v1.PropertyMask parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.datastore.v1.PropertyMask parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyMask parseFrom(com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.datastore.v1.PropertyMask parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyMask parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.datastore.v1.PropertyMask parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyMask parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.datastore.v1.PropertyMask parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyMask parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.datastore.v1.PropertyMask parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyMask parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.datastore.v1.PropertyMask parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.datastore.v1.PropertyMask prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * The set of arbitrarily nested property paths used to restrict an operation to
+   * only a subset of properties in an entity.
+   * 
+ * + * Protobuf type {@code google.datastore.v1.PropertyMask} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.datastore.v1.PropertyMask) + com.google.datastore.v1.PropertyMaskOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyMask_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyMask_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.datastore.v1.PropertyMask.class, + com.google.datastore.v1.PropertyMask.Builder.class); + } + + // Construct using com.google.datastore.v1.PropertyMask.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + paths_ = com.google.protobuf.LazyStringArrayList.emptyList(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyMask_descriptor; + } + + @java.lang.Override + public com.google.datastore.v1.PropertyMask getDefaultInstanceForType() { + return com.google.datastore.v1.PropertyMask.getDefaultInstance(); + } + + @java.lang.Override + public com.google.datastore.v1.PropertyMask build() { + com.google.datastore.v1.PropertyMask result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.datastore.v1.PropertyMask buildPartial() { + com.google.datastore.v1.PropertyMask result = new com.google.datastore.v1.PropertyMask(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.datastore.v1.PropertyMask result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + paths_.makeImmutable(); + result.paths_ = paths_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.datastore.v1.PropertyMask) { + return mergeFrom((com.google.datastore.v1.PropertyMask) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.datastore.v1.PropertyMask other) { + if (other == com.google.datastore.v1.PropertyMask.getDefaultInstance()) return this; + if (!other.paths_.isEmpty()) { + if (paths_.isEmpty()) { + paths_ = other.paths_; + bitField0_ |= 0x00000001; + } else { + ensurePathsIsMutable(); + paths_.addAll(other.paths_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + ensurePathsIsMutable(); + paths_.add(s); + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.protobuf.LazyStringArrayList paths_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + + private void ensurePathsIsMutable() { + if (!paths_.isModifiable()) { + paths_ = new com.google.protobuf.LazyStringArrayList(paths_); + } + bitField0_ |= 0x00000001; + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @return A list containing the paths. + */ + public com.google.protobuf.ProtocolStringList getPathsList() { + paths_.makeImmutable(); + return paths_; + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @return The count of paths. + */ + public int getPathsCount() { + return paths_.size(); + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @param index The index of the element to return. + * @return The paths at the given index. + */ + public java.lang.String getPaths(int index) { + return paths_.get(index); + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @param index The index of the value to return. + * @return The bytes of the paths at the given index. + */ + public com.google.protobuf.ByteString getPathsBytes(int index) { + return paths_.getByteString(index); + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @param index The index to set the value at. + * @param value The paths to set. + * @return This builder for chaining. + */ + public Builder setPaths(int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePathsIsMutable(); + paths_.set(index, value); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @param value The paths to add. + * @return This builder for chaining. + */ + public Builder addPaths(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePathsIsMutable(); + paths_.add(value); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @param values The paths to add. + * @return This builder for chaining. + */ + public Builder addAllPaths(java.lang.Iterable values) { + ensurePathsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, paths_); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @return This builder for chaining. + */ + public Builder clearPaths() { + paths_ = com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + ; + onChanged(); + return this; + } + /** + * + * + *
+     * The paths to the properties covered by this mask.
+     *
+     * A path is a list of property names separated by dots (`.`), for example
+     * `foo.bar` means the property `bar` inside the entity property `foo` inside
+     * the entity associated with this path.
+     *
+     * If a property name contains a dot `.` or a backslash `\`, then that
+     * name must be escaped.
+     *
+     * A path must not be empty, and may not reference a value inside an
+     * [array value][google.datastore.v1.Value.array_value].
+     * 
+ * + * repeated string paths = 1; + * + * @param value The bytes of the paths to add. + * @return This builder for chaining. + */ + public Builder addPathsBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensurePathsIsMutable(); + paths_.add(value); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.datastore.v1.PropertyMask) + } + + // @@protoc_insertion_point(class_scope:google.datastore.v1.PropertyMask) + private static final com.google.datastore.v1.PropertyMask DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.datastore.v1.PropertyMask(); + } + + public static com.google.datastore.v1.PropertyMask getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PropertyMask parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.datastore.v1.PropertyMask getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java new file mode 100644 index 000000000..8711d5d8a --- /dev/null +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java @@ -0,0 +1,117 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/datastore/v1/datastore.proto + +// Protobuf Java Version: 3.25.3 +package com.google.datastore.v1; + +public interface PropertyMaskOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.datastore.v1.PropertyMask) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @return A list containing the paths. + */ + java.util.List getPathsList(); + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @return The count of paths. + */ + int getPathsCount(); + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @param index The index of the element to return. + * @return The paths at the given index. + */ + java.lang.String getPaths(int index); + /** + * + * + *
+   * The paths to the properties covered by this mask.
+   *
+   * A path is a list of property names separated by dots (`.`), for example
+   * `foo.bar` means the property `bar` inside the entity property `foo` inside
+   * the entity associated with this path.
+   *
+   * If a property name contains a dot `.` or a backslash `\`, then that
+   * name must be escaped.
+   *
+   * A path must not be empty, and may not reference a value inside an
+   * [array value][google.datastore.v1.Value.array_value].
+   * 
+ * + * repeated string paths = 1; + * + * @param index The index of the value to return. + * @return The bytes of the paths at the given index. + */ + com.google.protobuf.ByteString getPathsBytes(int index); +} diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java index 4420d5779..55691ceae 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java @@ -433,6 +433,68 @@ public com.google.datastore.v1.GqlQueryOrBuilder getGqlQueryOrBuilder() { return com.google.datastore.v1.GqlQuery.getDefaultInstance(); } + public static final int PROPERTY_MASK_FIELD_NUMBER = 10; + private com.google.datastore.v1.PropertyMask propertyMask_; + /** + * + * + *
+   * The properties to return.
+   * This field must not be set for a projection query.
+   *
+   * See
+   * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + * + * @return Whether the propertyMask field is set. + */ + @java.lang.Override + public boolean hasPropertyMask() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * The properties to return.
+   * This field must not be set for a projection query.
+   *
+   * See
+   * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + * + * @return The propertyMask. + */ + @java.lang.Override + public com.google.datastore.v1.PropertyMask getPropertyMask() { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + /** + * + * + *
+   * The properties to return.
+   * This field must not be set for a projection query.
+   *
+   * See
+   * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + @java.lang.Override + public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + public static final int EXPLAIN_OPTIONS_FIELD_NUMBER = 12; private com.google.datastore.v1.ExplainOptions explainOptions_; /** @@ -451,7 +513,7 @@ public com.google.datastore.v1.GqlQueryOrBuilder getGqlQueryOrBuilder() { */ @java.lang.Override public boolean hasExplainOptions() { - return ((bitField0_ & 0x00000004) != 0); + return ((bitField0_ & 0x00000008) != 0); } /** * @@ -525,6 +587,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io com.google.protobuf.GeneratedMessageV3.writeString(output, 9, databaseId_); } if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(10, getPropertyMask()); + } + if (((bitField0_ & 0x00000008) != 0)) { output.writeMessage(12, getExplainOptions()); } getUnknownFields().writeTo(output); @@ -559,6 +624,9 @@ public int getSerializedSize() { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, databaseId_); } if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getPropertyMask()); + } + if (((bitField0_ & 0x00000008) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(12, getExplainOptions()); } size += getUnknownFields().getSerializedSize(); @@ -586,6 +654,10 @@ public boolean equals(final java.lang.Object obj) { if (hasReadOptions()) { if (!getReadOptions().equals(other.getReadOptions())) return false; } + if (hasPropertyMask() != other.hasPropertyMask()) return false; + if (hasPropertyMask()) { + if (!getPropertyMask().equals(other.getPropertyMask())) return false; + } if (hasExplainOptions() != other.hasExplainOptions()) return false; if (hasExplainOptions()) { if (!getExplainOptions().equals(other.getExplainOptions())) return false; @@ -624,6 +696,10 @@ public int hashCode() { hash = (37 * hash) + READ_OPTIONS_FIELD_NUMBER; hash = (53 * hash) + getReadOptions().hashCode(); } + if (hasPropertyMask()) { + hash = (37 * hash) + PROPERTY_MASK_FIELD_NUMBER; + hash = (53 * hash) + getPropertyMask().hashCode(); + } if (hasExplainOptions()) { hash = (37 * hash) + EXPLAIN_OPTIONS_FIELD_NUMBER; hash = (53 * hash) + getExplainOptions().hashCode(); @@ -782,6 +858,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getPartitionIdFieldBuilder(); getReadOptionsFieldBuilder(); + getPropertyMaskFieldBuilder(); getExplainOptionsFieldBuilder(); } } @@ -808,6 +885,11 @@ public Builder clear() { if (gqlQueryBuilder_ != null) { gqlQueryBuilder_.clear(); } + propertyMask_ = null; + if (propertyMaskBuilder_ != null) { + propertyMaskBuilder_.dispose(); + propertyMaskBuilder_ = null; + } explainOptions_ = null; if (explainOptionsBuilder_ != null) { explainOptionsBuilder_.dispose(); @@ -870,9 +952,14 @@ private void buildPartial0(com.google.datastore.v1.RunQueryRequest result) { to_bitField0_ |= 0x00000002; } if (((from_bitField0_ & 0x00000040) != 0)) { + result.propertyMask_ = + propertyMaskBuilder_ == null ? propertyMask_ : propertyMaskBuilder_.build(); + to_bitField0_ |= 0x00000004; + } + if (((from_bitField0_ & 0x00000080) != 0)) { result.explainOptions_ = explainOptionsBuilder_ == null ? explainOptions_ : explainOptionsBuilder_.build(); - to_bitField0_ |= 0x00000004; + to_bitField0_ |= 0x00000008; } result.bitField0_ |= to_bitField0_; } @@ -949,6 +1036,9 @@ public Builder mergeFrom(com.google.datastore.v1.RunQueryRequest other) { if (other.hasReadOptions()) { mergeReadOptions(other.getReadOptions()); } + if (other.hasPropertyMask()) { + mergePropertyMask(other.getPropertyMask()); + } if (other.hasExplainOptions()) { mergeExplainOptions(other.getExplainOptions()); } @@ -1030,10 +1120,16 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 74 + case 82: + { + input.readMessage(getPropertyMaskFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000040; + break; + } // case 82 case 98: { input.readMessage(getExplainOptionsFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; break; } // case 98 default: @@ -2104,6 +2200,227 @@ public com.google.datastore.v1.GqlQueryOrBuilder getGqlQueryOrBuilder() { return gqlQueryBuilder_; } + private com.google.datastore.v1.PropertyMask propertyMask_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder> + propertyMaskBuilder_; + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + * + * @return Whether the propertyMask field is set. + */ + public boolean hasPropertyMask() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + * + * @return The propertyMask. + */ + public com.google.datastore.v1.PropertyMask getPropertyMask() { + if (propertyMaskBuilder_ == null) { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } else { + return propertyMaskBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + public Builder setPropertyMask(com.google.datastore.v1.PropertyMask value) { + if (propertyMaskBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + propertyMask_ = value; + } else { + propertyMaskBuilder_.setMessage(value); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + public Builder setPropertyMask(com.google.datastore.v1.PropertyMask.Builder builderForValue) { + if (propertyMaskBuilder_ == null) { + propertyMask_ = builderForValue.build(); + } else { + propertyMaskBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + public Builder mergePropertyMask(com.google.datastore.v1.PropertyMask value) { + if (propertyMaskBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0) + && propertyMask_ != null + && propertyMask_ != com.google.datastore.v1.PropertyMask.getDefaultInstance()) { + getPropertyMaskBuilder().mergeFrom(value); + } else { + propertyMask_ = value; + } + } else { + propertyMaskBuilder_.mergeFrom(value); + } + if (propertyMask_ != null) { + bitField0_ |= 0x00000040; + onChanged(); + } + return this; + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + public Builder clearPropertyMask() { + bitField0_ = (bitField0_ & ~0x00000040); + propertyMask_ = null; + if (propertyMaskBuilder_ != null) { + propertyMaskBuilder_.dispose(); + propertyMaskBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + public com.google.datastore.v1.PropertyMask.Builder getPropertyMaskBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getPropertyMaskFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() { + if (propertyMaskBuilder_ != null) { + return propertyMaskBuilder_.getMessageOrBuilder(); + } else { + return propertyMask_ == null + ? com.google.datastore.v1.PropertyMask.getDefaultInstance() + : propertyMask_; + } + } + /** + * + * + *
+     * The properties to return.
+     * This field must not be set for a projection query.
+     *
+     * See
+     * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+     * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder> + getPropertyMaskFieldBuilder() { + if (propertyMaskBuilder_ == null) { + propertyMaskBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.PropertyMask, + com.google.datastore.v1.PropertyMask.Builder, + com.google.datastore.v1.PropertyMaskOrBuilder>( + getPropertyMask(), getParentForChildren(), isClean()); + propertyMask_ = null; + } + return propertyMaskBuilder_; + } + private com.google.datastore.v1.ExplainOptions explainOptions_; private com.google.protobuf.SingleFieldBuilderV3< com.google.datastore.v1.ExplainOptions, @@ -2125,7 +2442,7 @@ public com.google.datastore.v1.GqlQueryOrBuilder getGqlQueryOrBuilder() { * @return Whether the explainOptions field is set. */ public boolean hasExplainOptions() { - return ((bitField0_ & 0x00000040) != 0); + return ((bitField0_ & 0x00000080) != 0); } /** * @@ -2171,7 +2488,7 @@ public Builder setExplainOptions(com.google.datastore.v1.ExplainOptions value) { } else { explainOptionsBuilder_.setMessage(value); } - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2194,7 +2511,7 @@ public Builder setExplainOptions( } else { explainOptionsBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2212,7 +2529,7 @@ public Builder setExplainOptions( */ public Builder mergeExplainOptions(com.google.datastore.v1.ExplainOptions value) { if (explainOptionsBuilder_ == null) { - if (((bitField0_ & 0x00000040) != 0) + if (((bitField0_ & 0x00000080) != 0) && explainOptions_ != null && explainOptions_ != com.google.datastore.v1.ExplainOptions.getDefaultInstance()) { getExplainOptionsBuilder().mergeFrom(value); @@ -2223,7 +2540,7 @@ public Builder mergeExplainOptions(com.google.datastore.v1.ExplainOptions value) explainOptionsBuilder_.mergeFrom(value); } if (explainOptions_ != null) { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); } return this; @@ -2241,7 +2558,7 @@ public Builder mergeExplainOptions(com.google.datastore.v1.ExplainOptions value) * */ public Builder clearExplainOptions() { - bitField0_ = (bitField0_ & ~0x00000040); + bitField0_ = (bitField0_ & ~0x00000080); explainOptions_ = null; if (explainOptionsBuilder_ != null) { explainOptionsBuilder_.dispose(); @@ -2263,7 +2580,7 @@ public Builder clearExplainOptions() { * */ public com.google.datastore.v1.ExplainOptions.Builder getExplainOptionsBuilder() { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return getExplainOptionsFieldBuilder().getBuilder(); } diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java index 9e7a6f0b9..55218e0e9 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java @@ -229,6 +229,53 @@ public interface RunQueryRequestOrBuilder */ com.google.datastore.v1.GqlQueryOrBuilder getGqlQueryOrBuilder(); + /** + * + * + *
+   * The properties to return.
+   * This field must not be set for a projection query.
+   *
+   * See
+   * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + * + * @return Whether the propertyMask field is set. + */ + boolean hasPropertyMask(); + /** + * + * + *
+   * The properties to return.
+   * This field must not be set for a projection query.
+   *
+   * See
+   * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + * + * @return The propertyMask. + */ + com.google.datastore.v1.PropertyMask getPropertyMask(); + /** + * + * + *
+   * The properties to return.
+   * This field must not be set for a projection query.
+   *
+   * See
+   * [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
+   * 
+ * + * .google.datastore.v1.PropertyMask property_mask = 10; + */ + com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder(); + /** * * diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto index fbbabb0a3..92b5038ea 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto @@ -173,6 +173,14 @@ message LookupRequest { // Required. Keys of entities to look up. repeated Key keys = 3 [(google.api.field_behavior) = REQUIRED]; + + // The properties to return. Defaults to returning all properties. + // + // If this field is set and an entity has a property not referenced in the + // mask, it will be absent from [LookupResponse.found.entity.properties][]. + // + // The entity's key is always returned. + PropertyMask property_mask = 5; } // The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. @@ -234,6 +242,13 @@ message RunQueryRequest { GqlQuery gql_query = 7; } + // The properties to return. + // This field must not be set for a projection query. + // + // See + // [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask]. + PropertyMask property_mask = 10; + // Optional. Explain options for the query. If set, additional query // statistics will be returned. If not, only query results will be returned. ExplainOptions explain_options = 12 [(google.api.field_behavior) = OPTIONAL]; @@ -526,6 +541,16 @@ message Mutation { // mutation conflicts. google.protobuf.Timestamp update_time = 11; } + + // The properties to write in this mutation. + // None of the properties in the mask may have a reserved name, except for + // `__key__`. + // This field is ignored for `delete`. + // + // If the entity already exists, only properties referenced in the mask are + // updated, others are left untouched. + // Properties referenced in the mask but not in the entity are deleted. + PropertyMask property_mask = 9; } // The result of applying a mutation. @@ -555,6 +580,23 @@ message MutationResult { bool conflict_detected = 5; } +// The set of arbitrarily nested property paths used to restrict an operation to +// only a subset of properties in an entity. +message PropertyMask { + // The paths to the properties covered by this mask. + // + // A path is a list of property names separated by dots (`.`), for example + // `foo.bar` means the property `bar` inside the entity property `foo` inside + // the entity associated with this path. + // + // If a property name contains a dot `.` or a backslash `\`, then that + // name must be escaped. + // + // A path must not be empty, and may not reference a value inside an + // [array value][google.datastore.v1.Value.array_value]. + repeated string paths = 1; +} + // The options shared by read requests. message ReadOptions { // The possible values for read consistencies. From 992815d9989d04f7b371dfa320ed17894626a07f Mon Sep 17 00:00:00 2001 From: Henry Johnson Date: Tue, 28 May 2024 11:10:31 +1200 Subject: [PATCH 025/102] fix: set the correct database id on the key parent when calling Key#getParent (#1457) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: set database ID on parent key * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../com/google/cloud/datastore/IncompleteKey.java | 6 ++++-- .../google/cloud/datastore/IncompleteKeyTest.java | 12 ++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/IncompleteKey.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/IncompleteKey.java index db9973cb5..71e31b94d 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/IncompleteKey.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/IncompleteKey.java @@ -91,9 +91,11 @@ public Key getParent() { PathElement parent = ancestors.get(ancestors.size() - 1); Key.Builder keyBuilder; if (parent.hasName()) { - keyBuilder = Key.newBuilder(getProjectId(), parent.getKind(), parent.getName()); + keyBuilder = + Key.newBuilder(getProjectId(), parent.getKind(), parent.getName(), getDatabaseId()); } else { - keyBuilder = Key.newBuilder(getProjectId(), parent.getKind(), parent.getId()); + keyBuilder = + Key.newBuilder(getProjectId(), parent.getKind(), parent.getId(), getDatabaseId()); } String namespace = getNamespace(); if (namespace != null) { diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/IncompleteKeyTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/IncompleteKeyTest.java index a1f8956b5..75549e5ea 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/IncompleteKeyTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/IncompleteKeyTest.java @@ -25,15 +25,17 @@ public class IncompleteKeyTest { - private static IncompleteKey pk1, pk2, pk4; - private static Key parent1; + private static IncompleteKey pk1, pk2, pk4, pk5; + private static Key parent1, parent2; @Before public void setUp() { pk1 = IncompleteKey.newBuilder("ds", "kind1").build(); parent1 = Key.newBuilder("ds", "kind2", 10).setNamespace("ns").build(); + parent2 = Key.newBuilder("ds", "kind2", 10, "test-db").setNamespace("ns").build(); pk2 = IncompleteKey.newBuilder(parent1, "kind3").build(); pk4 = IncompleteKey.newBuilderWithDatabaseId("ds", "kind3", "test-db").build(); + pk5 = IncompleteKey.newBuilder(parent2, "kind4").build(); } @Test @@ -59,12 +61,18 @@ public void testBuilders() { assertEquals("test-db", pk4.getDatabaseId()); assertEquals("kind3", pk4.getKind()); assertTrue(pk4.getAncestors().isEmpty()); + + assertEquals("ds", pk5.getProjectId()); + assertEquals("test-db", pk5.getDatabaseId()); + assertEquals("kind4", pk5.getKind()); + assertEquals(parent2.getPath(), pk5.getAncestors()); } @Test public void testParent() { assertNull(pk1.getParent()); assertEquals(parent1, pk2.getParent()); + assertEquals(parent2, pk5.getParent()); Key parent2 = Key.newBuilder("ds", "kind3", "name").setNamespace("ns").build(); IncompleteKey pk3 = IncompleteKey.newBuilder(parent2, "kind3").build(); assertEquals(parent2, pk3.getParent()); From 2d380e51e7ddde71e8625b23b94857e4a48c12f9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 13:30:17 +0000 Subject: [PATCH 026/102] chore(main): release 2.20.0 (#1454) :robot: I have created a release *beep* *boop* --- ## [2.20.0](https://togithub.com/googleapis/java-datastore/compare/v2.19.3...v2.20.0) (2024-05-27) ### Features * New PropertyMask field which allows partial commits, lookups, and query results ([#1455](https://togithub.com/googleapis/java-datastore/issues/1455)) ([ff5e397](https://togithub.com/googleapis/java-datastore/commit/ff5e39775446216b4806f55f14dacb7fc8e8854b)) ### Bug Fixes * Migrate off TextPrinter's deprecated methods ([#1452](https://togithub.com/googleapis/java-datastore/issues/1452)) ([c3c1317](https://togithub.com/googleapis/java-datastore/commit/c3c131735863d71971110e2ac7ac0244ce16ee92)) * Set the correct database id on the key parent when calling Key#getParent ([#1457](https://togithub.com/googleapis/java-datastore/issues/1457)) ([992815d](https://togithub.com/googleapis/java-datastore/commit/992815d9989d04f7b371dfa320ed17894626a07f)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- CHANGELOG.md | 13 +++++++++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 41 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 185e9d891..37dd53f58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [2.20.0](https://github.com/googleapis/java-datastore/compare/v2.19.3...v2.20.0) (2024-05-27) + + +### Features + +* New PropertyMask field which allows partial commits, lookups, and query results ([#1455](https://github.com/googleapis/java-datastore/issues/1455)) ([ff5e397](https://github.com/googleapis/java-datastore/commit/ff5e39775446216b4806f55f14dacb7fc8e8854b)) + + +### Bug Fixes + +* Migrate off TextPrinter's deprecated methods ([#1452](https://github.com/googleapis/java-datastore/issues/1452)) ([c3c1317](https://github.com/googleapis/java-datastore/commit/c3c131735863d71971110e2ac7ac0244ce16ee92)) +* Set the correct database id on the key parent when calling Key#getParent ([#1457](https://github.com/googleapis/java-datastore/issues/1457)) ([992815d](https://github.com/googleapis/java-datastore/commit/992815d9989d04f7b371dfa320ed17894626a07f)) + ## [2.19.3](https://github.com/googleapis/java-datastore/compare/v2.19.2...v2.19.3) (2024-05-16) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 4c6c8306b..6a96c7688 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.19.4-SNAPSHOT + 2.20.0 com.google.cloud google-cloud-datastore-parent - 2.19.4-SNAPSHOT + 2.20.0 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index f4509a986..837193172 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.19.4-SNAPSHOT + 2.20.0 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.19.4-SNAPSHOT + 2.20.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.4-SNAPSHOT + 2.20.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.4-SNAPSHOT + 0.111.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.4-SNAPSHOT + 2.20.0
diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 50a0dc771..21ea96e1f 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.19.4-SNAPSHOT + 2.20.0 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.19.4-SNAPSHOT + 2.20.0 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index d846af69e..0411bb3e1 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.4-SNAPSHOT + 2.20.0 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.4-SNAPSHOT + 2.20.0 diff --git a/pom.xml b/pom.xml index 859d22ae8..2aa5869ae 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.19.4-SNAPSHOT + 2.20.0 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.4-SNAPSHOT + 2.20.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.19.4-SNAPSHOT + 2.20.0 com.google.cloud google-cloud-datastore - 2.19.4-SNAPSHOT + 2.20.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.4-SNAPSHOT + 0.111.0 com.google.cloud.datastore datastore-v1-proto-client - 2.19.4-SNAPSHOT + 2.20.0 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index b7d230c93..5ce728f7a 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.19.4-SNAPSHOT + 2.20.0 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.19.4-SNAPSHOT + 2.20.0 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 406872937..bb5427dfb 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.110.4-SNAPSHOT + 0.111.0 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.19.4-SNAPSHOT + 2.20.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 0f1b38b1b..6d378e516 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.19.4-SNAPSHOT + 2.20.0 diff --git a/versions.txt b/versions.txt index 5a99dd778..e8bac13b0 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.19.3:2.19.4-SNAPSHOT -google-cloud-datastore-bom:2.19.3:2.19.4-SNAPSHOT -proto-google-cloud-datastore-v1:0.110.3:0.110.4-SNAPSHOT -datastore-v1-proto-client:2.19.3:2.19.4-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.19.3:2.19.4-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.19.3:2.19.4-SNAPSHOT +google-cloud-datastore:2.20.0:2.20.0 +google-cloud-datastore-bom:2.20.0:2.20.0 +proto-google-cloud-datastore-v1:0.111.0:0.111.0 +datastore-v1-proto-client:2.20.0:2.20.0 +proto-google-cloud-datastore-admin-v1:2.20.0:2.20.0 +grpc-google-cloud-datastore-admin-v1:2.20.0:2.20.0 From 55c5a6397c688623cacba045aab31c5f6b845b93 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 15:32:17 +0000 Subject: [PATCH 027/102] chore(main): release 2.20.1-SNAPSHOT (#1461) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 6a96c7688..c9805ccc0 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.0 + 2.20.1-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.20.0 + 2.20.1-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 837193172..fd4ff704a 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.20.0 + 2.20.1-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.20.0 + 2.20.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.0 + 2.20.1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.0 + 0.111.1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.0 + 2.20.1-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 21ea96e1f..9467dd692 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.20.0 + 2.20.1-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.20.0 + 2.20.1-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 0411bb3e1..34ed50955 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.0 + 2.20.1-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.0 + 2.20.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index 2aa5869ae..a72b38f98 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.20.0 + 2.20.1-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.0 + 2.20.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.0 + 2.20.1-SNAPSHOT com.google.cloud google-cloud-datastore - 2.20.0 + 2.20.1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.0 + 0.111.1-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.20.0 + 2.20.1-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 5ce728f7a..95dd5fcaa 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.0 + 2.20.1-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.0 + 2.20.1-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index bb5427dfb..de242755b 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.0 + 0.111.1-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.20.0 + 2.20.1-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 6d378e516..421612d06 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.20.0 + 2.20.1-SNAPSHOT diff --git a/versions.txt b/versions.txt index e8bac13b0..6f2c5611b 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.20.0:2.20.0 -google-cloud-datastore-bom:2.20.0:2.20.0 -proto-google-cloud-datastore-v1:0.111.0:0.111.0 -datastore-v1-proto-client:2.20.0:2.20.0 -proto-google-cloud-datastore-admin-v1:2.20.0:2.20.0 -grpc-google-cloud-datastore-admin-v1:2.20.0:2.20.0 +google-cloud-datastore:2.20.0:2.20.1-SNAPSHOT +google-cloud-datastore-bom:2.20.0:2.20.1-SNAPSHOT +proto-google-cloud-datastore-v1:0.111.0:0.111.1-SNAPSHOT +datastore-v1-proto-client:2.20.0:2.20.1-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.20.0:2.20.1-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.20.0:2.20.1-SNAPSHOT From 5058efbfa235f6ffa9c41071fb1421c842336116 Mon Sep 17 00:00:00 2001 From: kolea2 <45548808+kolea2@users.noreply.github.com> Date: Tue, 28 May 2024 11:49:35 -0400 Subject: [PATCH 028/102] test: add integration test for incomplete key (#1460) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test: add integration test for incomplete key * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../cloud/datastore/it/ITDatastoreTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java index 09dcd2116..c012d28c9 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java @@ -144,6 +144,7 @@ public class ITDatastoreTest { private static Key KEY3; private static Key KEY4; private static Key KEY5; + private static Key KEY6; private static final String MARKS_KIND = "Marks"; private static FullEntity PARTIAL_ENTITY1; private static FullEntity PARTIAL_ENTITY2; @@ -193,6 +194,10 @@ public ITDatastoreTest( KEY3 = Key.newBuilder(KEY2).setName("bla").setNamespace(NAMESPACE).build(); KEY4 = Key.newBuilder(KEY2).setName("newName1").setNamespace(NAMESPACE).build(); KEY5 = Key.newBuilder(KEY2).setName("newName2").setNamespace(NAMESPACE).build(); + KEY6 = + Key.newBuilder(options.getProjectId(), KIND2, 100, options.getDatabaseId()) + .setNamespace(NAMESPACE) + .build(); LIST_VALUE2 = ListValue.of(Collections.singletonList(KeyValue.of(KEY1))); @@ -1787,6 +1792,21 @@ public void testGet() { assertFalse(entity.contains("bla")); } + @Test + public void testIncompleteKey() { + Key parentKey = null; + try { + IncompleteKey incompleteKey = IncompleteKey.newBuilder(KEY6, KIND1).build(); + parentKey = incompleteKey.getParent(); + Entity entity = Entity.newBuilder(parentKey).set("name", "val").build(); + datastore.put(entity); + Entity retrievedEntity = datastore.get(parentKey); + assertThat(retrievedEntity).isEqualTo(entity); + } finally { + datastore.delete(parentKey); + } + } + @Test public void testGetWithReadTime() throws InterruptedException { Key key = From 85b90a266421a842db0093c83d16346fd04513ed Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 28 May 2024 17:58:02 +0200 Subject: [PATCH 029/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.20.0 (#1463) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.20.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- README.md | 8 ++++---- samples/install-without-bom/pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0a6931db2..9bdf33b26 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-datastore - 2.19.3 + 2.20.0 ``` @@ -57,13 +57,13 @@ 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.19.3' +implementation 'com.google.cloud:google-cloud-datastore:2.20.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.19.3" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.20.0" ``` @@ -384,7 +384,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.19.3 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.20.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/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 45eb26354..4b268da0e 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.19.3 + 2.20.0 From bb1b4033f80995d4bd52f85092179a7d2f997e4c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 29 May 2024 23:06:10 +0200 Subject: [PATCH 030/102] chore(deps): update dependency com.google.cloud:libraries-bom to v26.40.0 (#1466) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency com.google.cloud:libraries-bom to v26.40.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- README.md | 4 ++-- samples/native-image-sample/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9bdf33b26..4520f2779 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.39.0 + 26.40.0 pom import @@ -50,7 +50,7 @@ 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.39.0') +implementation platform('com.google.cloud:libraries-bom:26.40.0') implementation 'com.google.cloud:google-cloud-datastore' ``` diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index 00999bee3..282d2e56d 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -28,7 +28,7 @@ com.google.cloud libraries-bom - 26.39.0 + 26.40.0 pom import diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 6ac0109ed..65ec852e3 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 26.39.0 + 26.40.0 pom import From 42c643d78562c5cbd6c17c29a0a124be8d05198a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 4 Jun 2024 05:47:36 +0200 Subject: [PATCH 031/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.31.0 (#1471) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 5ff23d7aa..10b46672b 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.30.1 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.31.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 3b76021ce..ca8cab04c 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.30.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.31.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index 8c9d2b103..b1afa67b1 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.30.1" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.31.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index fd4ff704a..f4c9564b3 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.30.1 + 3.31.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index a72b38f98..fbae08ca6 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.30.1 + 3.31.0 From 614e930f2bdccc517d4733e5fb7f3cefad696a20 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 4 Jun 2024 05:58:35 +0200 Subject: [PATCH 032/102] deps: update dependency com.google.guava:guava-testlib to v33.2.1-jre (#1470) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 9467dd692..0605a1359 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -122,7 +122,7 @@ com.google.guava guava-testlib - 33.2.0-jre + 33.2.1-jre test From e3fac2bf9992fcb2e91319df0520094865de2d49 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 4 Jun 2024 05:59:13 +0200 Subject: [PATCH 033/102] deps: update dependency com.google.errorprone:error_prone_core to v2.28.0 (#1469) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fbae08ca6..d5ea36b79 100644 --- a/pom.xml +++ b/pom.xml @@ -143,7 +143,7 @@ github google-cloud-datastore-parent https://googleapis.dev/java/google-api-grpc/latest - 2.27.1 + 2.28.0 From e8e1576f840215143ff4be861cc58f0850dbeb01 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 4 Jun 2024 08:00:01 +0200 Subject: [PATCH 034/102] build(deps): update dependency org.sonatype.plugins:nexus-staging-maven-plugin to v1.7.0 (#1459) --- samples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/pom.xml b/samples/pom.xml index 745443d35..e81bec450 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -47,7 +47,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.13 + 1.7.0 true From e7636fdf3bd582f15ba7511ec12dfba7a289a132 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 00:04:39 +0800 Subject: [PATCH 035/102] chore(main): release 2.20.1 (#1476) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 9 +++++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 37 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37dd53f58..074f849e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [2.20.1](https://github.com/googleapis/java-datastore/compare/v2.20.0...v2.20.1) (2024-06-04) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.31.0 ([#1471](https://github.com/googleapis/java-datastore/issues/1471)) ([42c643d](https://github.com/googleapis/java-datastore/commit/42c643d78562c5cbd6c17c29a0a124be8d05198a)) +* Update dependency com.google.errorprone:error_prone_core to v2.28.0 ([#1469](https://github.com/googleapis/java-datastore/issues/1469)) ([e3fac2b](https://github.com/googleapis/java-datastore/commit/e3fac2bf9992fcb2e91319df0520094865de2d49)) +* Update dependency com.google.guava:guava-testlib to v33.2.1-jre ([#1470](https://github.com/googleapis/java-datastore/issues/1470)) ([614e930](https://github.com/googleapis/java-datastore/commit/614e930f2bdccc517d4733e5fb7f3cefad696a20)) + ## [2.20.0](https://github.com/googleapis/java-datastore/compare/v2.19.3...v2.20.0) (2024-05-27) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index c9805ccc0..53589fe58 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.1-SNAPSHOT + 2.20.1 com.google.cloud google-cloud-datastore-parent - 2.20.1-SNAPSHOT + 2.20.1 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index f4c9564b3..042d87294 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.20.1-SNAPSHOT + 2.20.1 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.20.1-SNAPSHOT + 2.20.1 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.1-SNAPSHOT + 2.20.1 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.1-SNAPSHOT + 0.111.1 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.1-SNAPSHOT + 2.20.1 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 0605a1359..6d9c3ab0a 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.20.1-SNAPSHOT + 2.20.1 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.20.1-SNAPSHOT + 2.20.1 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 34ed50955..f2059b821 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.1-SNAPSHOT + 2.20.1 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.1-SNAPSHOT + 2.20.1 diff --git a/pom.xml b/pom.xml index d5ea36b79..0d81b4a1e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.20.1-SNAPSHOT + 2.20.1 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.1-SNAPSHOT + 2.20.1 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.1-SNAPSHOT + 2.20.1 com.google.cloud google-cloud-datastore - 2.20.1-SNAPSHOT + 2.20.1 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.1-SNAPSHOT + 0.111.1 com.google.cloud.datastore datastore-v1-proto-client - 2.20.1-SNAPSHOT + 2.20.1 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 95dd5fcaa..94759e4ad 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.1-SNAPSHOT + 2.20.1 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.1-SNAPSHOT + 2.20.1 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index de242755b..3d41fdbe2 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.1-SNAPSHOT + 0.111.1 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.20.1-SNAPSHOT + 2.20.1 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 421612d06..d882d8916 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.20.1-SNAPSHOT + 2.20.1 diff --git a/versions.txt b/versions.txt index 6f2c5611b..bd987449e 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.20.0:2.20.1-SNAPSHOT -google-cloud-datastore-bom:2.20.0:2.20.1-SNAPSHOT -proto-google-cloud-datastore-v1:0.111.0:0.111.1-SNAPSHOT -datastore-v1-proto-client:2.20.0:2.20.1-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.20.0:2.20.1-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.20.0:2.20.1-SNAPSHOT +google-cloud-datastore:2.20.1:2.20.1 +google-cloud-datastore-bom:2.20.1:2.20.1 +proto-google-cloud-datastore-v1:0.111.1:0.111.1 +datastore-v1-proto-client:2.20.1:2.20.1 +proto-google-cloud-datastore-admin-v1:2.20.1:2.20.1 +grpc-google-cloud-datastore-admin-v1:2.20.1:2.20.1 From 9d61e9b5348cfa0df27a5c5b05e57b93a8c82396 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Wed, 26 Jun 2024 04:50:20 +0800 Subject: [PATCH 036/102] Doc: Add gRPC datastore gapic upgrade user guide (#1489) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Add read me user guide * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * Updating formatting * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * fixing formatting * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * adjusting formatting * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .readme-partials.yaml | 98 ++++++++++++++++++++++++++++++++++++++- README.md | 104 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 197 insertions(+), 5 deletions(-) diff --git a/.readme-partials.yaml b/.readme-partials.yaml index 9823b5c70..ced21e49f 100644 --- a/.readme-partials.yaml +++ b/.readme-partials.yaml @@ -105,7 +105,103 @@ custom_content: | running on Compute Engine or from your own desktop. To run the example on App Engine, simply move the code from the main method to your application's servlet class and change the print statements to display on your webpage. - + + gRPC Java Datastore Client User Guide + ------- + In this feature launch, the [Java Datastore client](https://github.com/googleapis/java-datastore) now offers gRPC as a transport layer option with experimental support. Using [gRPC connection pooling](https://grpc.io/docs/guides/performance/) enables distributing RPCs over multiple connections which may improve performance. + + #### Download Instructions + Instructions: + 1. Clone the grpc-experimental branch from GitHub: + ```python + git clone -b grpc-experimental https://github.com/googleapis/java-datastore.git + ``` + 2. Run the following commands to build the library: + ```python + # Go to the directory the code was downloaded to + cd java-datastore/ + + # Build the library + mvn clean install -DskipTests=true + ``` + 3. Add the following dependency to your project: + ```xml + + com.google.cloud + google-cloud-datastore + 2.20.0-grpc-experimental-1-SNAPSHOT + + ``` + + #### How to Use + To opt-in to the gRPC transport behavior, simply add the below line of code (`setTransportOptions`) to your Datastore client instantiation. + + Example: + ```java + DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setDatabaseId("my-database") + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .build(); + ``` + Setting the transport options explicitly to `GrpcTransportOptions` will signal the client to use gRPC instead of HTTP when making calls to the server. + + To revert back to the existing stable behavior and transport, simply remove the transport options line or replace it with `HttpTransportOptions`. Please note this will require an application rebuild and restart. + Example: + ```java + // will default to existing HTTP transport behavior + DatastoreOptions datastoreOptions = DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setDatabaseId("my-database") + .build(); + + // will also default to existing HTTP transport behavior + DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setDatabaseId("my-database") + .setTransportOptions(HttpTransportOptions.newBuilder() + .setConnectTimeout(1000) + .build()).build(); + ``` + + Note: client instantiations that already use `setTransportOptions` with `HttpTransportOptions` will continue to have the same behavior. Only transports that are explicitly set to gRPC will change. + + #### Verify Datastore Transport Options Type + To verify which type of TransportOptions you have successfully configured, you can use the below lines of code to compare transport options type: + ```java + // checks if using gRPC transport options + boolean isGRPC = datastore.getOptions().getTransportOptions() instanceof GrpcTransportOptions; + + // checks if using HTTP transport options + boolean isHTTP = datastore.getOptions().getTransportOptions() instanceof HTTPTransportOptions; + ``` + + #### New Features + There are new gRPC specific features available to use in this update. + + ##### Channel Pooling + To customize the number of channels your client uses, you can update the channel provider in the DatastoreOptions. + See [ChannelPoolSettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.grpc.ChannelPoolSettings) and [Performance Best Practices](https://grpc.io/docs/guides/performance/) for more information on channel pools and best practices for performance. + + Example: + ```java + InstantiatingGrpcChannelProvider channelProvider = + DatastoreSettings.defaultGrpcTransportProviderBuilder() + .setChannelPoolSettings( + ChannelPoolSettings.builder() + .setInitialChannelCount(MIN_VAL) + .setMaxChannelCount(MAX_VAL) + .build()) + .build(); + + DatastoreOptions options = DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setChannelProvider(channelProvider) + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .build(); + ``` Testing ------- diff --git a/README.md b/README.md index 4520f2779..7ddb359d5 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.40.0') +implementation platform('com.google.cloud:libraries-bom:26.42.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.20.0' +implementation 'com.google.cloud:google-cloud-datastore:2.20.1' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.20.0" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.20.1" ``` @@ -210,6 +210,102 @@ running on Compute Engine or from your own desktop. To run the example on App En the code from the main method to your application's servlet class and change the print statements to display on your webpage. +gRPC Java Datastore Client User Guide +------- +In this feature launch, the [Java Datastore client](https://github.com/googleapis/java-datastore) now offers gRPC as a transport layer option with experimental support. Using [gRPC connection pooling](https://grpc.io/docs/guides/performance/) enables distributing RPCs over multiple connections which may improve performance. + +#### Download Instructions +Instructions: +1. Clone the grpc-experimental branch from GitHub: +```python +git clone -b grpc-experimental https://github.com/googleapis/java-datastore.git +``` +2. Run the following commands to build the library: +```python +# Go to the directory the code was downloaded to +cd java-datastore/ + +# Build the library +mvn clean install -DskipTests=true +``` +3. Add the following dependency to your project: +```xml + + com.google.cloud + google-cloud-datastore + 2.20.0-grpc-experimental-1-SNAPSHOT + +``` + +#### How to Use +To opt-in to the gRPC transport behavior, simply add the below line of code (`setTransportOptions`) to your Datastore client instantiation. + +Example: +```java +DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setDatabaseId("my-database") + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .build(); +``` +Setting the transport options explicitly to `GrpcTransportOptions` will signal the client to use gRPC instead of HTTP when making calls to the server. + +To revert back to the existing stable behavior and transport, simply remove the transport options line or replace it with `HttpTransportOptions`. Please note this will require an application rebuild and restart. +Example: +```java +// will default to existing HTTP transport behavior +DatastoreOptions datastoreOptions = DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setDatabaseId("my-database") + .build(); + +// will also default to existing HTTP transport behavior +DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setDatabaseId("my-database") + .setTransportOptions(HttpTransportOptions.newBuilder() + .setConnectTimeout(1000) + .build()).build(); +``` + +Note: client instantiations that already use `setTransportOptions` with `HttpTransportOptions` will continue to have the same behavior. Only transports that are explicitly set to gRPC will change. + +#### Verify Datastore Transport Options Type +To verify which type of TransportOptions you have successfully configured, you can use the below lines of code to compare transport options type: +```java +// checks if using gRPC transport options +boolean isGRPC = datastore.getOptions().getTransportOptions() instanceof GrpcTransportOptions; + +// checks if using HTTP transport options +boolean isHTTP = datastore.getOptions().getTransportOptions() instanceof HTTPTransportOptions; +``` + +#### New Features +There are new gRPC specific features available to use in this update. + +##### Channel Pooling +To customize the number of channels your client uses, you can update the channel provider in the DatastoreOptions. +See [ChannelPoolSettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.grpc.ChannelPoolSettings) and [Performance Best Practices](https://grpc.io/docs/guides/performance/) for more information on channel pools and best practices for performance. + +Example: +```java +InstantiatingGrpcChannelProvider channelProvider = + DatastoreSettings.defaultGrpcTransportProviderBuilder() + .setChannelPoolSettings( + ChannelPoolSettings.builder() + .setInitialChannelCount(MIN_VAL) + .setMaxChannelCount(MAX_VAL) + .build()) + .build(); + +DatastoreOptions options = DatastoreOptions.newBuilder() + .setProjectId("my-project") + .setChannelProvider(channelProvider) + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .build(); +``` Testing ------- @@ -384,7 +480,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.20.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.20.1 [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 From 44080bcd9ef256873076a35b95a50d5a1123644c Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 05:18:22 +0000 Subject: [PATCH 037/102] chore(main): release 2.20.2-SNAPSHOT (#1479) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 53589fe58..398f55761 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.1 + 2.20.2-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.20.1 + 2.20.2-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 042d87294..9b4d65cd5 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.20.1 + 2.20.2-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.20.1 + 2.20.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.1 + 2.20.2-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.1 + 0.111.2-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.1 + 2.20.2-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 6d9c3ab0a..52ecab94f 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.20.1 + 2.20.2-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.20.1 + 2.20.2-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index f2059b821..14f7fc606 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.1 + 2.20.2-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.1 + 2.20.2-SNAPSHOT diff --git a/pom.xml b/pom.xml index 0d81b4a1e..19ddfdf15 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.20.1 + 2.20.2-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.1 + 2.20.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.1 + 2.20.2-SNAPSHOT com.google.cloud google-cloud-datastore - 2.20.1 + 2.20.2-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.1 + 0.111.2-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.20.1 + 2.20.2-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 94759e4ad..64647bf0b 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.1 + 2.20.2-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.1 + 2.20.2-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 3d41fdbe2..86d6e1cec 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.1 + 0.111.2-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.20.1 + 2.20.2-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index d882d8916..b4462afa8 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.20.1 + 2.20.2-SNAPSHOT diff --git a/versions.txt b/versions.txt index bd987449e..a3e4e9988 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.20.1:2.20.1 -google-cloud-datastore-bom:2.20.1:2.20.1 -proto-google-cloud-datastore-v1:0.111.1:0.111.1 -datastore-v1-proto-client:2.20.1:2.20.1 -proto-google-cloud-datastore-admin-v1:2.20.1:2.20.1 -grpc-google-cloud-datastore-admin-v1:2.20.1:2.20.1 +google-cloud-datastore:2.20.1:2.20.2-SNAPSHOT +google-cloud-datastore-bom:2.20.1:2.20.2-SNAPSHOT +proto-google-cloud-datastore-v1:0.111.1:0.111.2-SNAPSHOT +datastore-v1-proto-client:2.20.1:2.20.2-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.20.1:2.20.2-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.20.1:2.20.2-SNAPSHOT From d940c937959942d753f9215e7ce940ab6742be46 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 28 Jun 2024 21:48:34 +0200 Subject: [PATCH 038/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 (#1492) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * deps: update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 10b46672b..ec72b08ac 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.31.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.32.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index ca8cab04c..0c813eaf7 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.31.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.32.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index b1afa67b1..ef1c9176c 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.31.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.32.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 9b4d65cd5..38ed9bb53 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.31.0 + 3.32.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 19ddfdf15..4236919ad 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.31.0 + 3.32.0 From 9293051b1d966f0d55be2d8df1b873b99d6d160d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 22:26:19 +0000 Subject: [PATCH 039/102] chore(main): release 2.20.2 (#1503) :robot: I have created a release *beep* *boop* --- ## [2.20.2](https://togithub.com/googleapis/java-datastore/compare/v2.20.1...v2.20.2) (2024-06-28) ### Dependencies * Update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 ([#1492](https://togithub.com/googleapis/java-datastore/issues/1492)) ([d940c93](https://togithub.com/googleapis/java-datastore/commit/d940c937959942d753f9215e7ce940ab6742be46)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 35 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 074f849e8..f9ca1c263 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.20.2](https://github.com/googleapis/java-datastore/compare/v2.20.1...v2.20.2) (2024-06-28) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 ([#1492](https://github.com/googleapis/java-datastore/issues/1492)) ([d940c93](https://github.com/googleapis/java-datastore/commit/d940c937959942d753f9215e7ce940ab6742be46)) + ## [2.20.1](https://github.com/googleapis/java-datastore/compare/v2.20.0...v2.20.1) (2024-06-04) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 398f55761..dd7683c64 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.2-SNAPSHOT + 2.20.2 com.google.cloud google-cloud-datastore-parent - 2.20.2-SNAPSHOT + 2.20.2 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 38ed9bb53..5b01bd928 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.20.2-SNAPSHOT + 2.20.2 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.20.2-SNAPSHOT + 2.20.2 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.2-SNAPSHOT + 2.20.2 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.2-SNAPSHOT + 0.111.2 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.2-SNAPSHOT + 2.20.2 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 52ecab94f..7a70bdf73 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.20.2-SNAPSHOT + 2.20.2 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.20.2-SNAPSHOT + 2.20.2 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 14f7fc606..5c3f255f5 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.2-SNAPSHOT + 2.20.2 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.2-SNAPSHOT + 2.20.2 diff --git a/pom.xml b/pom.xml index 4236919ad..b72ce5ec3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.20.2-SNAPSHOT + 2.20.2 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.2-SNAPSHOT + 2.20.2 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.2-SNAPSHOT + 2.20.2 com.google.cloud google-cloud-datastore - 2.20.2-SNAPSHOT + 2.20.2 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.2-SNAPSHOT + 0.111.2 com.google.cloud.datastore datastore-v1-proto-client - 2.20.2-SNAPSHOT + 2.20.2 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 64647bf0b..b63ebd708 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.2-SNAPSHOT + 2.20.2 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.2-SNAPSHOT + 2.20.2 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 86d6e1cec..8128587a6 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.2-SNAPSHOT + 0.111.2 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.20.2-SNAPSHOT + 2.20.2 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index b4462afa8..1f2e22ec4 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.20.2-SNAPSHOT + 2.20.2 diff --git a/versions.txt b/versions.txt index a3e4e9988..f42550e75 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.20.1:2.20.2-SNAPSHOT -google-cloud-datastore-bom:2.20.1:2.20.2-SNAPSHOT -proto-google-cloud-datastore-v1:0.111.1:0.111.2-SNAPSHOT -datastore-v1-proto-client:2.20.1:2.20.2-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.20.1:2.20.2-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.20.1:2.20.2-SNAPSHOT +google-cloud-datastore:2.20.2:2.20.2 +google-cloud-datastore-bom:2.20.2:2.20.2 +proto-google-cloud-datastore-v1:0.111.2:0.111.2 +datastore-v1-proto-client:2.20.2:2.20.2 +proto-google-cloud-datastore-admin-v1:2.20.2:2.20.2 +grpc-google-cloud-datastore-admin-v1:2.20.2:2.20.2 From d142d9c95d91c8cadaf696efc12d6136814938ff Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Sat, 29 Jun 2024 21:46:56 -0400 Subject: [PATCH 040/102] feat: enable hermetic library generation (#1462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * restore to older version * update googleapis_committish * fix googleapis_committish * infer image tag from config yaml * correct workflow name * update config scripts and yamls * remove old update_googleapis_committish workflow * restore proto folder * Revert "restore proto folder" This reverts commit 59046f83269c16fb775d1069b54ee5de0749b8e5. * feat: New PropertyMask field which allows partial commits, lookups, and query results (#1455) * feat: New PropertyMask field which allows partial commits, lookups, and query results PiperOrigin-RevId: 635449160 Source-Link: https://github.com/googleapis/googleapis/commit/dde0ec1f36cb8cbf9036dd0f1e8e5eda7882db4e Source-Link: https://github.com/googleapis/googleapis-gen/commit/8caa60d9aea82964a19cdf8faf91384911db8bdd Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGNhYTYwZDlhZWE4Mjk2NGExOWNkZjhmYWY5MTM4NDkxMWRiOGJkZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot * sync config structure with that of google-cloud-java * remove quotes from config yamls * fix typo in update_generation_config.yaml * correct * quote codeowners_team in generation config * update generator version * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: gcf-owl-bot[bot] <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Co-authored-by: Owl Bot --- .../{.OwlBot.yaml => .OwlBot-hermetic.yaml} | 0 .../scripts/hermetic_library_generation.sh | 117 +++++++++++++++++ .github/scripts/update_generation_config.sh | 121 ++++++++++++++++++ .../hermetic_library_generation.yaml | 38 ++++++ .../workflows/update_generation_config.yaml | 42 ++++++ generation_config.yaml | 25 ++++ 6 files changed, 343 insertions(+) rename .github/{.OwlBot.yaml => .OwlBot-hermetic.yaml} (100%) create mode 100644 .github/scripts/hermetic_library_generation.sh create mode 100644 .github/scripts/update_generation_config.sh create mode 100644 .github/workflows/hermetic_library_generation.yaml create mode 100644 .github/workflows/update_generation_config.yaml create mode 100644 generation_config.yaml diff --git a/.github/.OwlBot.yaml b/.github/.OwlBot-hermetic.yaml similarity index 100% rename from .github/.OwlBot.yaml rename to .github/.OwlBot-hermetic.yaml diff --git a/.github/scripts/hermetic_library_generation.sh b/.github/scripts/hermetic_library_generation.sh new file mode 100644 index 000000000..6c3f22d8f --- /dev/null +++ b/.github/scripts/hermetic_library_generation.sh @@ -0,0 +1,117 @@ +#!/bin/bash +set -e +# This script should be run at the root of the repository. +# This script is used to, when a pull request changes the generation +# configuration (generation_config.yaml by default): +# 1. Find whether the last commit in this pull request contains changes to +# the generation configuration and exit early if it doesn't have such a change +# since the generation result would be the same. +# 2. Compare generation configurations in the current branch (with which the +# pull request associated) and target branch (into which the pull request is +# merged); +# 3. Generate changed libraries using library_generation image; +# 4. Commit the changes to the pull request, if any. +# 5. Edit the PR body with generated pull request description, if applicable. + +# The following commands need to be installed before running the script: +# 1. git +# 2. gh +# 3. docker + +# The parameters of this script is: +# 1. target_branch, the branch into which the pull request is merged. +# 2. current_branch, the branch with which the pull request is associated. +# 3. [optional] generation_config, the path to the generation configuration, +# the default value is generation_config.yaml in the repository root. +while [[ $# -gt 0 ]]; do +key="$1" +case "${key}" in + --target_branch) + target_branch="$2" + shift + ;; + --current_branch) + current_branch="$2" + shift + ;; + --generation_config) + generation_config="$2" + shift + ;; + *) + echo "Invalid option: [$1]" + exit 1 + ;; +esac +shift +done + +if [ -z "${target_branch}" ]; then + echo "missing required argument --target_branch" + exit 1 +fi + +if [ -z "${current_branch}" ]; then + echo "missing required argument --current_branch" + exit 1 +fi + +if [ -z "${generation_config}" ]; then + generation_config=generation_config.yaml + echo "Using default generation config: ${generation_config}" +fi + +workspace_name="/workspace" +baseline_generation_config="baseline_generation_config.yaml" +message="chore: generate libraries at $(date)" + +git checkout "${target_branch}" +git checkout "${current_branch}" +# if the last commit doesn't contain changes to generation configuration, +# do not generate again as the result will be the same. +change_of_last_commit="$(git diff-tree --no-commit-id --name-only HEAD~1..HEAD -r)" +if [[ ! ("${change_of_last_commit}" == *"${generation_config}"*) ]]; then + echo "The last commit doesn't contain any changes to the generation_config.yaml, skipping the whole generation process." || true + exit 0 +fi +# copy generation configuration from target branch to current branch. +git show "${target_branch}":"${generation_config}" > "${baseline_generation_config}" +config_diff=$(diff "${generation_config}" "${baseline_generation_config}" || true) + +# parse image tag from the generation configuration. +image_tag=$(grep "gapic_generator_version" "${generation_config}" | cut -d ':' -f 2 | xargs) + +# run hermetic code generation docker image. +docker run \ + --rm \ + -u "$(id -u):$(id -g)" \ + -v "$(pwd):${workspace_name}" \ + gcr.io/cloud-devrel-public-resources/java-library-generation:"${image_tag}" \ + --baseline-generation-config-path="${workspace_name}/${baseline_generation_config}" \ + --current-generation-config-path="${workspace_name}/${generation_config}" + + +# commit the change to the pull request. +if [[ $(basename $(pwd)) == "google-cloud-java" ]]; then + git add java-* pom.xml gapic-libraries-bom/pom.xml versions.txt +else + # The image leaves intermediate folders and files it works with. Here we remove them + rm -rdf output googleapis "${baseline_generation_config}" + git add --all -- ':!pr_description.txt' +fi +changed_files=$(git diff --cached --name-only) +if [[ "${changed_files}" == "" ]]; then + echo "There is no generated code change with the generation config change ${config_diff}." + echo "Skip committing to the pull request." + exit 0 +fi + +echo "Configuration diff:" +echo "${config_diff}" +git commit -m "${message}" +git push +# set pr body if pr_description.txt is generated. +if [[ -f "pr_description.txt" ]]; then + pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") + gh pr edit "${pr_num}" --body "$(cat pr_description.txt)" +fi diff --git a/.github/scripts/update_generation_config.sh b/.github/scripts/update_generation_config.sh new file mode 100644 index 000000000..561a31304 --- /dev/null +++ b/.github/scripts/update_generation_config.sh @@ -0,0 +1,121 @@ +#!/bin/bash +set -e +# This script should be run at the root of the repository. +# This script is used to update googleapis_commitish, gapic_generator_version, +# and libraries_bom_version in generation configuration at the time of running +# and create a pull request. + +# The following commands need to be installed before running the script: +# 1. git +# 2. gh +# 3. jq + +# Utility functions +# Get the latest released version of a Maven artifact. +function get_latest_released_version() { + local group_id=$1 + local artifact_id=$2 + latest=$(curl -s "https://search.maven.org/solrsearch/select?q=g:${group_id}+AND+a:${artifact_id}&core=gav&rows=500&wt=json" | jq -r '.response.docs[] | select(.v | test("^[0-9]+(\\.[0-9]+)*$")) | .v' | sort -V | tail -n 1) + echo "${latest}" +} + +# Update a key to a new value in the generation config. +function update_config() { + local key_word=$1 + local new_value=$2 + local file=$3 + echo "Update ${key_word} to ${new_value} in ${file}" + sed -i -e "s/^${key_word}.*$/${key_word}: ${new_value}/" "${file}" +} + +# The parameters of this script is: +# 1. base_branch, the base branch of the result pull request. +# 2. repo, organization/repo-name, e.g., googleapis/google-cloud-java +# 3. [optional] generation_config, the path to the generation configuration, +# the default value is generation_config.yaml in the repository root. +while [[ $# -gt 0 ]]; do +key="$1" +case "${key}" in + --base_branch) + base_branch="$2" + shift + ;; + --repo) + repo="$2" + shift + ;; + --generation_config) + generation_config="$2" + shift + ;; + *) + echo "Invalid option: [$1]" + exit 1 + ;; +esac +shift +done + +if [ -z "${base_branch}" ]; then + echo "missing required argument --base_branch" + exit 1 +fi + +if [ -z "${repo}" ]; then + echo "missing required argument --repo" + exit 1 +fi + +if [ -z "${generation_config}" ]; then + generation_config="generation_config.yaml" + echo "Use default generation config: ${generation_config}" +fi + +current_branch="generate-libraries-${base_branch}" +title="chore: Update generation configuration at $(date)" + +# try to find a open pull request associated with the branch +pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") +# create a branch if there's no open pull request associated with the +# branch; otherwise checkout the pull request. +if [ -z "${pr_num}" ]; then + git checkout -b "${current_branch}" +else + gh pr checkout "${pr_num}" +fi + +mkdir tmp-googleapis +# use partial clone because only commit history is needed. +git clone --filter=blob:none https://github.com/googleapis/googleapis.git tmp-googleapis +pushd tmp-googleapis +git pull +latest_commit=$(git rev-parse HEAD) +popd +rm -rf tmp-googleapis +update_config "googleapis_commitish" "${latest_commit}" "${generation_config}" + +# update gapic-generator-java version to the latest +latest_version=$(get_latest_released_version "com.google.api" "gapic-generator-java") +update_config "gapic_generator_version" "${latest_version}" "${generation_config}" + +# update libraries-bom version to the latest +latest_version=$(get_latest_released_version "com.google.cloud" "libraries-bom") +update_config "libraries_bom_version" "${latest_version}" "${generation_config}" + +git add "${generation_config}" +changed_files=$(git diff --cached --name-only) +if [[ "${changed_files}" == "" ]]; then + echo "The latest generation config is not changed." + echo "Skip committing to the pull request." + exit 0 +fi +git commit -m "${title}" +if [ -z "${pr_num}" ]; then + git remote add remote_repo https://cloud-java-bot:"${GH_TOKEN}@github.com/${repo}.git" + git fetch -q --unshallow remote_repo + git push -f remote_repo "${current_branch}" + gh pr create --title "${title}" --head "${current_branch}" --body "${title}" --base "${base_branch}" +else + git push + gh pr edit "${pr_num}" --title "${title}" --body "${title}" +fi diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml new file mode 100644 index 000000000..0c7a82a3c --- /dev/null +++ b/.github/workflows/hermetic_library_generation.yaml @@ -0,0 +1,38 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# GitHub action job to test core java library features on +# downstream client libraries before they are released. +name: Hermetic library generation upon generation config change through pull requests +on: + pull_request: + +jobs: + library_generation: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + - name: Generate changed libraries + shell: bash + run: | + set -x + [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" + [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" + bash .github/scriptes/hermetic_library_generation.sh \ + --target_branch ${{ github.base_ref }} \ + --current_branch ${{ github.head_ref }} + env: + GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} diff --git a/.github/workflows/update_generation_config.yaml b/.github/workflows/update_generation_config.yaml new file mode 100644 index 000000000..3cf773992 --- /dev/null +++ b/.github/workflows/update_generation_config.yaml @@ -0,0 +1,42 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# GitHub action job to test core java library features on +# downstream client libraries before they are released. +name: Update generation configuration +on: + schedule: + - cron: '0 2 * * *' + workflow_dispatch: + +jobs: + update-generation-config: + runs-on: ubuntu-22.04 + env: + # the branch into which the pull request is merged + base_branch: main + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + - name: Update params in generation config to latest + shell: bash + run: | + set -x + [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" + [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" + bash .github/scripts/update_generation_config.sh \ + --base_branch "${base_branch}"\ + --repo ${{ github.repository }} + env: + GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} diff --git a/generation_config.yaml b/generation_config.yaml new file mode 100644 index 000000000..ae6c9c9be --- /dev/null +++ b/generation_config.yaml @@ -0,0 +1,25 @@ +gapic_generator_version: 2.42.0 +googleapis_commitish: bcaed39fd1a805a6411a3992ea32dc1ba0ba7ec3 +libraries_bom_version: 26.38.0 +libraries: + - api_shortname: datastore + name_pretty: Cloud Datastore + product_documentation: https://cloud.google.com/datastore + client_documentation: https://cloud.google.com/java/docs/reference/google-cloud-datastore/latest/history + issue_tracker: https://issuetracker.google.com/savedsearches/559768 + release_level: stable + language: java + repo: googleapis/java-datastore + repo_short: java-datastore + distribution_name: com.google.cloud:google-cloud-datastore + codeowner_team: '@googleapis/cloud-native-db-dpes @googleapis/api-datastore-sdk @googleapis/api-firestore-partners' + api_id: datastore.googleapis.com + library_type: GAPIC_COMBO + api_description: is a fully managed, schemaless database for\nstoring non-relational data. Cloud Datastore automatically scales with\nyour users and supports ACID transactions, high availability of reads and\nwrites, strong consistency for reads and ancestor queries, and eventual\nconsistency for all other queries. + excluded_dependencies: grpc-google-cloud-datastore-v1 + extra_versioned_modules: datastore-v1-proto-client + excluded_poms: grpc-google-cloud-datastore-v1 + recommended_package: com.google.cloud.datastore + GAPICs: + - proto_path: google/datastore/v1 + - proto_path: google/datastore/admin/v1 From b55ec328ea1d8ca415d711bdffc2ce7246cc26d6 Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 02:38:42 +0800 Subject: [PATCH 041/102] ci: [java] automatic kokoro label in and /gcbrun comment (#1965) (#1481) Source-Link: https://github.com/googleapis/synthtool/commit/bd2bae89f70bad380da47fab9ec25985dfb87d67 Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-java:latest@sha256:72f0d373307d128b2cb720c5cb4d90b31f0e86529dd138c632710ae0c69efae3 Co-authored-by: Owl Bot --- .github/.OwlBot.lock.yaml | 4 ++-- .github/trusted-contribution.yml | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index f817c5f44..359fe71c1 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:31aa2ef27b071c2e7844b0eb1d5a24254daff06615b1b138b994dd6345c0b0ea -# created: 2024-05-17T15:15:57.6714113Z + digest: sha256:72f0d373307d128b2cb720c5cb4d90b31f0e86529dd138c632710ae0c69efae3 +# created: 2024-06-05T18:32:21.724930324Z diff --git a/.github/trusted-contribution.yml b/.github/trusted-contribution.yml index a0ba1f7d9..88d3ac9bf 100644 --- a/.github/trusted-contribution.yml +++ b/.github/trusted-contribution.yml @@ -1,3 +1,9 @@ trustedContributors: - renovate-bot - gcf-owl-bot[bot] + +annotations: +- type: comment + text: "/gcbrun" +- type: label + text: "kokoro:force-run" From 43b00f3fa85b470f615c3d1cc2e0b85821dd4fbb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 1 Jul 2024 21:26:50 +0200 Subject: [PATCH 042/102] test(deps): update dependency com.google.truth:truth to v1.4.3 (#1501) --- datastore-v1-proto-client/pom.xml | 2 +- google-cloud-datastore/pom.xml | 2 +- samples/install-without-bom/pom.xml | 2 +- samples/native-image-sample/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index dd7683c64..019ad21c3 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -98,7 +98,7 @@ com.google.truth truth - 1.4.2 + 1.4.3 test diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 7a70bdf73..e87d85d29 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -157,7 +157,7 @@ com.google.truth truth - 1.4.2 + 1.4.3 test diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 4b268da0e..715d7154c 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -42,7 +42,7 @@ com.google.truth truth - 1.4.2 + 1.4.3 test diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index 282d2e56d..25f7e959a 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -50,7 +50,7 @@ com.google.truth truth - 1.4.2 + 1.4.3 test diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 1f2e22ec4..b1777167f 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -41,7 +41,7 @@ com.google.truth truth - 1.4.2 + 1.4.3 test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 65ec852e3..5d57d6d14 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -53,7 +53,7 @@ com.google.truth truth - 1.4.2 + 1.4.3 test From 515331e2ec6338f1bf8f3a59679957ce97b4fc11 Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Tue, 2 Jul 2024 12:07:46 -0400 Subject: [PATCH 043/102] chore: correct hermetic library generation script path (#1506) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: correct hermetic library generation script path * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .github/workflows/hermetic_library_generation.yaml | 2 +- README.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 0c7a82a3c..3ea9ae43e 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -31,7 +31,7 @@ jobs: set -x [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash .github/scriptes/hermetic_library_generation.sh \ + bash .github/scripts/hermetic_library_generation.sh \ --target_branch ${{ github.base_ref }} \ --current_branch ${{ github.head_ref }} env: diff --git a/README.md b/README.md index 7ddb359d5..175ca2b8f 100644 --- a/README.md +++ b/README.md @@ -57,13 +57,13 @@ 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.20.1' +implementation 'com.google.cloud:google-cloud-datastore:2.20.2' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.20.1" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.20.2" ``` @@ -480,7 +480,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.20.1 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.20.2 [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 From c146cab1d0f328f83dce739b3dd33f75b9d4f36a Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Tue, 2 Jul 2024 18:54:24 -0400 Subject: [PATCH 044/102] chore: skip hermetic generation on fork PRs (#1510) --- .github/workflows/hermetic_library_generation.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 3ea9ae43e..7146cc3dc 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -19,6 +19,8 @@ on: jobs: library_generation: + # skip pull requests coming from a forked repository + if: github.event.pull_request.head.repo.full_name == github.repository runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 250f86b28ac5abcb6ce885a2128ad4e19e962b4f Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Wed, 3 Jul 2024 15:26:15 -0400 Subject: [PATCH 045/102] chore: make the owlbot postprocessor check non-required (#1512) * chore: make the owlbot postprocessor check non-required * remove required check in other branches --- .github/sync-repo-settings.yaml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 4bdaef4e9..046f23200 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -15,7 +15,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc @@ -62,7 +61,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - pattern: 2.2.x isAdminEnforced: true requiredApprovingReviewCount: 1 @@ -77,7 +75,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - pattern: 2.12.x isAdminEnforced: true requiredApprovingReviewCount: 1 @@ -92,7 +89,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - pattern: multi-db @@ -109,7 +105,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - pattern: V3-experimental @@ -125,7 +120,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc @@ -142,7 +136,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - pattern: 2.17.x @@ -158,7 +151,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc @@ -175,7 +167,6 @@ branchProtectionRules: - units (11) - 'Kokoro - Test: Integration' - cla/google - - OwlBot Post Processor - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc From d9dff923ef0d5123d7aa1395e8fb3334bbe1aa41 Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Wed, 3 Jul 2024 15:26:37 -0400 Subject: [PATCH 046/102] chore: disable the Owl Bot post-processor (#1511) via deleting .OwlBot.lock.yaml (context) --- .github/.OwlBot.lock.yaml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/.OwlBot.lock.yaml diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml deleted file mode 100644 index 359fe71c1..000000000 --- a/.github/.OwlBot.lock.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -docker: - image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:72f0d373307d128b2cb720c5cb4d90b31f0e86529dd138c632710ae0c69efae3 -# created: 2024-06-05T18:32:21.724930324Z From b244b8f5e5b550f48c6bd3c94571fe2f494b3a8a Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 9 Jul 2024 18:26:44 +0200 Subject: [PATCH 047/102] chore(deps): update dependency com.google.cloud:libraries-bom to v26.41.0 (#1485) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency com.google.cloud:libraries-bom to v26.41.0 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot Co-authored-by: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> --- README.md | 2 +- samples/native-image-sample/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 175ca2b8f..9089655ec 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.40.0 + 26.41.0 pom import diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index 25f7e959a..0f3c1919c 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -28,7 +28,7 @@ com.google.cloud libraries-bom - 26.40.0 + 26.41.0 pom import diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 5d57d6d14..f04cdc885 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 26.40.0 + 26.41.0 pom import From 6a6e925f2c24f88d30a662cb476210757af0cf69 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:58:22 +0000 Subject: [PATCH 048/102] chore(main): release 2.20.3-SNAPSHOT (#1504) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 019ad21c3..70b9590b0 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.2 + 2.20.3-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.20.2 + 2.20.3-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 5b01bd928..281c581c9 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.20.2 + 2.20.3-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.20.2 + 2.20.3-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.2 + 2.20.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.2 + 0.111.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.2 + 2.20.3-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index e87d85d29..b06df4c0f 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.20.2 + 2.20.3-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.20.2 + 2.20.3-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 5c3f255f5..69da06680 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.2 + 2.20.3-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.2 + 2.20.3-SNAPSHOT diff --git a/pom.xml b/pom.xml index b72ce5ec3..407041f2b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.20.2 + 2.20.3-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.2 + 2.20.3-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.2 + 2.20.3-SNAPSHOT com.google.cloud google-cloud-datastore - 2.20.2 + 2.20.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.2 + 0.111.3-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.20.2 + 2.20.3-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index b63ebd708..f53996a6d 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.2 + 2.20.3-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.2 + 2.20.3-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 8128587a6..85f530c75 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.2 + 0.111.3-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.20.2 + 2.20.3-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index b1777167f..93710c03b 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.20.2 + 2.20.3-SNAPSHOT diff --git a/versions.txt b/versions.txt index f42550e75..5d2ffbced 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.20.2:2.20.2 -google-cloud-datastore-bom:2.20.2:2.20.2 -proto-google-cloud-datastore-v1:0.111.2:0.111.2 -datastore-v1-proto-client:2.20.2:2.20.2 -proto-google-cloud-datastore-admin-v1:2.20.2:2.20.2 -grpc-google-cloud-datastore-admin-v1:2.20.2:2.20.2 +google-cloud-datastore:2.20.2:2.20.3-SNAPSHOT +google-cloud-datastore-bom:2.20.2:2.20.3-SNAPSHOT +proto-google-cloud-datastore-v1:0.111.2:0.111.3-SNAPSHOT +datastore-v1-proto-client:2.20.2:2.20.3-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.20.2:2.20.3-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.20.2:2.20.3-SNAPSHOT From d4780095a6690dc01e7b50768a386bc26c9876b6 Mon Sep 17 00:00:00 2001 From: Min Zhu Date: Wed, 31 Jul 2024 16:55:44 -0400 Subject: [PATCH 049/102] chore: setup 2.19.x lts branch (#1535) --- .github/release-please.yml | 4 ++++ .github/sync-repo-settings.yaml | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/.github/release-please.yml b/.github/release-please.yml index 53b119627..cbb5be49c 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -30,3 +30,7 @@ branches: handleGHRelease: true releaseType: java-backport branch: 2.17.x + - bumpMinorPreMajor: true + handleGHRelease: true + releaseType: java-backport + branch: 2.19.x diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 046f23200..fce568dc2 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -170,6 +170,22 @@ branchProtectionRules: - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc + - pattern: 2.19.x + isAdminEnforced: true + requiredApprovingReviewCount: 1 + requiresCodeOwnerReviews: true + requiresStrictStatusChecks: false + requiredStatusCheckContexts: + - dependencies (17) + - lint + - clirr + - units (8) + - units (11) + - 'Kokoro - Test: Integration' + - cla/google + - 'Kokoro - Test: Java GraalVM Native Image' + - 'Kokoro - Test: Java 17 GraalVM Native Image' + - javadoc permissionRules: - team: yoshi-admins permission: admin From 21d8cad8b198fafad904aaa0b5d07296bbf9350b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 21:24:20 +0000 Subject: [PATCH 050/102] chore(main): release 2.21.0 (#1517) :robot: I have created a release *beep* *boop* --- ## [2.21.0](https://togithub.com/googleapis/java-datastore/compare/v2.20.2...v2.21.0) (2024-07-31) ### Features * Enable hermetic library generation ([#1462](https://togithub.com/googleapis/java-datastore/issues/1462)) ([d142d9c](https://togithub.com/googleapis/java-datastore/commit/d142d9c95d91c8cadaf696efc12d6136814938ff)) --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 35 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9ca1c263..52e107131 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.21.0](https://github.com/googleapis/java-datastore/compare/v2.20.2...v2.21.0) (2024-07-31) + + +### Features + +* Enable hermetic library generation ([#1462](https://github.com/googleapis/java-datastore/issues/1462)) ([d142d9c](https://github.com/googleapis/java-datastore/commit/d142d9c95d91c8cadaf696efc12d6136814938ff)) + ## [2.20.2](https://github.com/googleapis/java-datastore/compare/v2.20.1...v2.20.2) (2024-06-28) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 70b9590b0..59a18afe9 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.3-SNAPSHOT + 2.21.0 com.google.cloud google-cloud-datastore-parent - 2.20.3-SNAPSHOT + 2.21.0 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 281c581c9..87cc26a83 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.20.3-SNAPSHOT + 2.21.0 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.20.3-SNAPSHOT + 2.21.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.3-SNAPSHOT + 2.21.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.3-SNAPSHOT + 0.112.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.3-SNAPSHOT + 2.21.0 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index b06df4c0f..17c7d4ec7 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.20.3-SNAPSHOT + 2.21.0 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.20.3-SNAPSHOT + 2.21.0 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 69da06680..c92a2e085 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.3-SNAPSHOT + 2.21.0 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.3-SNAPSHOT + 2.21.0 diff --git a/pom.xml b/pom.xml index 407041f2b..92e9e6b9c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.20.3-SNAPSHOT + 2.21.0 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.3-SNAPSHOT + 2.21.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.20.3-SNAPSHOT + 2.21.0 com.google.cloud google-cloud-datastore - 2.20.3-SNAPSHOT + 2.21.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.3-SNAPSHOT + 0.112.0 com.google.cloud.datastore datastore-v1-proto-client - 2.20.3-SNAPSHOT + 2.21.0 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index f53996a6d..712d421f2 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.20.3-SNAPSHOT + 2.21.0 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.3-SNAPSHOT + 2.21.0 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 85f530c75..6a4c4c026 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.111.3-SNAPSHOT + 0.112.0 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.20.3-SNAPSHOT + 2.21.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 93710c03b..18c99a152 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.20.3-SNAPSHOT + 2.21.0 diff --git a/versions.txt b/versions.txt index 5d2ffbced..5dca750af 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.20.2:2.20.3-SNAPSHOT -google-cloud-datastore-bom:2.20.2:2.20.3-SNAPSHOT -proto-google-cloud-datastore-v1:0.111.2:0.111.3-SNAPSHOT -datastore-v1-proto-client:2.20.2:2.20.3-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.20.2:2.20.3-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.20.2:2.20.3-SNAPSHOT +google-cloud-datastore:2.21.0:2.21.0 +google-cloud-datastore-bom:2.21.0:2.21.0 +proto-google-cloud-datastore-v1:0.112.0:0.112.0 +datastore-v1-proto-client:2.21.0:2.21.0 +proto-google-cloud-datastore-admin-v1:2.21.0:2.21.0 +grpc-google-cloud-datastore-admin-v1:2.21.0:2.21.0 From 9e52395f7ee71315331790284d35e7aad2f387ed Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 6 Aug 2024 16:35:45 +0200 Subject: [PATCH 051/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.33.0 (#1531) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index ec72b08ac..ffc858543 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.32.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.33.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 0c813eaf7..a452e7c8c 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.32.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.33.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index ef1c9176c..ad15d4f7f 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.32.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.33.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 87cc26a83..f1be69a62 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.32.0 + 3.33.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 92e9e6b9c..5f7573e98 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.32.0 + 3.33.0 From 2e3926510913d4c429666d96b4333952db0fd350 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 11:02:31 -0700 Subject: [PATCH 052/102] chore(main): release 2.21.1-SNAPSHOT (#1538) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 59a18afe9..58425b4b1 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.0 + 2.21.1-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.21.0 + 2.21.1-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index f1be69a62..fa6abfeda 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.0 + 2.21.1-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.0 + 2.21.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.0 + 2.21.1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.0 + 0.112.1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.0 + 2.21.1-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 17c7d4ec7..6e8fc6b8f 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.0 + 2.21.1-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.0 + 2.21.1-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index c92a2e085..c74367bf9 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.0 + 2.21.1-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.0 + 2.21.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index 5f7573e98..85eeafc8e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.0 + 2.21.1-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.0 + 2.21.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.0 + 2.21.1-SNAPSHOT com.google.cloud google-cloud-datastore - 2.21.0 + 2.21.1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.0 + 0.112.1-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.21.0 + 2.21.1-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 712d421f2..533ad8ad3 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.0 + 2.21.1-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.0 + 2.21.1-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 6a4c4c026..b8bb530fa 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.0 + 0.112.1-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.0 + 2.21.1-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 18c99a152..b182ec319 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.0 + 2.21.1-SNAPSHOT diff --git a/versions.txt b/versions.txt index 5dca750af..5141114d4 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.0:2.21.0 -google-cloud-datastore-bom:2.21.0:2.21.0 -proto-google-cloud-datastore-v1:0.112.0:0.112.0 -datastore-v1-proto-client:2.21.0:2.21.0 -proto-google-cloud-datastore-admin-v1:2.21.0:2.21.0 -grpc-google-cloud-datastore-admin-v1:2.21.0:2.21.0 +google-cloud-datastore:2.21.0:2.21.1-SNAPSHOT +google-cloud-datastore-bom:2.21.0:2.21.1-SNAPSHOT +proto-google-cloud-datastore-v1:0.112.0:0.112.1-SNAPSHOT +datastore-v1-proto-client:2.21.0:2.21.1-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.21.0:2.21.1-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.21.0:2.21.1-SNAPSHOT From 7bc796e78a4aff21d9a02fe5a315a3383a0c1a71 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 6 Aug 2024 20:15:59 +0200 Subject: [PATCH 053/102] chore(deps): update dependency com.google.cloud:libraries-bom to v26.43.0 (#1515) --- samples/native-image-sample/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index 0f3c1919c..5a0ee2386 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -28,7 +28,7 @@ com.google.cloud libraries-bom - 26.41.0 + 26.43.0 pom import diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index f04cdc885..7e4de0be6 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 26.41.0 + 26.43.0 pom import From a9e90f321da9d4061d3c87a2f5b7f30662b401ca Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 13:45:05 -0700 Subject: [PATCH 054/102] chore(main): release 2.21.1 (#1540) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 35 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52e107131..f6234e13b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.21.1](https://github.com/googleapis/java-datastore/compare/v2.21.0...v2.21.1) (2024-08-06) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.33.0 ([#1531](https://github.com/googleapis/java-datastore/issues/1531)) ([9e52395](https://github.com/googleapis/java-datastore/commit/9e52395f7ee71315331790284d35e7aad2f387ed)) + ## [2.21.0](https://github.com/googleapis/java-datastore/compare/v2.20.2...v2.21.0) (2024-07-31) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 58425b4b1..eb7a28713 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.1-SNAPSHOT + 2.21.1 com.google.cloud google-cloud-datastore-parent - 2.21.1-SNAPSHOT + 2.21.1 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index fa6abfeda..c683a9474 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.1-SNAPSHOT + 2.21.1 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.1-SNAPSHOT + 2.21.1 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.1-SNAPSHOT + 2.21.1 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.1-SNAPSHOT + 0.112.1 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.1-SNAPSHOT + 2.21.1 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 6e8fc6b8f..29bb63d3d 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.1-SNAPSHOT + 2.21.1 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.1-SNAPSHOT + 2.21.1 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index c74367bf9..373333ce3 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.1-SNAPSHOT + 2.21.1 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.1-SNAPSHOT + 2.21.1 diff --git a/pom.xml b/pom.xml index 85eeafc8e..72d70b386 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.1-SNAPSHOT + 2.21.1 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.1-SNAPSHOT + 2.21.1 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.1-SNAPSHOT + 2.21.1 com.google.cloud google-cloud-datastore - 2.21.1-SNAPSHOT + 2.21.1 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.1-SNAPSHOT + 0.112.1 com.google.cloud.datastore datastore-v1-proto-client - 2.21.1-SNAPSHOT + 2.21.1 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 533ad8ad3..1c660d581 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.1-SNAPSHOT + 2.21.1 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.1-SNAPSHOT + 2.21.1 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index b8bb530fa..4740a89c4 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.1-SNAPSHOT + 0.112.1 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.1-SNAPSHOT + 2.21.1 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index b182ec319..3d3b267eb 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.1-SNAPSHOT + 2.21.1 diff --git a/versions.txt b/versions.txt index 5141114d4..478c0b62e 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.0:2.21.1-SNAPSHOT -google-cloud-datastore-bom:2.21.0:2.21.1-SNAPSHOT -proto-google-cloud-datastore-v1:0.112.0:0.112.1-SNAPSHOT -datastore-v1-proto-client:2.21.0:2.21.1-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.21.0:2.21.1-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.21.0:2.21.1-SNAPSHOT +google-cloud-datastore:2.21.1:2.21.1 +google-cloud-datastore-bom:2.21.1:2.21.1 +proto-google-cloud-datastore-v1:0.112.1:0.112.1 +datastore-v1-proto-client:2.21.1:2.21.1 +proto-google-cloud-datastore-admin-v1:2.21.1:2.21.1 +grpc-google-cloud-datastore-admin-v1:2.21.1:2.21.1 From af6831d51285fe851f0999c613ad4a52aadfdb1d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 20 Aug 2024 17:28:27 +0000 Subject: [PATCH 055/102] chore(main): release 2.21.2-SNAPSHOT (#1541) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index eb7a28713..38ede6074 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.1 + 2.21.2-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.21.1 + 2.21.2-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index c683a9474..234946cf0 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.1 + 2.21.2-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.1 + 2.21.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.1 + 2.21.2-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.1 + 0.112.2-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.1 + 2.21.2-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 29bb63d3d..b9e2da34a 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.1 + 2.21.2-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.1 + 2.21.2-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 373333ce3..793e30422 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.1 + 2.21.2-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.1 + 2.21.2-SNAPSHOT diff --git a/pom.xml b/pom.xml index 72d70b386..4fcdfc0e2 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.1 + 2.21.2-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.1 + 2.21.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.1 + 2.21.2-SNAPSHOT com.google.cloud google-cloud-datastore - 2.21.1 + 2.21.2-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.1 + 0.112.2-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.21.1 + 2.21.2-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 1c660d581..4032680c9 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.1 + 2.21.2-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.1 + 2.21.2-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 4740a89c4..0e9cb5736 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.1 + 0.112.2-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.1 + 2.21.2-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 3d3b267eb..aea2bd2f3 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.1 + 2.21.2-SNAPSHOT diff --git a/versions.txt b/versions.txt index 478c0b62e..8b0985906 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.1:2.21.1 -google-cloud-datastore-bom:2.21.1:2.21.1 -proto-google-cloud-datastore-v1:0.112.1:0.112.1 -datastore-v1-proto-client:2.21.1:2.21.1 -proto-google-cloud-datastore-admin-v1:2.21.1:2.21.1 -grpc-google-cloud-datastore-admin-v1:2.21.1:2.21.1 +google-cloud-datastore:2.21.1:2.21.2-SNAPSHOT +google-cloud-datastore-bom:2.21.1:2.21.2-SNAPSHOT +proto-google-cloud-datastore-v1:0.112.1:0.112.2-SNAPSHOT +datastore-v1-proto-client:2.21.1:2.21.2-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.21.1:2.21.2-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.21.1:2.21.2-SNAPSHOT From 642e12f0929a3def103cb5e1339a8224bb434658 Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Tue, 20 Aug 2024 13:59:45 -0400 Subject: [PATCH 056/102] chore: secure hermetic_library_generation workflow (#1552) * chore: secure hermetic_library_generation workflow Thanks to @diogoteles08 for the inspection on our repos. This PR inlines environment variables to avoid overriding script injections. * fix wording --- .github/workflows/hermetic_library_generation.yaml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 7146cc3dc..ab23b9fec 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -17,10 +17,14 @@ name: Hermetic library generation upon generation config change through pull req on: pull_request: +env: + HEAD_REF: ${{ github.head_ref }} + REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }} + jobs: library_generation: # skip pull requests coming from a forked repository - if: github.event.pull_request.head.repo.full_name == github.repository + if: github.env.REPO_FULL_NAME == github.repository runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -30,11 +34,11 @@ jobs: - name: Generate changed libraries shell: bash run: | - set -x + set -ex [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" bash .github/scripts/hermetic_library_generation.sh \ --target_branch ${{ github.base_ref }} \ - --current_branch ${{ github.head_ref }} + --current_branch $HEAD_REF env: GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} From 8c5f5954d88732ab929b4477a3f15b0052adc2ff Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 22 Aug 2024 19:30:09 +0200 Subject: [PATCH 057/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.34.0 (#1547) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index ffc858543..84c86037f 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.33.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.34.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index a452e7c8c..639683e72 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.33.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.34.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index ad15d4f7f..b2121a633 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.33.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.34.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 234946cf0..435b6e894 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.33.0 + 3.34.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 4fcdfc0e2..85ab3c70b 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.33.0 + 3.34.0 From e368dc5f87020212f6ef4bde82fa958ac1ccbcfe Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 23 Aug 2024 09:14:44 -0700 Subject: [PATCH 058/102] chore(main): release 2.21.2 (#1553) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 10 files changed, 35 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6234e13b..e953fa33f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.21.2](https://github.com/googleapis/java-datastore/compare/v2.21.1...v2.21.2) (2024-08-22) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.34.0 ([#1547](https://github.com/googleapis/java-datastore/issues/1547)) ([8c5f595](https://github.com/googleapis/java-datastore/commit/8c5f5954d88732ab929b4477a3f15b0052adc2ff)) + ## [2.21.1](https://github.com/googleapis/java-datastore/compare/v2.21.0...v2.21.1) (2024-08-06) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 38ede6074..ae1f83917 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.2-SNAPSHOT + 2.21.2 com.google.cloud google-cloud-datastore-parent - 2.21.2-SNAPSHOT + 2.21.2 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 435b6e894..63beb11f1 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.2-SNAPSHOT + 2.21.2 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.2-SNAPSHOT + 2.21.2 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.2-SNAPSHOT + 2.21.2 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.2-SNAPSHOT + 0.112.2 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.2-SNAPSHOT + 2.21.2 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index b9e2da34a..e928bea4e 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.2-SNAPSHOT + 2.21.2 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.2-SNAPSHOT + 2.21.2 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 793e30422..6527e96f3 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.2-SNAPSHOT + 2.21.2 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.2-SNAPSHOT + 2.21.2 diff --git a/pom.xml b/pom.xml index 85ab3c70b..fda01b132 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.2-SNAPSHOT + 2.21.2 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.2-SNAPSHOT + 2.21.2 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.2-SNAPSHOT + 2.21.2 com.google.cloud google-cloud-datastore - 2.21.2-SNAPSHOT + 2.21.2 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.2-SNAPSHOT + 0.112.2 com.google.cloud.datastore datastore-v1-proto-client - 2.21.2-SNAPSHOT + 2.21.2 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 4032680c9..a8c91f4dd 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.2-SNAPSHOT + 2.21.2 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.2-SNAPSHOT + 2.21.2 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 0e9cb5736..bf896574d 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.2-SNAPSHOT + 0.112.2 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.2-SNAPSHOT + 2.21.2 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index aea2bd2f3..5f2e900a8 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.2-SNAPSHOT + 2.21.2 diff --git a/versions.txt b/versions.txt index 8b0985906..3cee21923 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.1:2.21.2-SNAPSHOT -google-cloud-datastore-bom:2.21.1:2.21.2-SNAPSHOT -proto-google-cloud-datastore-v1:0.112.1:0.112.2-SNAPSHOT -datastore-v1-proto-client:2.21.1:2.21.2-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.21.1:2.21.2-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.21.1:2.21.2-SNAPSHOT +google-cloud-datastore:2.21.2:2.21.2 +google-cloud-datastore-bom:2.21.2:2.21.2 +proto-google-cloud-datastore-v1:0.112.2:0.112.2 +datastore-v1-proto-client:2.21.2:2.21.2 +proto-google-cloud-datastore-admin-v1:2.21.2:2.21.2 +grpc-google-cloud-datastore-admin-v1:2.21.2:2.21.2 From f209ad4302cdaa95f5e98824457878a09d6f71f9 Mon Sep 17 00:00:00 2001 From: Mridula <66699525+mpeddada1@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:16:23 -0400 Subject: [PATCH 059/102] chore: remove datastore native image sample in favor of sample hosted in google-cloud-java (#1519) --- samples/native-image-sample/README.md | 96 ------------ samples/native-image-sample/pom.xml | 141 ------------------ .../datastore/NativeImageDatastoreSample.java | 131 ---------------- .../ITNativeImageDatastoreSample.java | 75 ---------- samples/pom.xml | 1 - 5 files changed, 444 deletions(-) delete mode 100644 samples/native-image-sample/README.md delete mode 100644 samples/native-image-sample/src/main/java/com/example/datastore/NativeImageDatastoreSample.java delete mode 100644 samples/native-image-sample/src/test/java/com/example/datastore/ITNativeImageDatastoreSample.java diff --git a/samples/native-image-sample/README.md b/samples/native-image-sample/README.md deleted file mode 100644 index 5f2cfbd27..000000000 --- a/samples/native-image-sample/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Datastore Sample Application with Native Image - -This application uses the [Google Cloud Datastore client library](https://cloud.google.com/datastore/docs/reference/libraries) and is compatible with Native Image compilation. - -This sample runs through some basic operations of creating/deleting entities, running queries, and running transaction code. - -## Setup Instructions - -You will need to follow these prerequisite steps in order to run the samples: - -1. If you have not already, [create a Google Cloud Platform Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects#creating_a_project). - -2. Install the [Google Cloud SDK](https://cloud.google.com/sdk/) which will allow you to run the sample with your project's credentials. - - Once installed, log in with Application Default Credentials using the following command: - - ``` - gcloud auth application-default login - ``` - - **Note:** Authenticating with Application Default Credentials is convenient to use during development, but we recommend [alternate methods of authentication](https://cloud.google.com/docs/authentication/production) during production use. - -3. Install the native image compiler. - - You can follow the [installation instructions](https://www.graalvm.org/docs/getting-started/#install-graalvm). - After following the instructions, ensure that you install the native image extension installed by running: - - ``` - gu install native-image - ``` - - Once you finish following the instructions, verify that the default version of Java is set to the correct version by running `java -version` in a terminal. - - You will see something similar to the below output: - - ``` - $ java -version - - openjdk version "17.0.3" 2022-04-19 - OpenJDK Runtime Environment GraalVM CE 22.1.0 (build 17.0.3+7-jvmci-22.1-b06) - OpenJDK 64-Bit Server VM GraalVM CE 22.1.0 (build 17.0.3+7-jvmci-22.1-b06, mixed mode, sharing) - ``` -## Sample -1. **(Optional)** If you wish to run the application against the [Datastore emulator](https://cloud.google.com/sdk/gcloud/reference/beta/emulators/datastore), ensure that you have the [Google Cloud SDK](https://cloud.google.com/sdk) installed. - - In a new terminal window, start the emulator via `gcloud`: - - ``` - gcloud beta emulators datastore start --host-port=localhost:9010 - ``` - - Leave the emulator running in this terminal for now. - In the next section, we will run the sample application against the Datastore emulator instance. - -2. Navigate to this directory and compile the application with the native image compiler. - - ``` - mvn package -P native -DskipTests - ``` - -3. **(Optional)** If you're using the emulator, export the `DATASTORE_EMULATOR_HOST` as an environment variable in your terminal. - - ``` - export DATASTORE_EMULATOR_HOST=localhost:9010 - ``` - - The Datastore Client Libraries will detect this environment variable and automatically connect to the emulator instance if this variable is set. - -4. Run the application. - - ``` - ./target/native-image-sample - ``` - -5. The application will run through some basic Datastore operations and log some output statements. - - ``` - Successfully added entity. - Reading entity: 1cf34cc1-2b8a-4945-9fc4-058f03dcd08e - Successfully deleted entity: 1cf34cc1-2b8a-4945-9fc4-058f03dcd08e - Run fake transaction code. - Found entity: - name=de4f36f4-3936-4252-98d3-e0d56d485254 - kind=test-kind - namespace=nativeimage-test-namespace - properties={description=StringValue{valueType=STRING, excludeFromIndexes=false, meaning=0, value=hello world}} - Ran transaction callable. - ``` - -### Sample Integration test with Native Image Support - -In order to run the sample integration test as a native image, call the following command: - - ``` - mvn test -Pnative - ``` diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml index 5a0ee2386..e69de29bb 100644 --- a/samples/native-image-sample/pom.xml +++ b/samples/native-image-sample/pom.xml @@ -1,141 +0,0 @@ - - - 4.0.0 - com.example.datastore - native-image-sample - Native Image Sample - https://github.com/googleapis/java-datastore - - - - com.google.cloud.samples - shared-configuration - 1.2.0 - - - - - 1.8 - 1.8 - UTF-8 - - - - - - com.google.cloud - libraries-bom - 26.43.0 - pom - import - - - - - - - com.google.cloud - google-cloud-datastore - - - - junit - junit - 4.13.2 - test - - - com.google.truth - truth - 1.4.3 - test - - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - com.example.datastore.NativeImageDatastoreSample - - - - - - - - - - - native - - - - org.junit.vintage - junit-vintage-engine - 5.10.2 - test - - - org.graalvm.buildtools - junit-platform-native - 0.10.2 - test - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - 3.2.5 - - - **/IT* - - - - - org.graalvm.buildtools - native-maven-plugin - 0.10.2 - true - - com.example.datastore.NativeImageDatastoreSample - - --no-fallback - --no-server - - - - - build-native - - build - test - - package - - - test-native - - test - - test - - - - - - - - \ No newline at end of file diff --git a/samples/native-image-sample/src/main/java/com/example/datastore/NativeImageDatastoreSample.java b/samples/native-image-sample/src/main/java/com/example/datastore/NativeImageDatastoreSample.java deleted file mode 100644 index 7ce5c900a..000000000 --- a/samples/native-image-sample/src/main/java/com/example/datastore/NativeImageDatastoreSample.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2020-2021 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.datastore; - -import com.google.cloud.datastore.Datastore; -import com.google.cloud.datastore.DatastoreOptions; -import com.google.cloud.datastore.Entity; -import com.google.cloud.datastore.Key; -import com.google.cloud.datastore.Query; -import com.google.cloud.datastore.QueryResults; -import com.google.cloud.datastore.StructuredQuery; -import com.google.cloud.datastore.Transaction; -import java.time.Duration; -import java.time.Instant; -import java.util.UUID; - -/** Sample Datastore Application. */ -public class NativeImageDatastoreSample { - - /* Datastore namespace where entities will be created. */ - private static final String TEST_NAMESPACE = "nativeimage-test-namespace"; - - /* Datastore kind used. */ - private static final String TEST_KIND = "test-kind"; - - /** Entrypoint to the Datastore sample application. */ - public static void main(String[] args) { - Instant startTime = Instant.now(); - Datastore datastore = DatastoreOptions.getDefaultInstance().getService(); - - String testId = UUID.randomUUID().toString(); - - addEntity(datastore, testId); - getEntity(datastore, testId); - deleteEntity(datastore, testId); - - runTransaction(datastore); - - String id = UUID.randomUUID().toString(); - Key key = createKey(datastore, id); - runTransactionCallable(datastore, key); - Instant endTime = Instant.now(); - Duration duration = Duration.between(startTime, endTime); - System.out.println("Duration: " + duration.toString()); - } - - static void addEntity(Datastore datastore, String id) { - Key key = createKey(datastore, id); - Entity entity = Entity.newBuilder(key).set("description", "hello world").build(); - datastore.add(entity); - System.out.println("Successfully added entity."); - } - - static void getEntity(Datastore datastore, String id) { - Key key = createKey(datastore, id); - Entity entity = datastore.get(key); - System.out.println("Reading entity: " + entity.getKey().getName()); - } - - static void deleteEntity(Datastore datastore, String id) { - Key key = createKey(datastore, id); - datastore.delete(key); - - Entity entity = datastore.get(key); - if (entity == null) { - System.out.println("Successfully deleted entity: " + id); - } else { - throw new RuntimeException("Failed to delete entity: " + id); - } - } - - static void runTransactionCallable(Datastore datastore, Key entityKey) { - datastore.runInTransaction( - client -> { - Entity entity = Entity.newBuilder(entityKey).set("description", "hello world").build(); - datastore.add(entity); - - StructuredQuery query = - Query.newEntityQueryBuilder().setNamespace(TEST_NAMESPACE).setKind(TEST_KIND).build(); - - QueryResults results = datastore.run(query); - while (results.hasNext()) { - Entity result = results.next(); - String name = result.getKey().getName(); - String kind = result.getKey().getKind(); - String namespace = result.getKey().getNamespace(); - System.out.println( - "Found entity:" - + "\n\t\tname=" - + name - + "\n\t\tkind=" - + kind - + "\n\t\tnamespace=" - + namespace - + "\n\t\tproperties=" - + result.getProperties().toString()); - } - - datastore.delete(entityKey); - return null; - }); - - System.out.println("Ran transaction callable."); - } - - private static void runTransaction(Datastore datastore) { - Transaction transaction = datastore.newTransaction(); - transaction.commit(); - transaction = datastore.newTransaction(); - transaction.rollback(); - System.out.println("Run fake transaction code."); - } - - static Key createKey(Datastore datastore, String id) { - return datastore.newKeyFactory().setNamespace(TEST_NAMESPACE).setKind(TEST_KIND).newKey(id); - } -} diff --git a/samples/native-image-sample/src/test/java/com/example/datastore/ITNativeImageDatastoreSample.java b/samples/native-image-sample/src/test/java/com/example/datastore/ITNativeImageDatastoreSample.java deleted file mode 100644 index 710f18367..000000000 --- a/samples/native-image-sample/src/test/java/com/example/datastore/ITNativeImageDatastoreSample.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.datastore; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.cloud.datastore.Datastore; -import com.google.cloud.datastore.DatastoreOptions; -import com.google.cloud.datastore.Key; -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; -import java.util.UUID; -import org.junit.Before; -import org.junit.Test; - -/** Tests for {@link com.example.datastore.NativeImageDatastoreSample} */ -public class ITNativeImageDatastoreSample { - - private Datastore datastore; - private ByteArrayOutputStream bout; - private PrintStream out; - - @Before - public void setUp() { - datastore = DatastoreOptions.getDefaultInstance().getService(); - bout = new ByteArrayOutputStream(); - out = new PrintStream(bout); - System.setOut(out); - } - - @Test - public void testAddAndGetEntity() { - bout.reset(); - String testId = "test-id-" + UUID.randomUUID(); - NativeImageDatastoreSample.addEntity(datastore, testId); - NativeImageDatastoreSample.getEntity(datastore, testId); - assertThat(bout.toString()).contains("Reading entity: " + testId); - - NativeImageDatastoreSample.deleteEntity(datastore, testId); - } - - @Test - public void testRunTransactionalCallable() { - bout.reset(); - String testId = "test-id-" + UUID.randomUUID(); - Key key = NativeImageDatastoreSample.createKey(datastore, testId); - NativeImageDatastoreSample.runTransactionCallable(datastore, key); - assertThat(bout.toString()) - .contains( - "Found entity:" - + "\n\t\tname=" - + testId - + "\n\t\tkind=test-kind" - + "\n\t\tnamespace=nativeimage-test-namespace" - + "\n\t\tproperties={description=StringValue{valueType=STRING, excludeFromIndexes=false," - + " meaning=0, value=hello world}}\n" - + "Ran transaction callable."); - - NativeImageDatastoreSample.deleteEntity(datastore, "test-id"); - } -} diff --git a/samples/pom.xml b/samples/pom.xml index e81bec450..2e970d081 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -31,7 +31,6 @@ install-without-bom snapshot snippets - native-image-sample From da529327d2d0de790b1011ad01de29d7429cef10 Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Thu, 5 Sep 2024 13:16:06 -0400 Subject: [PATCH 060/102] chore: remove unused image tag in .OwlBot-hermetic.yaml (#1559) This removes the unused image tag in this file. Part of the cleanup after enabling Hermetic Library generation in this repo. Newline at EOF automatically added - see [this SO](https://stackoverflow.com/questions/729692/why-should-text-files-end-with-a-newline). --- .github/.OwlBot-hermetic.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/.OwlBot-hermetic.yaml b/.github/.OwlBot-hermetic.yaml index d89045599..02f0dd37b 100644 --- a/.github/.OwlBot-hermetic.yaml +++ b/.github/.OwlBot-hermetic.yaml @@ -11,9 +11,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -docker: - image: "gcr.io/cloud-devrel-public-resources/owlbot-java:latest" deep-remove-regex: - "/proto-google-.*/src" @@ -29,4 +26,4 @@ deep-copy-regex: dest: "/owl-bot-staging/$1/grpc-google-cloud-datastore-admin-$1/src" # Admin & Data APIs share the same wrapper library. - source: "/google/datastore/admin/(v.*)/.*-java/gapic-google-.*/src" - dest: "/owl-bot-staging/$1/google-cloud-datastore/src" \ No newline at end of file + dest: "/owl-bot-staging/$1/google-cloud-datastore/src" From a9e8a670c1bcd8ff836200d8fd3d909f11a6bcdb Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 23:30:25 +0000 Subject: [PATCH 061/102] chore(main): release 2.21.3-SNAPSHOT (#1554) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index ae1f83917..52758f476 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.2 + 2.21.3-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.21.2 + 2.21.3-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 63beb11f1..452c69153 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.2 + 2.21.3-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.2 + 2.21.3-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.2 + 2.21.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.2 + 0.112.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.2 + 2.21.3-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index e928bea4e..85359ce26 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.2 + 2.21.3-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.2 + 2.21.3-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 6527e96f3..0464bed48 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.2 + 2.21.3-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.2 + 2.21.3-SNAPSHOT diff --git a/pom.xml b/pom.xml index fda01b132..054bcb009 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.2 + 2.21.3-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.2 + 2.21.3-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.2 + 2.21.3-SNAPSHOT com.google.cloud google-cloud-datastore - 2.21.2 + 2.21.3-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.2 + 0.112.3-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.21.2 + 2.21.3-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index a8c91f4dd..e9a85dc5e 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.2 + 2.21.3-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.2 + 2.21.3-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index bf896574d..a8d6064ca 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.2 + 0.112.3-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.2 + 2.21.3-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 5f2e900a8..662500308 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.2 + 2.21.3-SNAPSHOT diff --git a/versions.txt b/versions.txt index 3cee21923..a22a8396e 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.2:2.21.2 -google-cloud-datastore-bom:2.21.2:2.21.2 -proto-google-cloud-datastore-v1:0.112.2:0.112.2 -datastore-v1-proto-client:2.21.2:2.21.2 -proto-google-cloud-datastore-admin-v1:2.21.2:2.21.2 -grpc-google-cloud-datastore-admin-v1:2.21.2:2.21.2 +google-cloud-datastore:2.21.2:2.21.3-SNAPSHOT +google-cloud-datastore-bom:2.21.2:2.21.3-SNAPSHOT +proto-google-cloud-datastore-v1:0.112.2:0.112.3-SNAPSHOT +datastore-v1-proto-client:2.21.2:2.21.3-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.21.2:2.21.3-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.21.2:2.21.3-SNAPSHOT From 99e9d175d7df36c356c35101c0a01d803b676131 Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:13:22 -0400 Subject: [PATCH 062/102] chore: Update generation configuration at Tue Sep 10 17:00:48 UTC 2024 (#1564) --- generation_config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generation_config.yaml b/generation_config.yaml index ae6c9c9be..941eaaef0 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ -gapic_generator_version: 2.42.0 -googleapis_commitish: bcaed39fd1a805a6411a3992ea32dc1ba0ba7ec3 -libraries_bom_version: 26.38.0 +gapic_generator_version: 2.45.0 +googleapis_commitish: 02f62c8e241a9f95f0d183785354e90e35388cbd +libraries_bom_version: 26.45.0 libraries: - api_shortname: datastore name_pretty: Cloud Datastore From 27e6063656dc22dbc3e9909d57274762b0ed2615 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Sep 2024 20:20:28 +0200 Subject: [PATCH 063/102] chore(deps): update dependency com.google.cloud:libraries-bom to v26.45.0 (#1544) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:libraries-bom](https://cloud.google.com/java/docs/bom) ([source](https://redirect.github.com/googleapis/java-cloud-bom)) | `26.43.0` -> `26.45.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:libraries-bom/26.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:libraries-bom/26.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:libraries-bom/26.43.0/26.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:libraries-bom/26.43.0/26.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/java-cloud-bom (com.google.cloud:libraries-bom) ### [`v26.45.0`](https://redirect.github.com/googleapis/java-cloud-bom/blob/HEAD/CHANGELOG.md#26450-2024-08-27) [Compare Source](https://redirect.github.com/googleapis/java-cloud-bom/compare/v26.44.0...v26.45.0) ##### Dependencies - update dependency com.google.cloud:first-party-dependencies to v3.34.0 ([#​6707](https://redirect.github.com/googleapis/java-cloud-bom/issues/6707)) ([412f4ba](https://redirect.github.com/googleapis/java-cloud-bom/commit/412f4ba5c2223aabff39c0a60bf07cbd147f02da)) - update dependency com.google.cloud:gapic-libraries-bom to v1.42.0 ([#​6716](https://redirect.github.com/googleapis/java-cloud-bom/issues/6716)) ([6fc3557](https://redirect.github.com/googleapis/java-cloud-bom/commit/6fc35575193baf1d458b63ba166e92b64421c383)) - update dependency com.google.cloud:google-cloud-bigquery to v2.42.1 ([#​6730](https://redirect.github.com/googleapis/java-cloud-bom/issues/6730)) ([b0d939d](https://redirect.github.com/googleapis/java-cloud-bom/commit/b0d939dbbd3a94673206d206369f81429c1a6a7f)) - update dependency com.google.cloud:google-cloud-bigquerystorage-bom to v3.8.1 ([#​6712](https://redirect.github.com/googleapis/java-cloud-bom/issues/6712)) ([0121887](https://redirect.github.com/googleapis/java-cloud-bom/commit/0121887c7db48c48d14098d9643a3b73574bf851)) - update dependency com.google.cloud:google-cloud-bigquerystorage-bom to v3.9.0 ([#​6729](https://redirect.github.com/googleapis/java-cloud-bom/issues/6729)) ([406333e](https://redirect.github.com/googleapis/java-cloud-bom/commit/406333e7870405673e014f6871a31ac9c8822866)) - update dependency com.google.cloud:google-cloud-bigtable-bom to v2.43.0 ([#​6723](https://redirect.github.com/googleapis/java-cloud-bom/issues/6723)) ([0754a10](https://redirect.github.com/googleapis/java-cloud-bom/commit/0754a10b89b628179d4f115e162e326765de33b3)) - update dependency com.google.cloud:google-cloud-datastore-bom to v2.21.2 ([#​6725](https://redirect.github.com/googleapis/java-cloud-bom/issues/6725)) ([6d96ff4](https://redirect.github.com/googleapis/java-cloud-bom/commit/6d96ff40b279c73700cf85633445880721739d1e)) - update dependency com.google.cloud:google-cloud-firestore-bom to v3.25.1 ([#​6705](https://redirect.github.com/googleapis/java-cloud-bom/issues/6705)) ([b0440a8](https://redirect.github.com/googleapis/java-cloud-bom/commit/b0440a82a5b1f66f123b3014ccc5ecdfa783285a)) - update dependency com.google.cloud:google-cloud-logging-bom to v3.20.1 ([#​6720](https://redirect.github.com/googleapis/java-cloud-bom/issues/6720)) ([479182a](https://redirect.github.com/googleapis/java-cloud-bom/commit/479182af6afc7db95fac0bfafc3aaa587a23ff7c)) - update dependency com.google.cloud:google-cloud-logging-logback to v0.131.11-alpha ([#​6721](https://redirect.github.com/googleapis/java-cloud-bom/issues/6721)) ([9394259](https://redirect.github.com/googleapis/java-cloud-bom/commit/93942598cc7b42ad66ebad5557aeff795a9a8644)) - update dependency com.google.cloud:google-cloud-nio to v0.127.22 ([#​6713](https://redirect.github.com/googleapis/java-cloud-bom/issues/6713)) ([f7563bd](https://redirect.github.com/googleapis/java-cloud-bom/commit/f7563bd2822dff72ec01a148b14774bc641b3678)) - update dependency com.google.cloud:google-cloud-pubsub-bom to v1.132.1 ([#​6714](https://redirect.github.com/googleapis/java-cloud-bom/issues/6714)) ([439460a](https://redirect.github.com/googleapis/java-cloud-bom/commit/439460a340a4954117ba1f0c49e0f7ab99c0cf73)) - update dependency com.google.cloud:google-cloud-pubsublite-bom to v1.14.1 ([#​6715](https://redirect.github.com/googleapis/java-cloud-bom/issues/6715)) ([27a374b](https://redirect.github.com/googleapis/java-cloud-bom/commit/27a374b7a8318d5a8b100d3c1edfd420d8cf3cd4)) - update dependency com.google.cloud:google-cloud-spanner-bom to v6.73.0 ([#​6722](https://redirect.github.com/googleapis/java-cloud-bom/issues/6722)) ([b93b322](https://redirect.github.com/googleapis/java-cloud-bom/commit/b93b3222f36b8701ed59cb42ddb7636b822a8ece)) - update dependency com.google.cloud:google-cloud-spanner-bom to v6.74.0 ([#​6728](https://redirect.github.com/googleapis/java-cloud-bom/issues/6728)) ([9ca5a25](https://redirect.github.com/googleapis/java-cloud-bom/commit/9ca5a25c1772f8283598b4a8fbb64c08d0346557)) - update dependency com.google.cloud:google-cloud-spanner-jdbc to v2.21.0 ([#​6724](https://redirect.github.com/googleapis/java-cloud-bom/issues/6724)) ([4e32a3d](https://redirect.github.com/googleapis/java-cloud-bom/commit/4e32a3d0a5598c3f2a09bbd2155d7c589c81c796)) - update dependency com.google.cloud:google-cloud-storage-bom to v2.42.0 ([#​6717](https://redirect.github.com/googleapis/java-cloud-bom/issues/6717)) ([8302476](https://redirect.github.com/googleapis/java-cloud-bom/commit/8302476bac2908beeb0be2ac4f3a7b766bb9c011)) - update dependency commons-cli:commons-cli to v1.9.0 ([#​6706](https://redirect.github.com/googleapis/java-cloud-bom/issues/6706)) ([539f86c](https://redirect.github.com/googleapis/java-cloud-bom/commit/539f86cf0fab014d0c306bf230253569fab8494f)) ### [`v26.44.0`](https://redirect.github.com/googleapis/java-cloud-bom/blob/HEAD/CHANGELOG.md#26440-2024-08-08) [Compare Source](https://redirect.github.com/googleapis/java-cloud-bom/compare/v26.43.0...v26.44.0) ##### Dependencies - update dependency com.google.cloud:first-party-dependencies to v3.33.0 ([#​6687](https://redirect.github.com/googleapis/java-cloud-bom/issues/6687)) ([d93c7c1](https://redirect.github.com/googleapis/java-cloud-bom/commit/d93c7c1e5c8cfea5f0bb3b570282af1d17ac9992)) - update dependency com.google.cloud:gapic-libraries-bom to v1.41.0 ([#​6689](https://redirect.github.com/googleapis/java-cloud-bom/issues/6689)) ([e5afcc8](https://redirect.github.com/googleapis/java-cloud-bom/commit/e5afcc8a5afd362f7cdb6d19f446c99db7832fb9)) - update dependency com.google.cloud:google-cloud-bigquery to v2.42.0 ([#​6688](https://redirect.github.com/googleapis/java-cloud-bom/issues/6688)) ([58ed9ce](https://redirect.github.com/googleapis/java-cloud-bom/commit/58ed9cef18361489756bafdf9b6159077f498608)) - update dependency com.google.cloud:google-cloud-bigquerystorage-bom to v3.8.0 ([#​6685](https://redirect.github.com/googleapis/java-cloud-bom/issues/6685)) ([c6968cb](https://redirect.github.com/googleapis/java-cloud-bom/commit/c6968cb3315c37d21539daa5001c6b297f600ba4)) - update dependency com.google.cloud:google-cloud-bigtable-bom to v2.41.0 ([#​6686](https://redirect.github.com/googleapis/java-cloud-bom/issues/6686)) ([256f1b0](https://redirect.github.com/googleapis/java-cloud-bom/commit/256f1b0e97dc1c28453fd0c302e5ecc6958a5a55)) - update dependency com.google.cloud:google-cloud-bigtable-bom to v2.42.0 ([9e666cf](https://redirect.github.com/googleapis/java-cloud-bom/commit/9e666cf1efb8ba694a945814060df0ccdb26f363)) - update dependency com.google.cloud:google-cloud-datastore-bom to v2.21.0 ([#​6697](https://redirect.github.com/googleapis/java-cloud-bom/issues/6697)) ([046ad04](https://redirect.github.com/googleapis/java-cloud-bom/commit/046ad04177bca0cfd2aecce6bc1170617939bfbb)) - update dependency com.google.cloud:google-cloud-datastore-bom to v2.21.1 ([9e666cf](https://redirect.github.com/googleapis/java-cloud-bom/commit/9e666cf1efb8ba694a945814060df0ccdb26f363)) - update dependency com.google.cloud:google-cloud-firestore-bom to v3.24.2 ([#​6681](https://redirect.github.com/googleapis/java-cloud-bom/issues/6681)) ([91673de](https://redirect.github.com/googleapis/java-cloud-bom/commit/91673debfaec89f2c6b49249966f9ed772acc3bd)) - update dependency com.google.cloud:google-cloud-firestore-bom to v3.24.3 ([9e666cf](https://redirect.github.com/googleapis/java-cloud-bom/commit/9e666cf1efb8ba694a945814060df0ccdb26f363)) - update dependency com.google.cloud:google-cloud-logging-bom to v3.20.0 ([#​6694](https://redirect.github.com/googleapis/java-cloud-bom/issues/6694)) ([780736c](https://redirect.github.com/googleapis/java-cloud-bom/commit/780736c2b35f8f657b686bd1f4e61946835736ec)) - update dependency com.google.cloud:google-cloud-logging-logback to v0.131.10-alpha ([#​6695](https://redirect.github.com/googleapis/java-cloud-bom/issues/6695)) ([6ecff38](https://redirect.github.com/googleapis/java-cloud-bom/commit/6ecff38a39d0bbc2516ffcba64507afc9b4ac027)) - update dependency com.google.cloud:google-cloud-nio to v0.127.21 ([4534296](https://redirect.github.com/googleapis/java-cloud-bom/commit/4534296641ba101fae87219bbabc7efdd86f3fbc)) - update dependency com.google.cloud:google-cloud-pubsub-bom to v1.132.0 ([#​6693](https://redirect.github.com/googleapis/java-cloud-bom/issues/6693)) ([b0483b9](https://redirect.github.com/googleapis/java-cloud-bom/commit/b0483b95065ae38522547c736a753c751279f014)) - update dependency com.google.cloud:google-cloud-pubsublite-bom to v1.14.0 ([#​6696](https://redirect.github.com/googleapis/java-cloud-bom/issues/6696)) ([ad905cc](https://redirect.github.com/googleapis/java-cloud-bom/commit/ad905ccb7d41bd64cc519bd855dabb0523bd7fa8)) - update dependency com.google.cloud:google-cloud-spanner-bom to v6.72.0 ([9e666cf](https://redirect.github.com/googleapis/java-cloud-bom/commit/9e666cf1efb8ba694a945814060df0ccdb26f363)) - update dependency com.google.cloud:google-cloud-spanner-jdbc to v2.20.2 ([4534296](https://redirect.github.com/googleapis/java-cloud-bom/commit/4534296641ba101fae87219bbabc7efdd86f3fbc)) - update dependency com.google.cloud:google-cloud-storage-bom to v2.41.0 ([#​6690](https://redirect.github.com/googleapis/java-cloud-bom/issues/6690)) ([43aef8e](https://redirect.github.com/googleapis/java-cloud-bom/commit/43aef8e9bf082ce98afd0c34163b016b8f315ee0)) - update dependency com.google.googlejavaformat:google-java-format to v1.23.0 ([#​6692](https://redirect.github.com/googleapis/java-cloud-bom/issues/6692)) ([b403c50](https://redirect.github.com/googleapis/java-cloud-bom/commit/b403c5040d47ba87dd32162e3be71ded6fdd127c))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-datastore). --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 7e4de0be6..bd49599d3 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 26.43.0 + 26.45.0 pom import From 5a79fd8d1202e65c02423fe40402c41af6050efa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Sep 2024 22:56:12 +0200 Subject: [PATCH 064/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.35.0 (#1561) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 84c86037f..9d1576d94 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.34.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.35.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 639683e72..41590566e 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.34.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.35.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index b2121a633..d6941e80e 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.34.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.35.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 452c69153..0fe170fa1 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.34.0 + 3.35.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 054bcb009..503e5e530 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.34.0 + 3.35.0 From 18ba37f60b5b3e69c95f6e55a28daf8c0de82ba9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Sep 2024 22:56:39 +0200 Subject: [PATCH 065/102] deps: update dependency com.google.guava:guava-testlib to v33.3.0-jre (#1548) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 85359ce26..c80548fe5 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -122,7 +122,7 @@ com.google.guava guava-testlib - 33.2.1-jre + 33.3.0-jre test From 8d3af322fb56032cd7a9d29e60fd93d1f3e7e632 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Sep 2024 23:00:40 +0200 Subject: [PATCH 066/102] deps: update dependency com.google.errorprone:error_prone_core to v2.31.0 (#1523) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.errorprone:error_prone_core](https://errorprone.info) ([source](https://redirect.github.com/google/error-prone)) | `2.28.0` -> `2.31.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.errorprone:error_prone_core/2.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.errorprone:error_prone_core/2.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.errorprone:error_prone_core/2.28.0/2.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.errorprone:error_prone_core/2.28.0/2.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
google/error-prone (com.google.errorprone:error_prone_core) ### [`v2.31.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.31.0): Error Prone 2.31.0 This is the last planned minor release of Error Prone that will support running on JDK 11, see [#​3803](https://redirect.github.com/google/error-prone/issues/3803). Using Error Prone to compile code that is deployed to earlier versions will continue to be fully supported, but will require using JDK 17 or newer for compilation and setting `--release` or `-source`/`-target`/`-bootclasspath`. Changes: - Introduce [`@ThreadSafeTypeParameter`](https://redirect.github.com/google/error-prone/blob/2656f48902f6723f3147caa117372309dbc6c15f/type_annotations/src/main/java/com/google/errorprone/annotations/ThreadSafeTypeParameter.java) with enforcement by [ThreadSafe](https://errorprone.info/bugpattern/ThreadSafe) - Improved support for latest JDK 24 EA builds - Error Prone is now distributed as a Multi-Release jar ([#​3756](https://redirect.github.com/google/error-prone/issues/3756)) New checks: - [`AutoValueBoxedValues`](https://errorprone.info/bugpattern/AutoValueBoxedValues): AutoValue instances should not usually contain boxed types that are not Nullable. We recommend removing the unnecessary boxing. Full changelog: https://togithub.com/google/error-prone/compare/v2.30.0...v2.31.0 ### [`v2.30.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.30.0): Error Prone 2.30.0 New checks: - [`AutoValueBoxedValues`](https://errorprone.info/bugpattern/AutoValueBoxedValues): Detects unnecessary boxing in AutoValue classes. - [`DefaultLocale`](https://errorprone.info/bugpattern/DefaultLocale): Detects implicit use of the JVM default locale, which can result in differing behaviour between JVM executions. - [`UnnecessaryBreakInSwitch`](https://errorprone.info/bugpattern/UnnecessaryBreakInSwitch): Remove unnecessary `break` statements in `->` switches. Closed issues: [#​632](https://redirect.github.com/google/error-prone/issues/632), [#​4487](https://redirect.github.com/google/error-prone/issues/4487) Full changelog: https://togithub.com/google/error-prone/compare/v2.29.2...v2.30.0 ### [`v2.29.2`](https://redirect.github.com/google/error-prone/releases/tag/v2.29.2): Error Prone 2.29.2 This release contains all of the changes in [2.29.0](https://redirect.github.com/google/error-prone/releases/tag/v2.29.0) and [2.29.1](https://redirect.github.com/google/error-prone/releases/tag/v2.29.1), plus: - a bug fix for a crash in `TraditionalSwitchExpression` ([https://togithub.com/google/error-prone/issues/4479](https://redirect.github.com/google/error-prone/issues/4479)) - restores the `module-info` for the annotations jar, which was accidentally removed ([https://togithub.com/google/error-prone/issues/4480](https://redirect.github.com/google/error-prone/issues/4480)) Full Changelog: https://togithub.com/google/error-prone/compare/v2.29.1...v2.29.2 ### [`v2.29.1`](https://redirect.github.com/google/error-prone/releases/tag/v2.29.1): Error Prone 2.29.1 This release contains all of the changes in [2.29.0](https://redirect.github.com/google/error-prone/releases/tag/v2.29.0), plus: - a bug fix to `UnusedVariable` to handle unnamed `_` variables ([https://togithub.com/google/error-prone/issues/4451](https://redirect.github.com/google/error-prone/issues/4451)) - a bug fix for a crash in `SetUnrecognized` ([https://togithub.com/google/error-prone/issues/4475](https://redirect.github.com/google/error-prone/issues/4475)) Full Changelog: https://togithub.com/google/error-prone/compare/v2.29.0...v2.29.1 ### [`v2.29.0`](https://redirect.github.com/google/error-prone/releases/tag/v2.29.0): Error Prone 2.29.0 New checks: - [`MissingRuntimeRetention`](https://errorprone.info/bugpattern/MissingRuntimeRetention) - [`SetUnrecognized`](https://errorprone.info/bugpattern/SetUnrecognized) - [`StatementSwitchToExpressionSwitch`](https://errorprone.info/bugpattern/StatementSwitchToExpressionSwitch) Closed issues: [#​4318](https://redirect.github.com/google/error-prone/issues/4318), [#​4429](https://redirect.github.com/google/error-prone/issues/4429), [#​4467](https://redirect.github.com/google/error-prone/issues/4467) Full Changelog: https://togithub.com/google/error-prone/compare/v2.28.0...v2.29.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-datastore). --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 503e5e530..6ab0ec448 100644 --- a/pom.xml +++ b/pom.xml @@ -143,7 +143,7 @@ github google-cloud-datastore-parent https://googleapis.dev/java/google-api-grpc/latest - 2.28.0 + 2.31.0
From 90811b6bda565701fe8be59ac589591d002e8001 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:40:09 +0000 Subject: [PATCH 067/102] chore: change if condition in workflow (#1567) * chore: change if condition in workflow * add head_ref * add var --- .../hermetic_library_generation.yaml | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index ab23b9fec..0266fbc96 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -18,27 +18,37 @@ on: pull_request: env: - HEAD_REF: ${{ github.head_ref }} REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }} + GITHUB_REPOSITORY: ${{ github.repository }} jobs: library_generation: - # skip pull requests coming from a forked repository - if: github.env.REPO_FULL_NAME == github.repository runs-on: ubuntu-latest steps: + - name: Determine whether the pull request comes from a fork + run: | + if [[ "${GITHUB_REPOSITORY}" != "${REPO_FULL_NAME}" ]]; then + echo "This PR comes from a fork. Skip library generation." + echo "SHOULD_RUN=false" >> $GITHUB_ENV + else + echo "SHOULD_RUN=true" >> $GITHUB_ENV + fi - uses: actions/checkout@v4 + if: env.SHOULD_RUN == 'true' with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - name: Generate changed libraries + if: env.SHOULD_RUN == 'true' shell: bash run: | set -ex [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" bash .github/scripts/hermetic_library_generation.sh \ - --target_branch ${{ github.base_ref }} \ - --current_branch $HEAD_REF + --target_branch "${BASE_REF}" \ + --current_branch "${HEAD_REF}" env: + BASE_REF: ${{ github.base_ref }} + HEAD_REF: ${{ github.head_ref }} GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} From 4ce30824c4dc0a57ae5ad84a5749f7dda99ab319 Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Wed, 11 Sep 2024 14:59:24 -0400 Subject: [PATCH 068/102] chore: Update generation configuration at Wed Sep 11 15:40:41 UTC 2024 (#1568) * chore: Update generation configuration at Wed Sep 11 15:40:41 UTC 2024 * chore: generate libraries at Wed Sep 11 15:41:06 UTC 2024 --- .repo-metadata.json | 12 +++-- README.md | 25 +++++----- generation_config.yaml | 2 +- .../admin/v1/DatastoreAdminSettings.java | 43 +++++++++++++++- .../v1/stub/DatastoreAdminStubSettings.java | 49 +++++++++++++++++-- .../reflect-config.json | 18 +++++++ .../datastore/admin/v1/CommonMetadata.java | 2 +- .../admin/v1/CommonMetadataOrBuilder.java | 2 +- .../admin/v1/CreateIndexRequest.java | 2 +- .../admin/v1/CreateIndexRequestOrBuilder.java | 2 +- .../admin/v1/DatastoreAdminProto.java | 2 +- .../DatastoreFirestoreMigrationMetadata.java | 2 +- ...reFirestoreMigrationMetadataOrBuilder.java | 2 +- .../admin/v1/DeleteIndexRequest.java | 2 +- .../admin/v1/DeleteIndexRequestOrBuilder.java | 2 +- .../datastore/admin/v1/EntityFilter.java | 2 +- .../admin/v1/EntityFilterOrBuilder.java | 2 +- .../admin/v1/ExportEntitiesMetadata.java | 2 +- .../v1/ExportEntitiesMetadataOrBuilder.java | 2 +- .../admin/v1/ExportEntitiesRequest.java | 2 +- .../v1/ExportEntitiesRequestOrBuilder.java | 2 +- .../admin/v1/ExportEntitiesResponse.java | 2 +- .../v1/ExportEntitiesResponseOrBuilder.java | 2 +- .../datastore/admin/v1/GetIndexRequest.java | 2 +- .../admin/v1/GetIndexRequestOrBuilder.java | 2 +- .../admin/v1/ImportEntitiesMetadata.java | 2 +- .../v1/ImportEntitiesMetadataOrBuilder.java | 2 +- .../admin/v1/ImportEntitiesRequest.java | 2 +- .../v1/ImportEntitiesRequestOrBuilder.java | 2 +- .../com/google/datastore/admin/v1/Index.java | 2 +- .../admin/v1/IndexOperationMetadata.java | 2 +- .../v1/IndexOperationMetadataOrBuilder.java | 2 +- .../datastore/admin/v1/IndexOrBuilder.java | 2 +- .../google/datastore/admin/v1/IndexProto.java | 2 +- .../admin/v1/ListIndexesRequest.java | 2 +- .../admin/v1/ListIndexesRequestOrBuilder.java | 2 +- .../admin/v1/ListIndexesResponse.java | 2 +- .../v1/ListIndexesResponseOrBuilder.java | 2 +- .../admin/v1/MigrationProgressEvent.java | 2 +- .../v1/MigrationProgressEventOrBuilder.java | 2 +- .../datastore/admin/v1/MigrationProto.java | 2 +- .../datastore/admin/v1/MigrationState.java | 2 +- .../admin/v1/MigrationStateEvent.java | 2 +- .../v1/MigrationStateEventOrBuilder.java | 2 +- .../datastore/admin/v1/MigrationStep.java | 2 +- .../datastore/admin/v1/OperationType.java | 2 +- .../google/datastore/admin/v1/Progress.java | 2 +- .../datastore/admin/v1/ProgressOrBuilder.java | 2 +- .../google/datastore/v1/AggregationQuery.java | 2 +- .../v1/AggregationQueryOrBuilder.java | 2 +- .../datastore/v1/AggregationResult.java | 2 +- .../datastore/v1/AggregationResultBatch.java | 2 +- .../v1/AggregationResultBatchOrBuilder.java | 2 +- .../v1/AggregationResultOrBuilder.java | 2 +- .../datastore/v1/AggregationResultProto.java | 14 +++--- .../datastore/v1/AllocateIdsRequest.java | 2 +- .../v1/AllocateIdsRequestOrBuilder.java | 2 +- .../datastore/v1/AllocateIdsResponse.java | 2 +- .../v1/AllocateIdsResponseOrBuilder.java | 2 +- .../com/google/datastore/v1/ArrayValue.java | 2 +- .../datastore/v1/ArrayValueOrBuilder.java | 2 +- .../datastore/v1/BeginTransactionRequest.java | 2 +- .../v1/BeginTransactionRequestOrBuilder.java | 2 +- .../v1/BeginTransactionResponse.java | 2 +- .../v1/BeginTransactionResponseOrBuilder.java | 2 +- .../google/datastore/v1/CommitRequest.java | 2 +- .../datastore/v1/CommitRequestOrBuilder.java | 2 +- .../google/datastore/v1/CommitResponse.java | 2 +- .../datastore/v1/CommitResponseOrBuilder.java | 2 +- .../google/datastore/v1/CompositeFilter.java | 2 +- .../v1/CompositeFilterOrBuilder.java | 2 +- .../google/datastore/v1/DatastoreProto.java | 14 +++--- .../java/com/google/datastore/v1/Entity.java | 2 +- .../google/datastore/v1/EntityOrBuilder.java | 2 +- .../com/google/datastore/v1/EntityProto.java | 12 ++--- .../com/google/datastore/v1/EntityResult.java | 2 +- .../datastore/v1/EntityResultOrBuilder.java | 2 +- .../google/datastore/v1/ExecutionStats.java | 2 +- .../datastore/v1/ExecutionStatsOrBuilder.java | 2 +- .../google/datastore/v1/ExplainMetrics.java | 2 +- .../datastore/v1/ExplainMetricsOrBuilder.java | 2 +- .../google/datastore/v1/ExplainOptions.java | 2 +- .../datastore/v1/ExplainOptionsOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Filter.java | 2 +- .../google/datastore/v1/FilterOrBuilder.java | 2 +- .../com/google/datastore/v1/GqlQuery.java | 2 +- .../datastore/v1/GqlQueryOrBuilder.java | 2 +- .../datastore/v1/GqlQueryParameter.java | 2 +- .../v1/GqlQueryParameterOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Key.java | 2 +- .../com/google/datastore/v1/KeyOrBuilder.java | 2 +- .../google/datastore/v1/KindExpression.java | 2 +- .../datastore/v1/KindExpressionOrBuilder.java | 2 +- .../google/datastore/v1/LookupRequest.java | 2 +- .../datastore/v1/LookupRequestOrBuilder.java | 2 +- .../google/datastore/v1/LookupResponse.java | 2 +- .../datastore/v1/LookupResponseOrBuilder.java | 2 +- .../com/google/datastore/v1/Mutation.java | 2 +- .../datastore/v1/MutationOrBuilder.java | 2 +- .../google/datastore/v1/MutationResult.java | 2 +- .../datastore/v1/MutationResultOrBuilder.java | 2 +- .../com/google/datastore/v1/PartitionId.java | 2 +- .../datastore/v1/PartitionIdOrBuilder.java | 2 +- .../com/google/datastore/v1/PlanSummary.java | 2 +- .../datastore/v1/PlanSummaryOrBuilder.java | 2 +- .../com/google/datastore/v1/Projection.java | 2 +- .../datastore/v1/ProjectionOrBuilder.java | 2 +- .../google/datastore/v1/PropertyFilter.java | 2 +- .../datastore/v1/PropertyFilterOrBuilder.java | 2 +- .../com/google/datastore/v1/PropertyMask.java | 2 +- .../datastore/v1/PropertyMaskOrBuilder.java | 2 +- .../google/datastore/v1/PropertyOrder.java | 2 +- .../datastore/v1/PropertyOrderOrBuilder.java | 2 +- .../datastore/v1/PropertyReference.java | 2 +- .../v1/PropertyReferenceOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Query.java | 2 +- .../google/datastore/v1/QueryOrBuilder.java | 2 +- .../datastore/v1/QueryProfileProto.java | 14 +++--- .../com/google/datastore/v1/QueryProto.java | 14 +++--- .../google/datastore/v1/QueryResultBatch.java | 2 +- .../v1/QueryResultBatchOrBuilder.java | 2 +- .../com/google/datastore/v1/ReadOptions.java | 2 +- .../datastore/v1/ReadOptionsOrBuilder.java | 2 +- .../datastore/v1/ReserveIdsRequest.java | 2 +- .../v1/ReserveIdsRequestOrBuilder.java | 2 +- .../datastore/v1/ReserveIdsResponse.java | 2 +- .../v1/ReserveIdsResponseOrBuilder.java | 2 +- .../google/datastore/v1/RollbackRequest.java | 2 +- .../v1/RollbackRequestOrBuilder.java | 2 +- .../google/datastore/v1/RollbackResponse.java | 2 +- .../v1/RollbackResponseOrBuilder.java | 2 +- .../v1/RunAggregationQueryRequest.java | 2 +- .../RunAggregationQueryRequestOrBuilder.java | 2 +- .../v1/RunAggregationQueryResponse.java | 2 +- .../RunAggregationQueryResponseOrBuilder.java | 2 +- .../google/datastore/v1/RunQueryRequest.java | 2 +- .../v1/RunQueryRequestOrBuilder.java | 2 +- .../google/datastore/v1/RunQueryResponse.java | 2 +- .../v1/RunQueryResponseOrBuilder.java | 2 +- .../datastore/v1/TransactionOptions.java | 2 +- .../v1/TransactionOptionsOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Value.java | 2 +- .../google/datastore/v1/ValueOrBuilder.java | 2 +- .../datastore/v1/aggregation_result.proto | 2 +- .../proto/google/datastore/v1/datastore.proto | 2 +- .../proto/google/datastore/v1/entity.proto | 2 +- .../proto/google/datastore/v1/query.proto | 2 +- .../google/datastore/v1/query_profile.proto | 2 +- renovate.json | 12 +++-- 149 files changed, 303 insertions(+), 200 deletions(-) diff --git a/.repo-metadata.json b/.repo-metadata.json index e6ebd09de..6ae8c95c0 100644 --- a/.repo-metadata.json +++ b/.repo-metadata.json @@ -2,19 +2,21 @@ "api_shortname": "datastore", "name_pretty": "Cloud Datastore", "product_documentation": "https://cloud.google.com/datastore", + "api_description": "is a fully managed, schemaless database for\\nstoring non-relational data. Cloud Datastore automatically scales with\\nyour users and supports ACID transactions, high availability of reads and\\nwrites, strong consistency for reads and ancestor queries, and eventual\\nconsistency for all other queries.", "client_documentation": "https://cloud.google.com/java/docs/reference/google-cloud-datastore/latest/history", - "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", "release_level": "stable", + "transport": "both", "language": "java", "repo": "googleapis/java-datastore", "repo_short": "java-datastore", "distribution_name": "com.google.cloud:google-cloud-datastore", - "codeowner_team": "@googleapis/cloud-native-db-dpes @googleapis/api-datastore-sdk @googleapis/api-firestore-partners", "api_id": "datastore.googleapis.com", "library_type": "GAPIC_COMBO", - "api_description": "is a fully managed, schemaless database for\nstoring non-relational data. Cloud Datastore automatically scales with\nyour users and supports ACID transactions, high availability of reads and\nwrites, strong consistency for reads and ancestor queries, and eventual\nconsistency for all other queries.", + "requires_billing": true, + "codeowner_team": "@googleapis/cloud-native-db-dpes @googleapis/api-datastore-sdk @googleapis/api-firestore-partners", "excluded_dependencies": "grpc-google-cloud-datastore-v1", - "extra_versioned_modules": "datastore-v1-proto-client", "excluded_poms": "grpc-google-cloud-datastore-v1", + "issue_tracker": "https://issuetracker.google.com/savedsearches/559768", + "extra_versioned_modules": "datastore-v1-proto-client", "recommended_package": "com.google.cloud.datastore" -} +} \ No newline at end of file diff --git a/README.md b/README.md index 9089655ec..e6d69755b 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.41.0 + 26.45.0 pom import @@ -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.42.0') +implementation platform('com.google.cloud:libraries-bom:26.45.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.20.2' +implementation 'com.google.cloud:google-cloud-datastore:2.21.2' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.20.2" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.21.2" ``` @@ -80,7 +80,7 @@ The client application making API calls must be granted [authorization scopes][a ### Prerequisites You will need a [Google Cloud Platform Console][developer-console] project with the Cloud Datastore [API enabled][enable-api]. - +You will need to [enable billing][enable-billing] to use Google Cloud Datastore. [Follow these instructions][create-project] to get your project set up. You will also need to set up the local development environment by [installing the Google Cloud Command Line Interface][cloud-cli] and running the following commands in command line: `gcloud auth login` and `gcloud config set project [YOUR PROJECT ID]`. @@ -93,11 +93,7 @@ to add `google-cloud-datastore` as a dependency in your code. ## About Cloud Datastore -[Cloud Datastore][product-docs] is a fully managed, schemaless database for -storing non-relational data. Cloud Datastore automatically scales with -your users and supports ACID transactions, high availability of reads and -writes, strong consistency for reads and ancestor queries, and eventual -consistency for all other queries. +[Cloud Datastore][product-docs] is a fully managed, schemaless database for\nstoring non-relational data. Cloud Datastore automatically scales with\nyour users and supports ACID transactions, high availability of reads and\nwrites, strong consistency for reads and ancestor queries, and eventual\nconsistency for all other queries. See the [Cloud Datastore client library docs][javadocs] to learn how to use this Cloud Datastore Client Library. @@ -356,7 +352,6 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-datastore/tre | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | -| Native Image Datastore Sample | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/native-image-sample/src/main/java/com/example/datastore/NativeImageDatastoreSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/native-image-sample/src/main/java/com/example/datastore/NativeImageDatastoreSample.java) | | Quickstart Sample | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/QuickstartSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/QuickstartSample.java) | | Avg Aggregation On Kind | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/aggregation/AvgAggregationOnKind.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/aggregation/AvgAggregationOnKind.java) | | Avg Aggregation With Limit | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/aggregation/AvgAggregationWithLimit.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/aggregation/AvgAggregationWithLimit.java) | @@ -388,6 +383,10 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-datastore/tre To get help, follow the instructions in the [shared Troubleshooting document][troubleshooting]. +## Transport + +Cloud Datastore uses both gRPC and HTTP/JSON for the transport layer. + ## Supported Java Versions Java 8 or above is required for using this client. @@ -480,7 +479,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.20.2 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.21.2 [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 @@ -492,7 +491,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [contributing]: https://github.com/googleapis/java-datastore/blob/main/CONTRIBUTING.md [code-of-conduct]: https://github.com/googleapis/java-datastore/blob/main/CODE_OF_CONDUCT.md#contributor-code-of-conduct [license]: https://github.com/googleapis/java-datastore/blob/main/LICENSE - +[enable-billing]: https://cloud.google.com/apis/docs/getting-started#enabling_billing [enable-api]: https://console.cloud.google.com/flows/enableapi?apiid=datastore.googleapis.com [libraries-bom]: https://github.com/GoogleCloudPlatform/cloud-opensource-java/wiki/The-Google-Cloud-Platform-Libraries-BOM [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png diff --git a/generation_config.yaml b/generation_config.yaml index 941eaaef0..e030af441 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ gapic_generator_version: 2.45.0 -googleapis_commitish: 02f62c8e241a9f95f0d183785354e90e35388cbd +googleapis_commitish: 41cd9dba9e88f707a663d6686148ae3dc24116b8 libraries_bom_version: 26.45.0 libraries: - api_shortname: datastore diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/DatastoreAdminSettings.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/DatastoreAdminSettings.java index 4bae1f6f3..cafef310e 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/DatastoreAdminSettings.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/DatastoreAdminSettings.java @@ -65,7 +65,9 @@ *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. * - *

For example, to set the total timeout of getIndex to 30 seconds: + *

For example, to set the + * [RetrySettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetrySettings) + * of getIndex: * *

{@code
  * // This snippet has been automatically generated and should be regarded as a code template only.
@@ -82,10 +84,47 @@
  *             .getIndexSettings()
  *             .getRetrySettings()
  *             .toBuilder()
- *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ *             .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ *             .setMaxAttempts(5)
+ *             .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ *             .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ *             .setRetryDelayMultiplier(1.3)
+ *             .setRpcTimeoutMultiplier(1.5)
+ *             .setTotalTimeoutDuration(Duration.ofSeconds(300))
  *             .build());
  * DatastoreAdminSettings datastoreAdminSettings = datastoreAdminSettingsBuilder.build();
  * }
+ * + * Please refer to the [Client Side Retry + * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for + * additional support in setting retries. + * + *

To configure the RetrySettings of a Long Running Operation method, create an + * OperationTimedPollAlgorithm object and update the RPC's polling algorithm. For example, to + * configure the RetrySettings for exportEntities: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreAdminSettings.Builder datastoreAdminSettingsBuilder =
+ *     DatastoreAdminSettings.newBuilder();
+ * TimedRetryAlgorithm timedRetryAlgorithm =
+ *     OperationalTimedPollAlgorithm.create(
+ *         RetrySettings.newBuilder()
+ *             .setInitialRetryDelayDuration(Duration.ofMillis(500))
+ *             .setRetryDelayMultiplier(1.5)
+ *             .setMaxRetryDelay(Duration.ofMillis(5000))
+ *             .setTotalTimeoutDuration(Duration.ofHours(24))
+ *             .build());
+ * datastoreAdminSettingsBuilder
+ *     .createClusterOperationSettings()
+ *     .setPollingAlgorithm(timedRetryAlgorithm)
+ *     .build();
+ * }
*/ @Generated("by gapic-generator-java") public class DatastoreAdminSettings extends ClientSettings { diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java index fc346d38c..82df00c03 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/admin/v1/stub/DatastoreAdminStubSettings.java @@ -21,6 +21,7 @@ import com.google.api.core.ApiFunction; import com.google.api.core.ApiFuture; import com.google.api.core.BetaApi; +import com.google.api.core.ObsoleteApi; import com.google.api.gax.core.GaxProperties; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; @@ -85,7 +86,9 @@ *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. * - *

For example, to set the total timeout of getIndex to 30 seconds: + *

For example, to set the + * [RetrySettings](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.retrying.RetrySettings) + * of getIndex: * *

{@code
  * // This snippet has been automatically generated and should be regarded as a code template only.
@@ -102,10 +105,47 @@
  *             .getIndexSettings()
  *             .getRetrySettings()
  *             .toBuilder()
- *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .setInitialRetryDelayDuration(Duration.ofSeconds(1))
+ *             .setInitialRpcTimeoutDuration(Duration.ofSeconds(5))
+ *             .setMaxAttempts(5)
+ *             .setMaxRetryDelayDuration(Duration.ofSeconds(30))
+ *             .setMaxRpcTimeoutDuration(Duration.ofSeconds(60))
+ *             .setRetryDelayMultiplier(1.3)
+ *             .setRpcTimeoutMultiplier(1.5)
+ *             .setTotalTimeoutDuration(Duration.ofSeconds(300))
  *             .build());
  * DatastoreAdminStubSettings datastoreAdminSettings = datastoreAdminSettingsBuilder.build();
  * }
+ * + * Please refer to the [Client Side Retry + * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for + * additional support in setting retries. + * + *

To configure the RetrySettings of a Long Running Operation method, create an + * OperationTimedPollAlgorithm object and update the RPC's polling algorithm. For example, to + * configure the RetrySettings for exportEntities: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreAdminStubSettings.Builder datastoreAdminSettingsBuilder =
+ *     DatastoreAdminStubSettings.newBuilder();
+ * TimedRetryAlgorithm timedRetryAlgorithm =
+ *     OperationalTimedPollAlgorithm.create(
+ *         RetrySettings.newBuilder()
+ *             .setInitialRetryDelayDuration(Duration.ofMillis(500))
+ *             .setRetryDelayMultiplier(1.5)
+ *             .setMaxRetryDelay(Duration.ofMillis(5000))
+ *             .setTotalTimeoutDuration(Duration.ofHours(24))
+ *             .build());
+ * datastoreAdminSettingsBuilder
+ *     .createClusterOperationSettings()
+ *     .setPollingAlgorithm(timedRetryAlgorithm)
+ *     .build();
+ * }
*/ @Generated("by gapic-generator-java") public class DatastoreAdminStubSettings extends StubSettings { @@ -163,9 +203,7 @@ public String extractNextToken(ListIndexesResponse payload) { @Override public Iterable extractResources(ListIndexesResponse payload) { - return payload.getIndexesList() == null - ? ImmutableList.of() - : payload.getIndexesList(); + return payload.getIndexesList(); } }; @@ -270,6 +308,7 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild } /** Returns the default service endpoint. */ + @ObsoleteApi("Use getEndpoint() instead") public static String getDefaultEndpoint() { return "datastore.googleapis.com:443"; } diff --git a/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.admin.v1/reflect-config.json b/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.admin.v1/reflect-config.json index 5ed5e01e5..e4ca7ae5f 100644 --- a/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.admin.v1/reflect-config.json +++ b/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.admin.v1/reflect-config.json @@ -305,6 +305,24 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.api.PythonSettings$ExperimentalFeatures", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings$ExperimentalFeatures$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.api.ResourceDescriptor", "queryAllDeclaredConstructors": true, diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java index 2c078756d..27c9ab448 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java index fa127dc7c..913db1a5a 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface CommonMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java index c86b9a967..f9e6986e1 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java index 537fb10b9..6440f28fc 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface CreateIndexRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java index 9a4bb925f..bcea2e23a 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public final class DatastoreAdminProto { diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java index a0695ffd0..072da0b59 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java index 3bf3c03f8..1476b0451 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface DatastoreFirestoreMigrationMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java index 0b82ce7cc..19311057e 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java index 9ac5d5411..b2e5e6325 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface DeleteIndexRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java index a4c6617c3..f48b9fc16 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java index 59fff0657..ff9abf72c 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface EntityFilterOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java index 360a2c5c6..a48521aab 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java index a65dedc9c..dd09e14bf 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ExportEntitiesMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java index acad36a3e..a87805a6c 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java index 01f5ec35d..e54ff1d1e 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ExportEntitiesRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java index fd3350685..f629356dd 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java index 77bf913fb..a71ac8e9d 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ExportEntitiesResponseOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java index 00fb79822..e1d6886b2 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java index e33a2bd2e..5c5d811d7 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface GetIndexRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java index f89135ebd..47de2e41e 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java index 71c6928af..462bfacf2 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ImportEntitiesMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java index 596bbfa1a..43f3a746e 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java index 922616586..a38f50917 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ImportEntitiesRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java index 7244182dc..a2649edfb 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/index.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java index 96b2a12ac..a153b6848 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java index 20348e044..538df9521 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface IndexOperationMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java index 25373353b..459a0ef57 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/index.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface IndexOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java index 9dbdecdf1..f350301db 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/index.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public final class IndexProto { diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java index 5eb553c33..8dcdac9b9 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java index 389feb19a..4a3ea0672 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ListIndexesRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java index 05da1f24d..63bc8361f 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java index e6b8e4376..83ee6d607 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ListIndexesResponseOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java index d69e36b88..34b32c5c9 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java index 68441b30b..1b746f571 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface MigrationProgressEventOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java index 0c1110444..c5eae4353 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public final class MigrationProto { diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java index 1cc537677..0ffd47e82 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java index 54f20a287..0e3913ecd 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java index 3920f71c7..a96dd7999 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface MigrationStateEventOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java index 6810cfd53..ad98ba777 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java index b8a5f327b..644f8de69 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java index 347508413..bacd7cd7e 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java index faa613564..57bc88fc4 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.admin.v1; public interface ProgressOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java index 654257a1d..5207578bd 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java index bfb5e8448..4d34dc107 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; public interface AggregationQueryOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java index 5a6afdcff..9ad3eb613 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java index 040d282df..8b0a4ddad 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java index 5c1fb1daa..6dc72d389 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; public interface AggregationResultBatchOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java index 4bcde0f95..27ab61915 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; public interface AggregationResultOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java index a924705f1..254cef18a 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.3 +// Protobuf Java Version: 3.25.4 package com.google.datastore.v1; public final class AggregationResultProto { @@ -63,13 +63,13 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "tastore.v1.AggregationResult\022K\n\014more_res" + "ults\030\002 \001(\01625.google.datastore.v1.QueryRe" + "sultBatch.MoreResultsType\022-\n\tread_time\030\003" - + " \001(\0132\032.google.protobuf.TimestampB\310\001\n\027com" + + " \001(\0132\032.google.protobuf.TimestampB\307\001\n\027com" + ".google.datastore.v1B\026AggregationResultP" - + "rotoP\001Z.*?)\""], + "matchStrings": [ + "value: \"gcr.io/cloud-devrel-public-resources/graalvm.*:(?.*?)\"" + ], "depNameTemplate": "com.google.cloud:sdk-platform-java-config", "datasourceTemplate": "maven" }, @@ -32,7 +36,9 @@ "fileMatch": [ "^.github/workflows/unmanaged_dependency_check.yaml$" ], - "matchStrings": ["uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v(?.+?)\\n"], + "matchStrings": [ + "uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v(?.+?)\\n" + ], "depNameTemplate": "com.google.cloud:sdk-platform-java-config", "datasourceTemplate": "maven" } @@ -99,4 +105,4 @@ ], "semanticCommits": true, "dependencyDashboard": true -} +} \ No newline at end of file From 266f703cafc9616086dd142fd385b502a7a2ce10 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Sep 2024 22:26:27 +0200 Subject: [PATCH 069/102] build(deps): update dependency org.apache.maven.plugins:maven-deploy-plugin to v3.1.3 (#1551) --- samples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/pom.xml b/samples/pom.xml index 2e970d081..56fd2ae2c 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -38,7 +38,7 @@ org.apache.maven.plugins maven-deploy-plugin - 3.1.2 + 3.1.3 true From 0478c55bc2bef6c691fe69511fd3152636c58c0e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Sep 2024 23:08:07 +0200 Subject: [PATCH 070/102] test(deps): update dependency com.google.truth:truth to v1.4.4 (#1520) --- datastore-v1-proto-client/pom.xml | 2 +- google-cloud-datastore/pom.xml | 2 +- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 52758f476..177de84c7 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -98,7 +98,7 @@ com.google.truth truth - 1.4.3 + 1.4.4 test diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index c80548fe5..55f4ecf52 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -157,7 +157,7 @@ com.google.truth truth - 1.4.3 + 1.4.4 test
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 715d7154c..284584221 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -42,7 +42,7 @@ com.google.truth truth - 1.4.3 + 1.4.4 test
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 662500308..f44b9f8bc 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -41,7 +41,7 @@ com.google.truth truth - 1.4.3 + 1.4.4 test
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index bd49599d3..1cc4e9152 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -53,7 +53,7 @@ com.google.truth truth - 1.4.3 + 1.4.4 test
From ee788a162841994e09a61bb81b94cbe93353a78e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Sep 2024 23:08:16 +0200 Subject: [PATCH 071/102] deps: update dependency org.easymock:easymock to v5.4.0 (#1482) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6ab0ec448..1397398f8 100644 --- a/pom.xml +++ b/pom.xml @@ -197,7 +197,7 @@ org.easymock easymock - 5.2.0 + 5.4.0 test
From 37a4f58124cb3cdde409dc54f3ab1047dfaf2234 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Sep 2024 23:08:29 +0200 Subject: [PATCH 072/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.21.2 (#1480) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://redirect.github.com/googleapis/java-datastore) | `2.20.0` -> `2.21.2` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-datastore/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-datastore/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-datastore/2.20.0/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-datastore/2.20.0/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/java-datastore (com.google.cloud:google-cloud-datastore) ### [`v2.21.2`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2212-2024-08-22) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.21.1...v2.21.2) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.34.0 ([#​1547](https://redirect.github.com/googleapis/java-datastore/issues/1547)) ([8c5f595](https://redirect.github.com/googleapis/java-datastore/commit/8c5f5954d88732ab929b4477a3f15b0052adc2ff)) ### [`v2.21.1`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2211-2024-08-06) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.21.0...v2.21.1) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.33.0 ([#​1531](https://redirect.github.com/googleapis/java-datastore/issues/1531)) ([9e52395](https://redirect.github.com/googleapis/java-datastore/commit/9e52395f7ee71315331790284d35e7aad2f387ed)) ### [`v2.21.0`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2210-2024-07-31) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.20.2...v2.21.0) ##### Features - Enable hermetic library generation ([#​1462](https://redirect.github.com/googleapis/java-datastore/issues/1462)) ([d142d9c](https://redirect.github.com/googleapis/java-datastore/commit/d142d9c95d91c8cadaf696efc12d6136814938ff)) ### [`v2.20.2`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2202-2024-06-28) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.20.1...v2.20.2) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 ([#​1492](https://redirect.github.com/googleapis/java-datastore/issues/1492)) ([d940c93](https://redirect.github.com/googleapis/java-datastore/commit/d940c937959942d753f9215e7ce940ab6742be46)) ### [`v2.20.1`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2201-2024-06-04) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.20.0...v2.20.1) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.31.0 ([#​1471](https://redirect.github.com/googleapis/java-datastore/issues/1471)) ([42c643d](https://redirect.github.com/googleapis/java-datastore/commit/42c643d78562c5cbd6c17c29a0a124be8d05198a)) - Update dependency com.google.errorprone:error_prone_core to v2.28.0 ([#​1469](https://redirect.github.com/googleapis/java-datastore/issues/1469)) ([e3fac2b](https://redirect.github.com/googleapis/java-datastore/commit/e3fac2bf9992fcb2e91319df0520094865de2d49)) - Update dependency com.google.guava:guava-testlib to v33.2.1-jre ([#​1470](https://redirect.github.com/googleapis/java-datastore/issues/1470)) ([614e930](https://redirect.github.com/googleapis/java-datastore/commit/614e930f2bdccc517d4733e5fb7f3cefad696a20))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-datastore). --- samples/install-without-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 284584221..d884dbf55 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.20.0 + 2.21.2 From 7e7a0308f73a14228ba9cf0a9fd26afa2f93869e Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 14:28:21 -0700 Subject: [PATCH 073/102] chore(main): release 2.21.3 (#1565) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 11 files changed, 39 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e953fa33f..a38532a81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [2.21.3](https://github.com/googleapis/java-datastore/compare/v2.21.2...v2.21.3) (2024-09-11) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.35.0 ([#1561](https://github.com/googleapis/java-datastore/issues/1561)) ([5a79fd8](https://github.com/googleapis/java-datastore/commit/5a79fd8d1202e65c02423fe40402c41af6050efa)) +* Update dependency com.google.errorprone:error_prone_core to v2.31.0 ([#1523](https://github.com/googleapis/java-datastore/issues/1523)) ([8d3af32](https://github.com/googleapis/java-datastore/commit/8d3af322fb56032cd7a9d29e60fd93d1f3e7e632)) +* Update dependency com.google.guava:guava-testlib to v33.3.0-jre ([#1548](https://github.com/googleapis/java-datastore/issues/1548)) ([18ba37f](https://github.com/googleapis/java-datastore/commit/18ba37f60b5b3e69c95f6e55a28daf8c0de82ba9)) +* Update dependency org.easymock:easymock to v5.4.0 ([#1482](https://github.com/googleapis/java-datastore/issues/1482)) ([ee788a1](https://github.com/googleapis/java-datastore/commit/ee788a162841994e09a61bb81b94cbe93353a78e)) + ## [2.21.2](https://github.com/googleapis/java-datastore/compare/v2.21.1...v2.21.2) (2024-08-22) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 177de84c7..3922a2757 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.3-SNAPSHOT + 2.21.3 com.google.cloud google-cloud-datastore-parent - 2.21.3-SNAPSHOT + 2.21.3 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 0fe170fa1..a13792e8f 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.3-SNAPSHOT + 2.21.3 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.3-SNAPSHOT + 2.21.3 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.3-SNAPSHOT + 2.21.3 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.3-SNAPSHOT + 0.112.3 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.3-SNAPSHOT + 2.21.3
diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 55f4ecf52..595f04ba4 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.3-SNAPSHOT + 2.21.3 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.3-SNAPSHOT + 2.21.3 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 0464bed48..fe38bbef1 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.3-SNAPSHOT + 2.21.3 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.3-SNAPSHOT + 2.21.3 diff --git a/pom.xml b/pom.xml index 1397398f8..23737d6b3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.3-SNAPSHOT + 2.21.3 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.3-SNAPSHOT + 2.21.3 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.3-SNAPSHOT + 2.21.3 com.google.cloud google-cloud-datastore - 2.21.3-SNAPSHOT + 2.21.3 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.3-SNAPSHOT + 0.112.3 com.google.cloud.datastore datastore-v1-proto-client - 2.21.3-SNAPSHOT + 2.21.3 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index e9a85dc5e..5ddd934ff 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.3-SNAPSHOT + 2.21.3 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.3-SNAPSHOT + 2.21.3 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index a8d6064ca..a2bceec90 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.3-SNAPSHOT + 0.112.3 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.3-SNAPSHOT + 2.21.3 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index d884dbf55..284584221 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.21.2 + 2.20.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index f44b9f8bc..af7856d35 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.3-SNAPSHOT + 2.21.3 diff --git a/versions.txt b/versions.txt index a22a8396e..9cc37ac81 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.2:2.21.3-SNAPSHOT -google-cloud-datastore-bom:2.21.2:2.21.3-SNAPSHOT -proto-google-cloud-datastore-v1:0.112.2:0.112.3-SNAPSHOT -datastore-v1-proto-client:2.21.2:2.21.3-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.21.2:2.21.3-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.21.2:2.21.3-SNAPSHOT +google-cloud-datastore:2.21.3:2.21.3 +google-cloud-datastore-bom:2.21.3:2.21.3 +proto-google-cloud-datastore-v1:0.112.3:0.112.3 +datastore-v1-proto-client:2.21.3:2.21.3 +proto-google-cloud-datastore-admin-v1:2.21.3:2.21.3 +grpc-google-cloud-datastore-admin-v1:2.21.3:2.21.3 From 3e33c4cb3c3066e1281edfab7e84adb73b7fb1cd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Sep 2024 23:40:34 +0200 Subject: [PATCH 074/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.21.2 (#1570) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://redirect.github.com/googleapis/java-datastore) | `2.20.0` -> `2.21.2` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-datastore/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-datastore/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-datastore/2.20.0/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-datastore/2.20.0/2.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/java-datastore (com.google.cloud:google-cloud-datastore) ### [`v2.21.2`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2212-2024-08-22) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.21.1...v2.21.2) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.34.0 ([#​1547](https://redirect.github.com/googleapis/java-datastore/issues/1547)) ([8c5f595](https://redirect.github.com/googleapis/java-datastore/commit/8c5f5954d88732ab929b4477a3f15b0052adc2ff)) ### [`v2.21.1`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2211-2024-08-06) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.21.0...v2.21.1) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.33.0 ([#​1531](https://redirect.github.com/googleapis/java-datastore/issues/1531)) ([9e52395](https://redirect.github.com/googleapis/java-datastore/commit/9e52395f7ee71315331790284d35e7aad2f387ed)) ### [`v2.21.0`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2210-2024-07-31) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.20.2...v2.21.0) ##### Features - Enable hermetic library generation ([#​1462](https://redirect.github.com/googleapis/java-datastore/issues/1462)) ([d142d9c](https://redirect.github.com/googleapis/java-datastore/commit/d142d9c95d91c8cadaf696efc12d6136814938ff)) ### [`v2.20.2`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2202-2024-06-28) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.20.1...v2.20.2) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.32.0 ([#​1492](https://redirect.github.com/googleapis/java-datastore/issues/1492)) ([d940c93](https://redirect.github.com/googleapis/java-datastore/commit/d940c937959942d753f9215e7ce940ab6742be46)) ### [`v2.20.1`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2201-2024-06-04) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.20.0...v2.20.1) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.31.0 ([#​1471](https://redirect.github.com/googleapis/java-datastore/issues/1471)) ([42c643d](https://redirect.github.com/googleapis/java-datastore/commit/42c643d78562c5cbd6c17c29a0a124be8d05198a)) - Update dependency com.google.errorprone:error_prone_core to v2.28.0 ([#​1469](https://redirect.github.com/googleapis/java-datastore/issues/1469)) ([e3fac2b](https://redirect.github.com/googleapis/java-datastore/commit/e3fac2bf9992fcb2e91319df0520094865de2d49)) - Update dependency com.google.guava:guava-testlib to v33.2.1-jre ([#​1470](https://redirect.github.com/googleapis/java-datastore/issues/1470)) ([614e930](https://redirect.github.com/googleapis/java-datastore/commit/614e930f2bdccc517d4733e5fb7f3cefad696a20))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-datastore). --- samples/install-without-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 284584221..d884dbf55 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.20.0 + 2.21.2 From e95d878986a0a5aa35341764b56de7e9a4d8ed23 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 12 Sep 2024 18:40:25 +0200 Subject: [PATCH 075/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.21.3 (#1572) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://redirect.github.com/googleapis/java-datastore) | `2.21.2` -> `2.21.3` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-datastore/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-datastore/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-datastore/2.21.2/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-datastore/2.21.2/2.21.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
googleapis/java-datastore (com.google.cloud:google-cloud-datastore) ### [`v2.21.3`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2213-2024-09-11) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.21.2...v2.21.3) ##### Dependencies - Update dependency com.google.cloud:sdk-platform-java-config to v3.35.0 ([#​1561](https://redirect.github.com/googleapis/java-datastore/issues/1561)) ([5a79fd8](https://redirect.github.com/googleapis/java-datastore/commit/5a79fd8d1202e65c02423fe40402c41af6050efa)) - Update dependency com.google.errorprone:error_prone_core to v2.31.0 ([#​1523](https://redirect.github.com/googleapis/java-datastore/issues/1523)) ([8d3af32](https://redirect.github.com/googleapis/java-datastore/commit/8d3af322fb56032cd7a9d29e60fd93d1f3e7e632)) - Update dependency com.google.guava:guava-testlib to v33.3.0-jre ([#​1548](https://redirect.github.com/googleapis/java-datastore/issues/1548)) ([18ba37f](https://redirect.github.com/googleapis/java-datastore/commit/18ba37f60b5b3e69c95f6e55a28daf8c0de82ba9)) - Update dependency org.easymock:easymock to v5.4.0 ([#​1482](https://redirect.github.com/googleapis/java-datastore/issues/1482)) ([ee788a1](https://redirect.github.com/googleapis/java-datastore/commit/ee788a162841994e09a61bb81b94cbe93353a78e))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-datastore). --- samples/install-without-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index d884dbf55..9187ea8ce 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.21.2 + 2.21.3 From 3e9bf506c8dea79697f924398e8738fc8394ba7e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 13 Sep 2024 20:02:59 +0000 Subject: [PATCH 076/102] chore: Add Clirr exemptions for Protobuf 4.27.4+ runtime (#1575) --- .../clirr-ignored-differences.xml | 62 +++++++++++++++++++ .../clirr-ignored-differences.xml | 62 +++++++++++++++++++ 2 files changed, 124 insertions(+) diff --git a/proto-google-cloud-datastore-admin-v1/clirr-ignored-differences.xml b/proto-google-cloud-datastore-admin-v1/clirr-ignored-differences.xml index c384c422e..7cf3ac808 100644 --- a/proto-google-cloud-datastore-admin-v1/clirr-ignored-differences.xml +++ b/proto-google-cloud-datastore-admin-v1/clirr-ignored-differences.xml @@ -16,4 +16,66 @@ com/google/datastore/admin/v1/*OrBuilder boolean has*(*) + + + + 7006 + com/google/datastore/admin/v1/** + * getDefaultInstanceForType() + ** + + + 7006 + com/google/datastore/admin/v1/** + * addRepeatedField(*) + ** + + + 7006 + com/google/datastore/admin/v1/** + * clear() + ** + + + 7006 + com/google/datastore/admin/v1/** + * clearField(*) + ** + + + 7006 + com/google/datastore/admin/v1/** + * clearOneof(*) + ** + + + 7006 + com/google/datastore/admin/v1/** + * clone() + ** + + + 7006 + com/google/datastore/admin/v1/** + * mergeUnknownFields(*) + ** + + + 7006 + com/google/datastore/admin/v1/** + * setField(*) + ** + + + 7006 + com/google/datastore/admin/v1/** + * setRepeatedField(*) + ** + + + 7006 + com/google/datastore/admin/v1/** + * setUnknownFields(*) + ** + diff --git a/proto-google-cloud-datastore-v1/clirr-ignored-differences.xml b/proto-google-cloud-datastore-v1/clirr-ignored-differences.xml index 064bc1b32..34662f77c 100644 --- a/proto-google-cloud-datastore-v1/clirr-ignored-differences.xml +++ b/proto-google-cloud-datastore-v1/clirr-ignored-differences.xml @@ -58,4 +58,66 @@ STATS_FIELD_NUMBER 6011 + + + + 7006 + com/google/datastore/v1/** + * getDefaultInstanceForType() + ** + + + 7006 + com/google/datastore/v1/** + * addRepeatedField(*) + ** + + + 7006 + com/google/datastore/v1/** + * clear() + ** + + + 7006 + com/google/datastore/v1/** + * clearField(*) + ** + + + 7006 + com/google/datastore/v1/** + * clearOneof(*) + ** + + + 7006 + com/google/datastore/v1/** + * clone() + ** + + + 7006 + com/google/datastore/v1/** + * mergeUnknownFields(*) + ** + + + 7006 + com/google/datastore/v1/** + * setField(*) + ** + + + 7006 + com/google/datastore/v1/** + * setRepeatedField(*) + ** + + + 7006 + com/google/datastore/v1/** + * setUnknownFields(*) + ** + From 224b13781baa96f94ca36c47220291273164127a Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Thu, 19 Sep 2024 14:08:22 -0400 Subject: [PATCH 077/102] chore: Update generation configuration at Thu Sep 19 02:21:53 UTC 2024 (#1573) * chore: Update generation configuration at Thu Sep 12 02:19:58 UTC 2024 * chore: generate libraries at Thu Sep 12 02:20:21 UTC 2024 * chore: Update generation configuration at Fri Sep 13 02:20:43 UTC 2024 * chore: Update generation configuration at Sat Sep 14 02:18:54 UTC 2024 * chore: Update generation configuration at Mon Sep 16 02:25:16 UTC 2024 * chore: Update generation configuration at Tue Sep 17 02:08:30 UTC 2024 * chore: Update generation configuration at Wed Sep 18 02:20:33 UTC 2024 * chore: Update generation configuration at Thu Sep 19 02:21:53 UTC 2024 * chore: generate libraries at Thu Sep 19 02:22:20 UTC 2024 --- README.md | 10 +++++----- generation_config.yaml | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e6d69755b..e5e9c1afe 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-datastore - 2.20.0 + 2.21.2 ``` @@ -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.45.0') +implementation platform('com.google.cloud:libraries-bom:26.46.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.21.2' +implementation 'com.google.cloud:google-cloud-datastore:2.21.3' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.21.2" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.21.3" ``` @@ -479,7 +479,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.21.2 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.21.3 [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/generation_config.yaml b/generation_config.yaml index e030af441..cd940462a 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ gapic_generator_version: 2.45.0 -googleapis_commitish: 41cd9dba9e88f707a663d6686148ae3dc24116b8 -libraries_bom_version: 26.45.0 +googleapis_commitish: 607c2ae82620153880a66898bcbf0a46d38d7d10 +libraries_bom_version: 26.46.0 libraries: - api_shortname: datastore name_pretty: Cloud Datastore From 5440c22364074c108450c3a748a6a17d5f1dddda Mon Sep 17 00:00:00 2001 From: Jimit Shah <57637300+jimit-j-shah@users.noreply.github.com> Date: Thu, 19 Sep 2024 14:56:26 -0700 Subject: [PATCH 078/102] feat: Introducing Tracing with OpenTelemetry API #1537 (#1576) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Adding TraceUtil interface and its implementation to enable Tracing controls via DatastoreOptions (#1431) * Adding EnabledTraceUtil, DisabledTraceUtil and TraceUtilTest * Annotating DatastoreOpenTelemetryOptions to be transient as they're not serializable * Adding google-auth-library-credentials dependency due to https://github.com/googleapis/java-datastore/actions/runs/8944472794/job/24571458116?pr=1431 * feat: Adding Lookup RPC OpenTelemetry Tracing (#1437) * feat: Adding Lookup RPC OpenTelemetry Tracing - Removed OpenCensus Tracing - Added E2E tests with Global and Local OTel SDK - Moved OTel SDK setup to RemoteDatastoreHelper - Fixed pom to depend on BOM for all shared dependencies * feat: Adding Commit RPC Trace Instrumentation (#1440) - Added end-to-end test for Datastore operationsput, add, update and delete. - Updated E2E Test to use the namespace correctly for efficient clean-up of test data * feat: RunQuery trace instrumentation (#1441) * feat: RunQuery trace instrumentation * feat: RunAggregationQuery instrumentation (#1447) * feat: RunQuery trace instrumentation * Formatting * Formatting * Refactor: s/RUNQUERY/RUN_QUERY * feat: RunAggregationQuery Trace Instrumentation * Build: retiring test assertions for OpenCensus spans - will be replacing this in hermetic integration tests for OpenTelemetry using in-memory span exports (in addition to ITE2ETraceTest.java). * Formatting * Fixing @Test annotation missed after merge * Formatting * feat: RunQuery trace instrumentation * Formatting * Formatting * Refactor: s/RUNQUERY/RUN_QUERY * feat: RunAggregationQuery Trace Instrumentation * Build: retiring test assertions for OpenCensus spans - will be replacing this in hermetic integration tests for OpenTelemetry using in-memory span exports (in addition to ITE2ETraceTest.java). * Formatting * Fixing @Test annotation missed after merge * Formatting * feat: Add Transaction tracing test: transactionalLookupTest * test: Transaction test for RunInTransaction - need to fix trace instrumentation for RunIn.. * Adding transaction span names * TransactionLookupTest * feat: support for transactional operations - tested using newTransaction() and runInTransaction() * Revert "feat: support for transactional operations" This reverts commit 10341c0b97cbc2025f9f928ce8cb09d5c036a5b3. * feat: support for transactional operations (#1468) * feat: support for transactional operations - tested using newTransaction() and runInTransaction() * feat: Allocateid tracing (#1488) * feat: Adding tracing for AllocateIds RPC * formatting * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot * feat: Add tracing for ReserveIds operation (#1490) - added end-to-end test * fix: Fixed Span nesting for `ReadWriteTransactionCallable` by using parent SpanContext instead of just parent Context (#1495) * fix: Fixed the TraceUtil.startSpan method to use `SpanContext` for linking with the parent instead of `Context`. - This fixes the hierarchy of Spans appearing in a transaction under a Run method. - Tested using existing transaction test * Fixed commit reordering and typos * fix: lint errors * fix: Refactored the ReadWriteTransactioncallable.call method to use startSpan idiomatically - TraceUtil.startSpan needs more debugging - return DefaultTracerProvider instance (no-op) when initializing DisabledTraceUtil - this fixes the unit tests in DatastoreTest.testRunInTransactionWithReadWriteOption * feat: Added tracing for Transaction.RunQuery (#1499) * feat: Added span for Transactional RunQuery - tested * fix: lint * fix: patch apply issues * fix: refactor using boolean flag * fix: s/startSpan/startSpanWithParentContext * test: Additional Transaction Testing and cleanup OpenCensus usage (#1505) * test: newTransactionReadWriteTraceTest * fix: test literal * feat: Added tests for transaction cases * fix: Cleanup OpenCensus dead code * fix: updating version from 2.20.1 -> 2.21.0 * fix: reverting version from 2.21.0 -> 2.20.1 * fix: Adding an exception to the clirr-maven-plugin for an internal API parameter change from com.google.cloud.datastore.TraceUtil -> com.google.cloud.datastore.telemetry.TraceUtil * fix: Fixing the differenceType in clirr exception * fix: add an exception for removal of an internal class (com.google.cloud.datastore.TraceUtil) * fix: fixing incomplete difference details for type 7005 * fix: Fixing `to` of the difference to be the entire signature * fix: typo * test: Adding ITTracingTest to verify events and span attributes (whic… (#1514) * test: Adding ITTracingTest to verify events and span attributes (which are not verified in ITE2ETracingTest) due to TraceClient API limitations. - This test uses InMemorySpanExporter to read the generated Otel span data by the test process to verify generated span data as it were before exporting to a backend. None of the span data is exported to a durable backend. - This test is still an E2E test as it requires a project to send RPCs to. * fix: fixing compilation error due to missing pom dependency. * test: Test for AllocateId and ReserveId rpcs * test: Commit/Put/Update/Delete tests * test: Added fixes and test for RunQuery event * test: Additional Transaction tests and AggregationQuery test (#1518) * test: ReadWrite Transaction test * test: Added test for Transactional RunQuery and Transaction Rollback * test: runInTransaction API tracing test - Fixed setting of common span attributes to spans in runInTransaction - Removed some gRPC related channel attributes that are not present in this Datastore version, yet. * fix: Undelete gRPC upgrade docs * fix: Undo merge mistakes * fix: Updating span event strings (#1539) * fix: Fixing user-facing span names in line with go/firestore-client-trace-catalog * fix: updating bom dependency version to fix https://github.com/googleapis/java-datastore/actions/runs/10256441634/job/28375496112?pr=1539 * Fix: typo in test causing integration test failure (#1556) https://btx.cloud.google.com/invocations/c11a2e8b-4494-4ddc-a77e-cf2bcbcf5254/targets/cloud-devrel%2Fclient-libraries%2Fjava%2Fjava-datastore%2Fpresubmit%2Fintegration;config=default/log * fix: opentelemetry-sdk should only be used as a Test Dependency * fix: Update opentelemetry.version - this also fixes the tests failing in https://github.com/googleapis/java-datastore/actions/runs/10891578591/job/30222786908 * fix: Replacing attribute key values w/ constants * fix: opentelemetry.version to fix RequireUpperBoundDeps check https://github.com/googleapis/java-datastore/actions/runs/10892403348/job/30225154043?pr=1576 * fix: Create Span hierarchy using parent Span (#1580) * fix: Replace use of TraceUtil.SpanContext w/ TraceUtil.Context * fix: Fixing how span hierarchy is created across threads - using Span instead of Context * fix: cleaning up startSpan(spanName, parentContext) variant * fix: add TracedReadWriteTransactionCallable to bifurcate tracing enabled/disabled paths for the Transaction callback. - This change implements the idiomatic way to express nested spans as described in https://opentelemetry.io/docs/languages/java/instrumentation/#create-nested-spans * fix: cleanup * fix: cleanup * fix: cleanup * fix: formatting and import refactoring * chore: generate libraries at Thu Sep 19 18:35:54 UTC 2024 --------- Co-authored-by: Owl Bot Co-authored-by: cloud-java-bot --- README.md | 2 +- .../clirr-ignored-differences.xml | 12 + google-cloud-datastore/pom.xml | 86 +- .../google/cloud/datastore/DatastoreImpl.java | 289 +++-- .../DatastoreOpenTelemetryOptions.java | 97 ++ .../cloud/datastore/DatastoreOptions.java | 40 + .../RetryAndTraceDatastoreRpcDecorator.java | 30 +- .../com/google/cloud/datastore/TraceUtil.java | 76 -- .../cloud/datastore/TransactionImpl.java | 5 + .../datastore/spi/v1/HttpDatastoreRpc.java | 5 +- .../telemetry/DisabledTraceUtil.java | 131 +++ .../datastore/telemetry/EnabledTraceUtil.java | 323 ++++++ .../cloud/datastore/telemetry/TraceUtil.java | 167 +++ .../testing/RemoteDatastoreHelper.java | 29 +- .../cloud/datastore/DatastoreOptionsTest.java | 14 + .../google/cloud/datastore/DatastoreTest.java | 2 + ...etryAndTraceDatastoreRpcDecoratorTest.java | 84 -- .../cloud/datastore/it/ITE2ETracingTest.java | 1009 +++++++++++++++++ .../cloud/datastore/it/ITTracingTest.java | 849 ++++++++++++++ .../telemetry/DisabledTraceUtilTest.java | 54 + .../telemetry/EnabledTraceUtilTest.java | 106 ++ .../datastore/telemetry/TraceUtilTest.java | 62 + 22 files changed, 3216 insertions(+), 256 deletions(-) create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOpenTelemetryOptions.java delete mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/DisabledTraceUtil.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/TraceUtil.java delete mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecoratorTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITE2ETracingTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITTracingTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/DisabledTraceUtilTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/EnabledTraceUtilTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/TraceUtilTest.java diff --git a/README.md b/README.md index e5e9c1afe..d8b43bd0a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-datastore - 2.21.2 + 2.21.3 ``` diff --git a/google-cloud-datastore/clirr-ignored-differences.xml b/google-cloud-datastore/clirr-ignored-differences.xml index 1620fd752..847ba4f4c 100644 --- a/google-cloud-datastore/clirr-ignored-differences.xml +++ b/google-cloud-datastore/clirr-ignored-differences.xml @@ -55,4 +55,16 @@ java.lang.Object execute(com.google.cloud.datastore.Query, com.google.cloud.datastore.ReadOption[]) 7004 + + com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator + RetryAndTraceDatastoreRpcDecorator(com.google.cloud.datastore.spi.v1.DatastoreRpc, com.google.cloud.datastore.TraceUtil, com.google.api.gax.retrying.RetrySettings, com.google.cloud.datastore.DatastoreOptions) + RetryAndTraceDatastoreRpcDecorator(com.google.cloud.datastore.spi.v1.DatastoreRpc, com.google.cloud.datastore.telemetry.TraceUtil, com.google.api.gax.retrying.RetrySettings, com.google.cloud.datastore.DatastoreOptions) + 7005 + + + + + com/google/cloud/datastore/TraceUtil + 8001 + diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 595f04ba4..5137728ea 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -16,7 +16,20 @@ google-cloud-datastore + 1.42.0 + + + + + com.google.cloud + gapic-libraries-bom + 1.37.0 + pom + import + + + com.google.api.grpc @@ -38,6 +51,10 @@ com.google.cloud.datastore datastore-v1-proto-client + + com.google.auth + google-auth-library-credentials + io.grpc grpc-api @@ -111,6 +128,19 @@ jsr305 + + + io.opentelemetry + opentelemetry-api + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-context + ${opentelemetry.version} + + + ${project.groupId} @@ -118,7 +148,6 @@ test-jar test - com.google.guava guava-testlib @@ -160,6 +189,61 @@ 1.4.4 test + + com.google.testparameterinjector + test-parameter-injector + 1.16 + test + + + + io.opentelemetry + opentelemetry-sdk + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-sdk-common + ${opentelemetry.version} + test + + + io.opentelemetry + opentelemetry-sdk-testing + ${opentelemetry.version} + test + + + io.opentelemetry + opentelemetry-sdk-trace + ${opentelemetry.version} + test + + + io.opentelemetry + opentelemetry-semconv + 1.1.0-alpha + test + + + + + com.google.cloud.opentelemetry + exporter-trace + 0.15.0 + test + + + com.google.cloud + google-cloud-trace + test + + + com.google.api.grpc + proto-google-cloud-trace-v1 + test + + diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java index a3bfb3796..2bf8389fd 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java @@ -16,6 +16,26 @@ package com.google.cloud.datastore; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_DEFERRED; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_DOCUMENT_COUNT; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_MISSING; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_MORE_RESULTS; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_READ_CONSISTENCY; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_RECEIVED; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_TRANSACTIONAL; +import static com.google.cloud.datastore.telemetry.TraceUtil.ATTRIBUTES_KEY_TRANSACTION_ID; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_ALLOCATE_IDS; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_BEGIN_TRANSACTION; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_COMMIT; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_LOOKUP; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_RESERVE_IDS; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_ROLLBACK; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_RUN_QUERY; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_COMMIT; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_LOOKUP; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_RUN; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_RUN_QUERY; + import com.google.api.core.BetaApi; import com.google.api.gax.retrying.RetrySettings; import com.google.cloud.BaseService; @@ -25,20 +45,23 @@ import com.google.cloud.ServiceOptions; import com.google.cloud.datastore.execution.AggregationQueryExecutor; import com.google.cloud.datastore.spi.v1.DatastoreRpc; +import com.google.cloud.datastore.telemetry.TraceUtil; +import com.google.cloud.datastore.telemetry.TraceUtil.Scope; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.collect.AbstractIterator; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; +import com.google.datastore.v1.CommitResponse; import com.google.datastore.v1.ExplainOptions; import com.google.datastore.v1.ReadOptions; import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.RunQueryResponse; import com.google.datastore.v1.TransactionOptions; import com.google.protobuf.ByteString; -import io.opencensus.common.Scope; -import io.opencensus.trace.Span; -import io.opencensus.trace.Status; +import io.opentelemetry.context.Context; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -50,6 +73,7 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; +import javax.annotation.Nullable; final class DatastoreImpl extends BaseService implements Datastore { @@ -59,7 +83,9 @@ final class DatastoreImpl extends BaseService implements Datas TransactionExceptionHandler.build(); private static final ExceptionHandler TRANSACTION_OPERATION_EXCEPTION_HANDLER = TransactionOperationExceptionHandler.build(); - private final TraceUtil traceUtil = TraceUtil.getInstance(); + + private final com.google.cloud.datastore.telemetry.TraceUtil otelTraceUtil = + getOptions().getTraceUtil(); private final ReadOptionProtoPreparer readOptionProtoPreparer; private final AggregationQueryExecutor aggregationQueryExecutor; @@ -73,7 +99,8 @@ final class DatastoreImpl extends BaseService implements Datas readOptionProtoPreparer = new ReadOptionProtoPreparer(); aggregationQueryExecutor = new AggregationQueryExecutor( - new RetryAndTraceDatastoreRpcDecorator(datastoreRpc, traceUtil, retrySettings, options), + new RetryAndTraceDatastoreRpcDecorator( + datastoreRpc, otelTraceUtil, retrySettings, options), options); } @@ -92,8 +119,68 @@ public Transaction newTransaction() { return new TransactionImpl(this); } - static class ReadWriteTransactionCallable implements Callable { + static class TracedReadWriteTransactionCallable implements Callable { + private final Datastore datastore; + private final TransactionCallable callable; + private volatile TransactionOptions options; + private volatile Transaction transaction; + + private final TraceUtil.Span parentSpan; + + TracedReadWriteTransactionCallable( + Datastore datastore, + TransactionCallable callable, + TransactionOptions options, + @Nullable com.google.cloud.datastore.telemetry.TraceUtil.Span parentSpan) { + this.datastore = datastore; + this.callable = callable; + this.options = options; + this.transaction = null; + this.parentSpan = parentSpan; + } + + Datastore getDatastore() { + return datastore; + } + + TransactionOptions getOptions() { + return options; + } + + Transaction getTransaction() { + return transaction; + } + + void setPrevTransactionId(ByteString transactionId) { + TransactionOptions.ReadWrite readWrite = + TransactionOptions.ReadWrite.newBuilder().setPreviousTransaction(transactionId).build(); + options = options.toBuilder().setReadWrite(readWrite).build(); + } + + @Override + public T call() throws DatastoreException { + try (io.opentelemetry.context.Scope ignored = + Context.current().with(parentSpan.getSpan()).makeCurrent()) { + transaction = datastore.newTransaction(options); + T value = callable.run(transaction); + transaction.commit(); + return value; + } catch (Exception ex) { + transaction.rollback(); + throw DatastoreException.propagateUserException(ex); + } finally { + if (transaction.isActive()) { + transaction.rollback(); + } + if (options != null + && options.getModeCase().equals(TransactionOptions.ModeCase.READ_WRITE)) { + setPrevTransactionId(transaction.getTransactionId()); + } + } + } + } + static class ReadWriteTransactionCallable implements Callable { private final Datastore datastore; private final TransactionCallable callable; private volatile TransactionOptions options; @@ -127,8 +214,8 @@ void setPrevTransactionId(ByteString transactionId) { @Override public T call() throws DatastoreException { - transaction = datastore.newTransaction(options); try { + transaction = datastore.newTransaction(options); T value = callable.run(transaction); transaction.commit(); return value; @@ -149,36 +236,47 @@ public T call() throws DatastoreException { @Override public T runInTransaction(final TransactionCallable callable) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_TRANSACTION); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + TraceUtil.Span span = otelTraceUtil.startSpan(SPAN_NAME_TRANSACTION_RUN); + Callable transactionCallable = + (getOptions().getOpenTelemetryOptions().isEnabled() + ? new TracedReadWriteTransactionCallable( + this, callable, /*transactionOptions=*/ null, span) + : new ReadWriteTransactionCallable(this, callable, /*transactionOptions=*/ null)); + try (Scope ignored = span.makeCurrent()) { return RetryHelper.runWithRetries( - new ReadWriteTransactionCallable(this, callable, null), + transactionCallable, retrySettings, TRANSACTION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @Override public T runInTransaction( final TransactionCallable callable, TransactionOptions transactionOptions) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_TRANSACTION); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + TraceUtil.Span span = otelTraceUtil.startSpan(SPAN_NAME_TRANSACTION_RUN); + + Callable transactionCallable = + (getOptions().getOpenTelemetryOptions().isEnabled() + ? new TracedReadWriteTransactionCallable(this, callable, transactionOptions, span) + : new ReadWriteTransactionCallable(this, callable, transactionOptions)); + + try (Scope ignored = span.makeCurrent()) { return RetryHelper.runWithRetries( - new ReadWriteTransactionCallable(this, callable, transactionOptions), + transactionCallable, retrySettings, TRANSACTION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -236,20 +334,39 @@ public AggregationResults runAggregation( com.google.datastore.v1.RunQueryResponse runQuery( final com.google.datastore.v1.RunQueryRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_RUNQUERY); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { - return RetryHelper.runWithRetries( - () -> datastoreRpc.runQuery(requestPb), - retrySettings, - requestPb.getReadOptions().getTransaction().isEmpty() - ? EXCEPTION_HANDLER - : TRANSACTION_OPERATION_EXCEPTION_HANDLER, - getOptions().getClock()); + ReadOptions readOptions = requestPb.getReadOptions(); + boolean isTransactional = readOptions.hasTransaction() || readOptions.hasNewTransaction(); + String spanName = (isTransactional ? SPAN_NAME_TRANSACTION_RUN_QUERY : SPAN_NAME_RUN_QUERY); + com.google.cloud.datastore.telemetry.TraceUtil.Span span = otelTraceUtil.startSpan(spanName); + + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { + RunQueryResponse response = + RetryHelper.runWithRetries( + () -> datastoreRpc.runQuery(requestPb), + retrySettings, + requestPb.getReadOptions().getTransaction().isEmpty() + ? EXCEPTION_HANDLER + : TRANSACTION_OPERATION_EXCEPTION_HANDLER, + getOptions().getClock()); + span.addEvent( + spanName + " complete.", + new ImmutableMap.Builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, response.getBatch().getEntityResultsCount()) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, isTransactional) + .put(ATTRIBUTES_KEY_READ_CONSISTENCY, readOptions.getReadConsistency().toString()) + .put( + ATTRIBUTES_KEY_TRANSACTION_ID, + (isTransactional + ? requestPb.getReadOptions().getTransaction().toStringUtf8() + : "")) + .put(ATTRIBUTES_KEY_MORE_RESULTS, response.getBatch().getMoreResults().toString()) + .build()); + return response; } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -291,8 +408,9 @@ public List allocateId(IncompleteKey... keys) { private com.google.datastore.v1.AllocateIdsResponse allocateIds( final com.google.datastore.v1.AllocateIdsRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_ALLOCATEIDS); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + com.google.cloud.datastore.telemetry.TraceUtil.Span span = + otelTraceUtil.startSpan(SPAN_NAME_ALLOCATE_IDS); + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -304,10 +422,10 @@ public com.google.datastore.v1.AllocateIdsResponse call() throws DatastoreExcept EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -450,14 +568,27 @@ protected Entity computeNext() { com.google.datastore.v1.LookupResponse lookup( final com.google.datastore.v1.LookupRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_LOOKUP); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + ReadOptions readOptions = requestPb.getReadOptions(); + boolean isTransactional = readOptions.hasTransaction() || readOptions.hasNewTransaction(); + String spanName = (isTransactional ? SPAN_NAME_TRANSACTION_LOOKUP : SPAN_NAME_LOOKUP); + com.google.cloud.datastore.telemetry.TraceUtil.Span span = otelTraceUtil.startSpan(spanName); + + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { return RetryHelper.runWithRetries( - new Callable() { - @Override - public com.google.datastore.v1.LookupResponse call() throws DatastoreException { - return datastoreRpc.lookup(requestPb); - } + () -> { + com.google.datastore.v1.LookupResponse response = datastoreRpc.lookup(requestPb); + span.addEvent( + spanName + " complete.", + new ImmutableMap.Builder() + .put(ATTRIBUTES_KEY_RECEIVED, response.getFoundCount()) + .put(ATTRIBUTES_KEY_MISSING, response.getMissingCount()) + .put(ATTRIBUTES_KEY_DEFERRED, response.getDeferredCount()) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, isTransactional) + .put( + ATTRIBUTES_KEY_TRANSACTION_ID, + isTransactional ? readOptions.getTransaction().toStringUtf8() : "") + .build()); + return response; }, retrySettings, requestPb.getReadOptions().getTransaction().isEmpty() @@ -465,10 +596,10 @@ public com.google.datastore.v1.LookupResponse call() throws DatastoreException { : TRANSACTION_OPERATION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -492,8 +623,9 @@ public List reserveIds(Key... keys) { com.google.datastore.v1.ReserveIdsResponse reserveIds( final com.google.datastore.v1.ReserveIdsRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_RESERVEIDS); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + com.google.cloud.datastore.telemetry.TraceUtil.Span span = + otelTraceUtil.startSpan(SPAN_NAME_RESERVE_IDS); + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -505,10 +637,10 @@ public com.google.datastore.v1.ReserveIdsResponse call() throws DatastoreExcepti EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -602,20 +734,34 @@ private com.google.datastore.v1.CommitResponse commitMutation( com.google.datastore.v1.CommitResponse commit( final com.google.datastore.v1.CommitRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_COMMIT); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { - return RetryHelper.runWithRetries( - () -> datastoreRpc.commit(requestPb), - retrySettings, - requestPb.getTransaction().isEmpty() - ? EXCEPTION_HANDLER - : TRANSACTION_OPERATION_EXCEPTION_HANDLER, - getOptions().getClock()); + final boolean isTransactional = + requestPb.hasTransaction() || requestPb.hasSingleUseTransaction(); + final String spanName = isTransactional ? SPAN_NAME_TRANSACTION_COMMIT : SPAN_NAME_COMMIT; + com.google.cloud.datastore.telemetry.TraceUtil.Span span = otelTraceUtil.startSpan(spanName); + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { + CommitResponse response = + RetryHelper.runWithRetries( + () -> datastoreRpc.commit(requestPb), + retrySettings, + requestPb.getTransaction().isEmpty() + ? EXCEPTION_HANDLER + : TRANSACTION_OPERATION_EXCEPTION_HANDLER, + getOptions().getClock()); + span.addEvent( + spanName + " complete.", + new ImmutableMap.Builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, response.getMutationResultsCount()) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, isTransactional) + .put( + ATTRIBUTES_KEY_TRANSACTION_ID, + isTransactional ? requestPb.getTransaction().toStringUtf8() : "") + .build()); + return response; } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -626,24 +772,19 @@ ByteString requestTransactionId( com.google.datastore.v1.BeginTransactionResponse beginTransaction( final com.google.datastore.v1.BeginTransactionRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_BEGINTRANSACTION); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + com.google.cloud.datastore.telemetry.TraceUtil.Span span = + otelTraceUtil.startSpan(SPAN_NAME_BEGIN_TRANSACTION); + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope scope = span.makeCurrent()) { return RetryHelper.runWithRetries( - new Callable() { - @Override - public com.google.datastore.v1.BeginTransactionResponse call() - throws DatastoreException { - return datastoreRpc.beginTransaction(requestPb); - } - }, + () -> datastoreRpc.beginTransaction(requestPb), retrySettings, EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } @@ -657,8 +798,9 @@ void rollbackTransaction(ByteString transaction) { } void rollback(final com.google.datastore.v1.RollbackRequest requestPb) { - Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_ROLLBACK); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + com.google.cloud.datastore.telemetry.TraceUtil.Span span = + otelTraceUtil.startSpan(SPAN_NAME_ROLLBACK); + try (Scope scope = span.makeCurrent()) { RetryHelper.runWithRetries( new Callable() { @Override @@ -670,11 +812,16 @@ public Void call() throws DatastoreException { retrySettings, EXCEPTION_HANDLER, getOptions().getClock()); + span.addEvent( + SPAN_NAME_ROLLBACK, + new ImmutableMap.Builder() + .put(ATTRIBUTES_KEY_TRANSACTION_ID, requestPb.getTransaction().toStringUtf8()) + .build()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOpenTelemetryOptions.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOpenTelemetryOptions.java new file mode 100644 index 000000000..ac266562e --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreOpenTelemetryOptions.java @@ -0,0 +1,97 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore; + +import io.opentelemetry.api.OpenTelemetry; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class DatastoreOpenTelemetryOptions { + private final boolean enabled; + private final @Nullable OpenTelemetry openTelemetry; + + DatastoreOpenTelemetryOptions(Builder builder) { + this.enabled = builder.enabled; + this.openTelemetry = builder.openTelemetry; + } + + public boolean isEnabled() { + return enabled; + } + + @Nullable + public OpenTelemetry getOpenTelemetry() { + return openTelemetry; + } + + @Nonnull + public DatastoreOpenTelemetryOptions.Builder toBuilder() { + return new DatastoreOpenTelemetryOptions.Builder(this); + } + + @Nonnull + public static DatastoreOpenTelemetryOptions.Builder newBuilder() { + return new DatastoreOpenTelemetryOptions.Builder(); + } + + public static class Builder { + + private boolean enabled; + + @Nullable private OpenTelemetry openTelemetry; + + private Builder() { + enabled = false; + openTelemetry = null; + } + + private Builder(DatastoreOpenTelemetryOptions options) { + this.enabled = options.enabled; + this.openTelemetry = options.openTelemetry; + } + + @Nonnull + public DatastoreOpenTelemetryOptions build() { + return new DatastoreOpenTelemetryOptions(this); + } + + /** + * Sets whether tracing should be enabled. + * + * @param enabled Whether tracing should be enabled. + */ + @Nonnull + public DatastoreOpenTelemetryOptions.Builder setTracingEnabled(boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Sets the {@link OpenTelemetry} to use with this Datastore instance. If telemetry collection + * is enabled, but an `OpenTelemetry` is not provided, the Datastore SDK will attempt to use the + * `GlobalOpenTelemetry`. + * + * @param openTelemetry The OpenTelemetry that should be used by this Datastore instance. + */ + @Nonnull + public DatastoreOpenTelemetryOptions.Builder setOpenTelemetry( + @Nonnull OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + return this; + } + } +} 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 8437c3e22..cef40eedd 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.cloud.ServiceDefaults; import com.google.cloud.ServiceOptions; import com.google.cloud.ServiceRpc; @@ -31,6 +32,8 @@ import java.lang.reflect.Method; import java.util.Objects; import java.util.Set; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; public class DatastoreOptions extends ServiceOptions { @@ -43,6 +46,9 @@ public class DatastoreOptions extends ServiceOptions { private String namespace; private String databaseId; + @Nullable private DatastoreOpenTelemetryOptions openTelemetryOptions = null; + private Builder() {} private Builder(DatastoreOptions options) { super(options); namespace = options.namespace; databaseId = options.databaseId; + this.openTelemetryOptions = options.openTelemetryOptions; } @Override @@ -100,10 +120,30 @@ public Builder setDatabaseId(String databaseId) { this.databaseId = databaseId; return this; } + + /** + * Sets the {@link DatastoreOpenTelemetryOptions} to be used for this Firestore instance. + * + * @param openTelemetryOptions The `DatastoreOpenTelemetryOptions` to use. + */ + @BetaApi + @Nonnull + public Builder setOpenTelemetryOptions( + @Nonnull DatastoreOpenTelemetryOptions openTelemetryOptions) { + this.openTelemetryOptions = openTelemetryOptions; + return this; + } } private DatastoreOptions(Builder builder) { super(DatastoreFactory.class, DatastoreRpcFactory.class, builder, new DatastoreDefaults()); + + this.openTelemetryOptions = + builder.openTelemetryOptions != null + ? builder.openTelemetryOptions + : DatastoreOpenTelemetryOptions.newBuilder().build(); + this.traceUtil = com.google.cloud.datastore.telemetry.TraceUtil.getInstance(this); + namespace = MoreObjects.firstNonNull(builder.namespace, defaultNamespace()); databaseId = MoreObjects.firstNonNull(builder.databaseId, DEFAULT_DATABASE_ID); } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java index c4a85caab..e1ea6e8dd 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java @@ -16,13 +16,13 @@ package com.google.cloud.datastore; import static com.google.cloud.BaseService.EXCEPTION_HANDLER; -import static com.google.cloud.datastore.TraceUtil.SPAN_NAME_RUN_AGGREGATION_QUERY; import com.google.api.core.InternalApi; import com.google.api.gax.retrying.RetrySettings; import com.google.cloud.RetryHelper; import com.google.cloud.RetryHelper.RetryHelperException; import com.google.cloud.datastore.spi.v1.DatastoreRpc; +import com.google.cloud.datastore.telemetry.TraceUtil; import com.google.datastore.v1.AllocateIdsRequest; import com.google.datastore.v1.AllocateIdsResponse; import com.google.datastore.v1.BeginTransactionRequest; @@ -31,6 +31,7 @@ import com.google.datastore.v1.CommitResponse; import com.google.datastore.v1.LookupRequest; import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReadOptions; import com.google.datastore.v1.ReserveIdsRequest; import com.google.datastore.v1.ReserveIdsResponse; import com.google.datastore.v1.RollbackRequest; @@ -39,9 +40,6 @@ import com.google.datastore.v1.RunAggregationQueryResponse; import com.google.datastore.v1.RunQueryRequest; import com.google.datastore.v1.RunQueryResponse; -import io.opencensus.common.Scope; -import io.opencensus.trace.Span; -import io.opencensus.trace.Status; import java.util.concurrent.Callable; /** @@ -52,19 +50,19 @@ public class RetryAndTraceDatastoreRpcDecorator implements DatastoreRpc { private final DatastoreRpc datastoreRpc; - private final TraceUtil traceUtil; + private final com.google.cloud.datastore.telemetry.TraceUtil otelTraceUtil; private final RetrySettings retrySettings; private final DatastoreOptions datastoreOptions; public RetryAndTraceDatastoreRpcDecorator( DatastoreRpc datastoreRpc, - TraceUtil traceUtil, + TraceUtil otelTraceUtil, RetrySettings retrySettings, DatastoreOptions datastoreOptions) { this.datastoreRpc = datastoreRpc; - this.traceUtil = traceUtil; this.retrySettings = retrySettings; this.datastoreOptions = datastoreOptions; + this.otelTraceUtil = otelTraceUtil; } @Override @@ -105,20 +103,26 @@ public RunQueryResponse runQuery(RunQueryRequest request) { @Override public RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryRequest request) { - return invokeRpc( - () -> datastoreRpc.runAggregationQuery(request), SPAN_NAME_RUN_AGGREGATION_QUERY); + ReadOptions readOptions = request.getReadOptions(); + boolean isTransactional = readOptions.hasTransaction() || readOptions.hasNewTransaction(); + String spanName = + (isTransactional + ? com.google.cloud.datastore.telemetry.TraceUtil + .SPAN_NAME_TRANSACTION_RUN_AGGREGATION_QUERY + : com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_RUN_AGGREGATION_QUERY); + return invokeRpc(() -> datastoreRpc.runAggregationQuery(request), spanName); } public O invokeRpc(Callable block, String startSpan) { - Span span = traceUtil.startSpan(startSpan); - try (Scope scope = traceUtil.getTracer().withSpan(span)) { + com.google.cloud.datastore.telemetry.TraceUtil.Span span = otelTraceUtil.startSpan(startSpan); + try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { return RetryHelper.runWithRetries( block, this.retrySettings, EXCEPTION_HANDLER, this.datastoreOptions.getClock()); } catch (RetryHelperException e) { - span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); + span.end(e); throw DatastoreException.translateAndThrow(e); } finally { - span.end(TraceUtil.END_SPAN_OPTIONS); + span.end(); } } } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java deleted file mode 100644 index 57525d15d..000000000 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.cloud.datastore; - -import com.google.cloud.datastore.spi.v1.HttpDatastoreRpc; -import io.opencensus.trace.EndSpanOptions; -import io.opencensus.trace.Span; -import io.opencensus.trace.Tracer; -import io.opencensus.trace.Tracing; - -/** - * Helper class for tracing utility. It is used for instrumenting {@link HttpDatastoreRpc} with - * OpenCensus APIs. - * - *

TraceUtil instances are created by the {@link TraceUtil#getInstance()} method. - */ -public class TraceUtil { - private final Tracer tracer = Tracing.getTracer(); - private static final TraceUtil traceUtil = new TraceUtil(); - static final String SPAN_NAME_ALLOCATEIDS = "CloudDatastoreOperation.allocateIds"; - static final String SPAN_NAME_TRANSACTION = "CloudDatastoreOperation.readWriteTransaction"; - static final String SPAN_NAME_BEGINTRANSACTION = "CloudDatastoreOperation.beginTransaction"; - static final String SPAN_NAME_COMMIT = "CloudDatastoreOperation.commit"; - static final String SPAN_NAME_LOOKUP = "CloudDatastoreOperation.lookup"; - static final String SPAN_NAME_RESERVEIDS = "CloudDatastoreOperation.reserveIds"; - static final String SPAN_NAME_ROLLBACK = "CloudDatastoreOperation.rollback"; - static final String SPAN_NAME_RUNQUERY = "CloudDatastoreOperation.runQuery"; - static final String SPAN_NAME_RUN_AGGREGATION_QUERY = - "CloudDatastoreOperation.runAggregationQuery"; - static final EndSpanOptions END_SPAN_OPTIONS = - EndSpanOptions.builder().setSampleToLocalSpanStore(true).build(); - - /** - * Starts a new span. - * - * @param spanName The name of the returned Span. - * @return The newly created {@link Span}. - */ - protected Span startSpan(String spanName) { - return tracer.spanBuilder(spanName).startSpan(); - } - - /** - * Return the global {@link Tracer}. - * - * @return The global {@link Tracer}. - */ - public Tracer getTracer() { - return tracer; - } - - /** - * Return TraceUtil Object. - * - * @return An instance of {@link TraceUtil} - */ - public static TraceUtil getInstance() { - return traceUtil; - } - - private TraceUtil() {} -} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TransactionImpl.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TransactionImpl.java index f08a908ec..e730db81f 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TransactionImpl.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TransactionImpl.java @@ -20,6 +20,7 @@ import com.google.api.core.BetaApi; import com.google.cloud.datastore.models.ExplainOptions; +import com.google.cloud.datastore.telemetry.TraceUtil; import com.google.common.collect.ImmutableList; import com.google.datastore.v1.ReadOptions; import com.google.datastore.v1.TransactionOptions; @@ -28,6 +29,7 @@ import java.util.Iterator; import java.util.List; import java.util.Optional; +import javax.annotation.Nonnull; final class TransactionImpl extends BaseDatastoreBatchWriter implements Transaction { @@ -37,6 +39,8 @@ final class TransactionImpl extends BaseDatastoreBatchWriter implements Transact private final ReadOptionProtoPreparer readOptionProtoPreparer; + @Nonnull private final TraceUtil traceUtil; + static class ResponseImpl implements Transaction.Response { private final com.google.datastore.v1.CommitResponse response; @@ -78,6 +82,7 @@ public List getGeneratedKeys() { transactionId = datastore.requestTransactionId(requestPb); this.readOptionProtoPreparer = new ReadOptionProtoPreparer(); + this.traceUtil = datastore.getOptions().getTraceUtil(); } @Override diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index fd3cdc658..d927a2d7f 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -21,7 +21,6 @@ import com.google.api.client.http.HttpTransport; import com.google.cloud.datastore.DatastoreException; import com.google.cloud.datastore.DatastoreOptions; -import com.google.cloud.datastore.TraceUtil; import com.google.cloud.http.CensusHttpModule; import com.google.cloud.http.HttpTransportOptions; import com.google.datastore.v1.AllocateIdsRequest; @@ -40,6 +39,7 @@ import com.google.datastore.v1.RunAggregationQueryResponse; import com.google.datastore.v1.RunQueryRequest; import com.google.datastore.v1.RunQueryResponse; +import io.opencensus.trace.Tracing; import java.io.IOException; import java.net.InetAddress; import java.net.URL; @@ -80,8 +80,7 @@ public HttpDatastoreRpc(DatastoreOptions options) { private HttpRequestInitializer getHttpRequestInitializer( final DatastoreOptions options, HttpTransportOptions httpTransportOptions) { // Open Census initialization - CensusHttpModule censusHttpModule = - new CensusHttpModule(TraceUtil.getInstance().getTracer(), true); + CensusHttpModule censusHttpModule = new CensusHttpModule(Tracing.getTracer(), true); final HttpRequestInitializer censusHttpModuleHttpRequestInitializer = censusHttpModule.getHttpRequestInitializer( httpTransportOptions.getHttpRequestInitializer(options)); diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/DisabledTraceUtil.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/DisabledTraceUtil.java new file mode 100644 index 000000000..ebb630515 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/DisabledTraceUtil.java @@ -0,0 +1,131 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.telemetry; + +import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; +import com.google.api.core.InternalApi; +import com.google.cloud.datastore.telemetry.TraceUtil.Context; +import io.grpc.ManagedChannelBuilder; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanBuilder; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.api.trace.TracerProvider; +import java.util.Map; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +/** + * Tracing utility implementation, used to stub out tracing instrumentation when tracing is + * disabled. + */ +@InternalApi +public class DisabledTraceUtil implements TraceUtil { + static class Span implements TraceUtil.Span { + @Override + public void end() {} + + @Override + public void end(Throwable error) {} + + @Override + public void endAtFuture(ApiFuture futureValue) {} + + @Override + public TraceUtil.Span addEvent(String name) { + return this; + } + + @Override + public TraceUtil.Span addEvent(String name, Map attributes) { + return this; + } + + @Override + public TraceUtil.Span setAttribute(String key, int value) { + return this; + } + + @Override + public TraceUtil.Span setAttribute(String key, String value) { + return this; + } + + @Override + public TraceUtil.Span setAttribute(String key, boolean value) { + return this; + } + + public io.opentelemetry.api.trace.Span getSpan() { + return null; + } + + @Override + public Scope makeCurrent() { + return new Scope(); + } + } + + static class Context implements TraceUtil.Context { + @Override + public Scope makeCurrent() { + return new Scope(); + } + } + + static class Scope implements TraceUtil.Scope { + @Override + public void close() {} + } + + @Nullable + @Override + public ApiFunction getChannelConfigurator() { + return null; + } + + @Override + public Span startSpan(String spanName) { + return new Span(); + } + + @Override + public TraceUtil.Span startSpan(String spanName, TraceUtil.Span parentSpan) { + return new Span(); + } + + public SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder) { + return getTracer().spanBuilder("TRACING_DISABLED_NO_OP"); + } + + @Nonnull + @Override + public TraceUtil.Span getCurrentSpan() { + return new Span(); + } + + @Nonnull + @Override + public TraceUtil.Context getCurrentContext() { + return new Context(); + } + + @Override + public Tracer getTracer() { + return TracerProvider.noop().get(LIBRARY_NAME); + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java new file mode 100644 index 000000000..40fc7308e --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/EnabledTraceUtil.java @@ -0,0 +1,323 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.telemetry; + +import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; +import com.google.api.core.ApiFutureCallback; +import com.google.api.core.ApiFutures; +import com.google.api.core.InternalApi; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.telemetry.TraceUtil.Context; +import com.google.cloud.datastore.telemetry.TraceUtil.Scope; +import com.google.cloud.datastore.telemetry.TraceUtil.Span; +import com.google.common.base.Throwables; +import io.grpc.ManagedChannelBuilder; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.AttributesBuilder; +import io.opentelemetry.api.trace.SpanBuilder; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.api.trace.Tracer; +import java.util.Map; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +/** + * Tracing utility implementation, used to stub out tracing instrumentation when tracing is enabled. + */ +@InternalApi +public class EnabledTraceUtil implements TraceUtil { + private final Tracer tracer; + private final OpenTelemetry openTelemetry; + private final DatastoreOptions datastoreOptions; + + EnabledTraceUtil(DatastoreOptions datastoreOptions) { + OpenTelemetry openTelemetry = datastoreOptions.getOpenTelemetryOptions().getOpenTelemetry(); + + // If tracing is enabled, but an OpenTelemetry instance is not provided, fall back + // to using GlobalOpenTelemetry. + if (openTelemetry == null) { + openTelemetry = GlobalOpenTelemetry.get(); + } + + this.datastoreOptions = datastoreOptions; + this.openTelemetry = openTelemetry; + this.tracer = openTelemetry.getTracer(LIBRARY_NAME); + } + + public OpenTelemetry getOpenTelemetry() { + return openTelemetry; + } + + @Override + @Nullable + public ApiFunction getChannelConfigurator() { + // TODO(jimit) Update this to return a gRPC Channel Configurator after gRPC upgrade. + return null; + } + + static class Span implements TraceUtil.Span { + private final io.opentelemetry.api.trace.Span span; + private final String spanName; + + public Span(io.opentelemetry.api.trace.Span span, String spanName) { + this.span = span; + this.spanName = spanName; + } + + @Override + public io.opentelemetry.api.trace.Span getSpan() { + return this.span; + } + + /** Ends this span. */ + @Override + public void end() { + span.end(); + } + + /** Ends this span in an error. */ + @Override + public void end(Throwable error) { + span.setStatus(StatusCode.ERROR, error.getMessage()); + span.recordException( + error, + Attributes.builder() + .put("exception.message", error.getMessage()) + .put("exception.type", error.getClass().getName()) + .put("exception.stacktrace", Throwables.getStackTraceAsString(error)) + .build()); + span.end(); + } + + /** + * If an operation ends in the future, its relevant span should end _after_ the future has been + * completed. This method "appends" the span completion code at the completion of the given + * future. In order for telemetry info to be recorded, the future returned by this method should + * be completed. + */ + @Override + public void endAtFuture(ApiFuture futureValue) { + io.opentelemetry.context.Context asyncContext = io.opentelemetry.context.Context.current(); + ApiFutures.addCallback( + futureValue, + new ApiFutureCallback() { + @Override + public void onFailure(Throwable t) { + try (io.opentelemetry.context.Scope scope = asyncContext.makeCurrent()) { + span.addEvent(spanName + " failed."); + end(t); + } + } + + @Override + public void onSuccess(T result) { + try (io.opentelemetry.context.Scope scope = asyncContext.makeCurrent()) { + span.addEvent(spanName + " succeeded."); + end(); + } + } + }); + } + + /** Adds the given event to this span. */ + @Override + public TraceUtil.Span addEvent(String name) { + span.addEvent(name); + return this; + } + + @Override + public TraceUtil.Span addEvent(String name, Map attributes) { + AttributesBuilder attributesBuilder = Attributes.builder(); + attributes.forEach( + (key, value) -> { + if (value instanceof Integer) { + attributesBuilder.put(key, (int) value); + } else if (value instanceof Long) { + attributesBuilder.put(key, (long) value); + } else if (value instanceof Double) { + attributesBuilder.put(key, (double) value); + } else if (value instanceof Float) { + attributesBuilder.put(key, (float) value); + } else if (value instanceof Boolean) { + attributesBuilder.put(key, (boolean) value); + } else if (value instanceof String) { + attributesBuilder.put(key, (String) value); + } else { + // OpenTelemetry APIs do not support any other type. + throw new IllegalArgumentException( + "Unknown attribute type:" + value.getClass().getSimpleName()); + } + }); + span.addEvent(name, attributesBuilder.build()); + return this; + } + + @Override + public TraceUtil.Span setAttribute(String key, int value) { + span.setAttribute(ATTRIBUTE_SERVICE_PREFIX + key, value); + return this; + } + + @Override + public TraceUtil.Span setAttribute(String key, String value) { + span.setAttribute(ATTRIBUTE_SERVICE_PREFIX + key, value); + return this; + } + + @Override + public TraceUtil.Span setAttribute(String key, boolean value) { + span.setAttribute(ATTRIBUTE_SERVICE_PREFIX + key, value); + return this; + } + + @Override + public Scope makeCurrent() { + try (io.opentelemetry.context.Scope scope = span.makeCurrent()) { + return new Scope(scope); + } + } + } + + static class Scope implements TraceUtil.Scope { + private final io.opentelemetry.context.Scope scope; + + Scope(io.opentelemetry.context.Scope scope) { + this.scope = scope; + } + + @Override + public void close() { + scope.close(); + } + } + + static class Context implements TraceUtil.Context { + private final io.opentelemetry.context.Context context; + + Context(io.opentelemetry.context.Context context) { + this.context = context; + } + + @Override + public Scope makeCurrent() { + try (io.opentelemetry.context.Scope scope = context.makeCurrent()) { + return new Scope(scope); + } + } + } + + /** Applies the current Datastore instance settings as attributes to the current Span */ + @Override + public SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder) { + spanBuilder = + spanBuilder.setAllAttributes( + Attributes.builder() + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.databaseId", + datastoreOptions.getDatabaseId()) + .put(ATTRIBUTE_SERVICE_PREFIX + "settings.host", datastoreOptions.getHost()) + .build()); + + if (datastoreOptions.getCredentials() != null) { + spanBuilder = + spanBuilder.setAttribute( + ATTRIBUTE_SERVICE_PREFIX + "settings.credentials.authenticationType", + datastoreOptions.getCredentials().getAuthenticationType()); + } + + if (datastoreOptions.getRetrySettings() != null) { + spanBuilder = + spanBuilder.setAllAttributes( + Attributes.builder() + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.initialRetryDelay", + datastoreOptions.getRetrySettings().getInitialRetryDelay().toString()) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.maxRetryDelay", + datastoreOptions.getRetrySettings().getMaxRetryDelay().toString()) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.retryDelayMultiplier", + String.valueOf(datastoreOptions.getRetrySettings().getRetryDelayMultiplier())) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.maxAttempts", + String.valueOf(datastoreOptions.getRetrySettings().getMaxAttempts())) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.initialRpcTimeout", + datastoreOptions.getRetrySettings().getInitialRpcTimeout().toString()) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.maxRpcTimeout", + datastoreOptions.getRetrySettings().getMaxRpcTimeout().toString()) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.rpcTimeoutMultiplier", + String.valueOf(datastoreOptions.getRetrySettings().getRpcTimeoutMultiplier())) + .put( + ATTRIBUTE_SERVICE_PREFIX + "settings.retrySettings.totalTimeout", + datastoreOptions.getRetrySettings().getTotalTimeout().toString()) + .build()); + } + + // Add the memory utilization of the client at the time this trace was collected. + long totalMemory = Runtime.getRuntime().totalMemory(); + long freeMemory = Runtime.getRuntime().freeMemory(); + double memoryUtilization = ((double) (totalMemory - freeMemory)) / totalMemory; + spanBuilder.setAttribute( + ATTRIBUTE_SERVICE_PREFIX + "memoryUtilization", + String.format("%.2f", memoryUtilization * 100) + "%"); + + return spanBuilder; + } + + @Override + public Span startSpan(String spanName) { + SpanBuilder spanBuilder = tracer.spanBuilder(spanName).setSpanKind(SpanKind.PRODUCER); + io.opentelemetry.api.trace.Span span = + addSettingsAttributesToCurrentSpan(spanBuilder).startSpan(); + return new Span(span, spanName); + } + + @Override + public TraceUtil.Span startSpan(String spanName, TraceUtil.Span parentSpan) { + SpanBuilder spanBuilder = + tracer + .spanBuilder(spanName) + .setSpanKind(SpanKind.PRODUCER) + .setParent(io.opentelemetry.context.Context.current().with(parentSpan.getSpan())); + return new Span(addSettingsAttributesToCurrentSpan(spanBuilder).startSpan(), spanName); + } + + @Nonnull + @Override + public TraceUtil.Span getCurrentSpan() { + return new Span(io.opentelemetry.api.trace.Span.current(), ""); + } + + @Nonnull + @Override + public TraceUtil.Context getCurrentContext() { + return new Context(io.opentelemetry.context.Context.current()); + } + + @Override + public Tracer getTracer() { + return this.tracer; + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/TraceUtil.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/TraceUtil.java new file mode 100644 index 000000000..fd616a733 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/telemetry/TraceUtil.java @@ -0,0 +1,167 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.telemetry; + +import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; +import com.google.api.core.InternalExtensionOnly; +import com.google.cloud.datastore.DatastoreOptions; +import io.grpc.ManagedChannelBuilder; +import io.opentelemetry.api.trace.SpanBuilder; +import io.opentelemetry.api.trace.Tracer; +import java.util.Map; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +/** Utility interface to manage OpenTelemetry tracing instrumentation based on the configuration. */ +@InternalExtensionOnly +public interface TraceUtil { + static final String ATTRIBUTE_SERVICE_PREFIX = "gcp.datastore."; + static final String ENABLE_TRACING_ENV_VAR = "DATASTORE_ENABLE_TRACING"; + static final String LIBRARY_NAME = "com.google.cloud.datastore"; + static final String SPAN_NAME_LOOKUP = "Lookup"; + static final String SPAN_NAME_ALLOCATE_IDS = "AllocateIds"; + static final String SPAN_NAME_RESERVE_IDS = "ReserveIds"; + static final String SPAN_NAME_COMMIT = "Commit"; + static final String SPAN_NAME_RUN_QUERY = "RunQuery"; + static final String SPAN_NAME_RUN_AGGREGATION_QUERY = "RunAggregationQuery"; + static final String SPAN_NAME_TRANSACTION_RUN = "Transaction.Run"; + static final String SPAN_NAME_BEGIN_TRANSACTION = "Transaction.Begin"; + static final String SPAN_NAME_TRANSACTION_LOOKUP = "Transaction.Lookup"; + static final String SPAN_NAME_TRANSACTION_COMMIT = "Transaction.Commit"; + static final String SPAN_NAME_TRANSACTION_RUN_QUERY = "Transaction.RunQuery"; + static final String SPAN_NAME_ROLLBACK = "Transaction.Rollback"; + static final String SPAN_NAME_TRANSACTION_RUN_AGGREGATION_QUERY = + "Transaction.RunAggregationQuery"; + static final String ATTRIBUTES_KEY_DOCUMENT_COUNT = "doc_count"; + static final String ATTRIBUTES_KEY_TRANSACTIONAL = "transactional"; + static final String ATTRIBUTES_KEY_TRANSACTION_ID = "transaction_id"; + static final String ATTRIBUTES_KEY_READ_CONSISTENCY = "read_consistency"; + static final String ATTRIBUTES_KEY_RECEIVED = "Received"; + static final String ATTRIBUTES_KEY_MISSING = "Missing"; + static final String ATTRIBUTES_KEY_DEFERRED = "Deferred"; + static final String ATTRIBUTES_KEY_MORE_RESULTS = "mor_results"; + + /** + * Creates and returns an instance of the TraceUtil class. + * + * @param datastoreOptions The DatastoreOptions object that is requesting an instance of + * TraceUtil. + * @return An instance of the TraceUtil class. + */ + static TraceUtil getInstance(@Nonnull DatastoreOptions datastoreOptions) { + boolean createEnabledInstance = datastoreOptions.getOpenTelemetryOptions().isEnabled(); + + // The environment variable can override options to enable/disable telemetry collection. + String enableTracingEnvVar = System.getenv(ENABLE_TRACING_ENV_VAR); + if (enableTracingEnvVar != null) { + if (enableTracingEnvVar.equalsIgnoreCase("true") + || enableTracingEnvVar.equalsIgnoreCase("on")) { + createEnabledInstance = true; + } + if (enableTracingEnvVar.equalsIgnoreCase("false") + || enableTracingEnvVar.equalsIgnoreCase("off")) { + createEnabledInstance = false; + } + } + + if (createEnabledInstance) { + return new EnabledTraceUtil(datastoreOptions); + } else { + return new DisabledTraceUtil(); + } + } + + /** Returns a channel configurator for gRPC, or {@code null} if tracing is disabled. */ + @Nullable + ApiFunction getChannelConfigurator(); + + /** Represents a trace span. */ + interface Span { + /** Adds the given event to this span. */ + Span addEvent(String name); + + /** Adds the given event with the given attributes to this span. */ + Span addEvent(String name, Map attributes); + + /** Adds the given attribute to this span. */ + Span setAttribute(String key, int value); + + /** Adds the given attribute to this span. */ + Span setAttribute(String key, String value); + + /** Adds the given attribute to this span. */ + Span setAttribute(String key, boolean value); + + io.opentelemetry.api.trace.Span getSpan(); + + /** Marks this span as the current span. */ + Scope makeCurrent(); + + /** Ends this span. */ + void end(); + + /** Ends this span in an error. */ + void end(Throwable error); + + /** + * If an operation ends in the future, its relevant span should end _after_ the future has been + * completed. This method "appends" the span completion code at the completion of the given + * future. In order for telemetry info to be recorded, the future returned by this method should + * be completed. + */ + void endAtFuture(ApiFuture futureValue); + } + + /** Represents a trace context. */ + interface Context { + /** Makes this context the current context. */ + Scope makeCurrent(); + } + + /** Represents a trace scope. */ + interface Scope extends AutoCloseable { + /** Closes the current scope. */ + void close(); + } + + /** Starts a new span with the given name, sets it as the current span, and returns it. */ + Span startSpan(String spanName); + + /** + * Starts a new span with the given name and the span represented by the parentSpan as its parent, + * sets it as the current span and returns it. + */ + Span startSpan(String spanName, Span parentSpan); + + /** + * Adds common SpanAttributes to the current span, useful when hand-creating a new Span without + * using the TraceUtil.Span interface. + */ + SpanBuilder addSettingsAttributesToCurrentSpan(SpanBuilder spanBuilder); + + /** Returns the current span. */ + @Nonnull + Span getCurrentSpan(); + + /** Returns the current Context. */ + @Nonnull + Context getCurrentContext(); + + /** Returns the current OpenTelemetry Tracer when OpenTelemetry SDK is provided. */ + Tracer getTracer(); +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java index 596ce96d8..6167cedca 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java @@ -19,13 +19,16 @@ import com.google.api.core.InternalApi; import com.google.api.gax.retrying.RetrySettings; import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOpenTelemetryOptions; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.Key; import com.google.cloud.datastore.Query; import com.google.cloud.datastore.QueryResults; import com.google.cloud.datastore.StructuredQuery; import com.google.cloud.http.HttpTransportOptions; +import io.opentelemetry.sdk.OpenTelemetrySdk; import java.util.UUID; +import javax.annotation.Nullable; import org.threeten.bp.Duration; /** @@ -38,13 +41,13 @@ * RetrySettings#getTotalTimeout()} is {@code 120000} and {@link * RetrySettings#getInitialRetryDelay()} is {@code 250}. {@link * HttpTransportOptions#getConnectTimeout()} and {@link HttpTransportOptions#getReadTimeout()} are - * both both set to {@code 60000}. + * both both set to {@code 60000}. If an OpenTelemetrySdk object is passed in, OpenTelemetry Trace + * collection will be enabled for the Client application. * *

Internal testing use only */ @InternalApi public class RemoteDatastoreHelper { - private final DatastoreOptions options; private final Datastore datastore; private final String namespace; @@ -78,18 +81,30 @@ public static RemoteDatastoreHelper create() { } /** Creates a {@code RemoteStorageHelper} object. */ - public static RemoteDatastoreHelper create(String databaseId) { + public static RemoteDatastoreHelper create( + String databaseId, @Nullable OpenTelemetrySdk openTelemetrySdk) { HttpTransportOptions transportOptions = DatastoreOptions.getDefaultHttpTransportOptions(); transportOptions = transportOptions.toBuilder().setConnectTimeout(60000).setReadTimeout(60000).build(); - DatastoreOptions datastoreOption = + DatastoreOptions.Builder datastoreOptionBuilder = DatastoreOptions.newBuilder() .setDatabaseId(databaseId) .setNamespace(UUID.randomUUID().toString()) .setRetrySettings(retrySettings()) - .setTransportOptions(transportOptions) - .build(); - return new RemoteDatastoreHelper(datastoreOption); + .setTransportOptions(transportOptions); + + if (openTelemetrySdk != null) { + datastoreOptionBuilder.setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder() + .setOpenTelemetry(openTelemetrySdk) + .setTracingEnabled(true) + .build()); + } + return new RemoteDatastoreHelper(datastoreOptionBuilder.build()); + } + + public static RemoteDatastoreHelper create(String databaseId) { + return create(databaseId, /*openTelemetrySdk=*/ null); } private static RetrySettings retrySettings() { diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java index a545580e2..85703f739 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java @@ -70,6 +70,20 @@ public void testHost() { assertEquals("http://localhost:" + PORT, options.build().getHost()); } + @Test + public void testOpenTelemetryOptionsEnabled() { + options.setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder().setTracingEnabled(true).build()); + assertTrue(options.build().getOpenTelemetryOptions().isEnabled()); + } + + @Test + public void testOpenTelemetryOptionsDisabled() { + options.setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder().setTracingEnabled(false).build()); + assertTrue(!options.build().getOpenTelemetryOptions().isEnabled()); + } + @Test public void testNamespace() { assertTrue(options.build().getNamespace().isEmpty()); diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index cd768f986..d88e1d1ec 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -176,6 +176,8 @@ public static void beforeClass() throws IOException, InterruptedException { public void setUp() { rpcFactoryMock = EasyMock.createStrictMock(DatastoreRpcFactory.class); rpcMock = EasyMock.createStrictMock(DatastoreRpc.class); + DatastoreOpenTelemetryOptions.Builder otelOptionsBuilder = + DatastoreOpenTelemetryOptions.newBuilder(); rpcMockOptions = options .toBuilder() diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecoratorTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecoratorTest.java deleted file mode 100644 index b86355afa..000000000 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecoratorTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.cloud.datastore; - -import static com.google.cloud.datastore.TraceUtil.END_SPAN_OPTIONS; -import static com.google.cloud.datastore.TraceUtil.SPAN_NAME_RUN_AGGREGATION_QUERY; -import static com.google.common.truth.Truth.assertThat; -import static com.google.rpc.Code.UNAVAILABLE; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.createStrictMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; - -import com.google.api.gax.retrying.RetrySettings; -import com.google.cloud.datastore.spi.v1.DatastoreRpc; -import com.google.datastore.v1.RunAggregationQueryRequest; -import com.google.datastore.v1.RunAggregationQueryResponse; -import io.opencensus.trace.Span; -import io.opencensus.trace.Tracer; -import org.junit.Before; -import org.junit.Test; - -public class RetryAndTraceDatastoreRpcDecoratorTest { - - public static final int MAX_ATTEMPTS = 3; - private DatastoreRpc mockDatastoreRpc; - private TraceUtil mockTraceUtil; - private DatastoreOptions datastoreOptions = - DatastoreOptions.newBuilder().setProjectId("project-id").build(); - private RetrySettings retrySettings = - RetrySettings.newBuilder().setMaxAttempts(MAX_ATTEMPTS).build(); - - private RetryAndTraceDatastoreRpcDecorator datastoreRpcDecorator; - - @Before - public void setUp() throws Exception { - mockDatastoreRpc = createStrictMock(DatastoreRpc.class); - mockTraceUtil = createStrictMock(TraceUtil.class); - datastoreRpcDecorator = - new RetryAndTraceDatastoreRpcDecorator( - mockDatastoreRpc, mockTraceUtil, retrySettings, datastoreOptions); - } - - @Test - public void testRunAggregationQuery() { - Span mockSpan = createStrictMock(Span.class); - RunAggregationQueryRequest aggregationQueryRequest = - RunAggregationQueryRequest.getDefaultInstance(); - RunAggregationQueryResponse aggregationQueryResponse = - RunAggregationQueryResponse.getDefaultInstance(); - - expect(mockDatastoreRpc.runAggregationQuery(aggregationQueryRequest)) - .andThrow( - new DatastoreException( - UNAVAILABLE.getNumber(), "API not accessible currently", UNAVAILABLE.name())) - .times(2) - .andReturn(aggregationQueryResponse); - expect(mockTraceUtil.startSpan(SPAN_NAME_RUN_AGGREGATION_QUERY)).andReturn(mockSpan); - expect(mockTraceUtil.getTracer()).andReturn(createNiceMock(Tracer.class)); - mockSpan.end(END_SPAN_OPTIONS); - - replay(mockDatastoreRpc, mockTraceUtil, mockSpan); - - RunAggregationQueryResponse actualAggregationQueryResponse = - datastoreRpcDecorator.runAggregationQuery(aggregationQueryRequest); - - assertThat(actualAggregationQueryResponse).isSameInstanceAs(aggregationQueryResponse); - verify(mockDatastoreRpc, mockTraceUtil, mockSpan); - } -} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITE2ETracingTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITE2ETracingTest.java new file mode 100644 index 000000000..bee54a1f0 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITE2ETracingTest.java @@ -0,0 +1,1009 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.it; + +import static com.google.cloud.datastore.aggregation.Aggregation.count; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_ALLOCATE_IDS; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_BEGIN_TRANSACTION; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_COMMIT; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_LOOKUP; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_RESERVE_IDS; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_ROLLBACK; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_RUN_AGGREGATION_QUERY; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_RUN_QUERY; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_COMMIT; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_LOOKUP; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_RUN; +import static com.google.cloud.datastore.telemetry.TraceUtil.SPAN_NAME_TRANSACTION_RUN_QUERY; +import static com.google.common.truth.Truth.assertThat; +import static io.opentelemetry.semconv.resource.attributes.ResourceAttributes.SERVICE_NAME; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import com.google.api.gax.rpc.NotFoundException; +import com.google.cloud.datastore.AggregationQuery; +import com.google.cloud.datastore.AggregationResult; +import com.google.cloud.datastore.AggregationResults; +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.Entity; +import com.google.cloud.datastore.IncompleteKey; +import com.google.cloud.datastore.Key; +import com.google.cloud.datastore.KeyFactory; +import com.google.cloud.datastore.Query; +import com.google.cloud.datastore.QueryResults; +import com.google.cloud.datastore.ReadOption; +import com.google.cloud.datastore.StructuredQuery; +import com.google.cloud.datastore.StructuredQuery.PropertyFilter; +import com.google.cloud.datastore.Transaction; +import com.google.cloud.datastore.testing.RemoteDatastoreHelper; +import com.google.cloud.opentelemetry.trace.TraceConfiguration; +import com.google.cloud.opentelemetry.trace.TraceExporter; +import com.google.cloud.trace.v1.TraceServiceClient; +import com.google.common.base.Preconditions; +import com.google.devtools.cloudtrace.v1.Trace; +import com.google.devtools.cloudtrace.v1.TraceSpan; +import com.google.testing.junit.testparameterinjector.TestParameter; +import com.google.testing.junit.testparameterinjector.TestParameterInjector; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Context; +import io.opentelemetry.context.Scope; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; +import io.opentelemetry.sdk.trace.samplers.Sampler; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.TreeMap; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +// This End-to-End test verifies Client-side Tracing Functionality instrumented using the +// OpenTelemetry API. +// The test depends on the following external APIs/Services: +// 1. Java OpenTelemetry SDK +// 2. Cloud Trace Exporter +// 3. TraceServiceClient from Cloud Trace API v1. +// +// Permissions required to run this test (https://cloud.google.com/trace/docs/iam#trace-roles): +// 1. gcloud auth application-default login must be run with the test user. +// 2. To write traces, test user must have one of roles/cloudtrace.[admin|agent|user] roles. +// 3. To read traces, test user must have one of roles/cloudtrace.[admin|user] roles. +// +// Each test-case has the following workflow: +// 1. OpenTelemetry SDK is initialized with Cloud Trace Exporter and 100% Trace Sampling +// 2. On initialization, Datastore client is provided the OpenTelemetry SDK object from (1) +// 3. A custom TraceID is generated and injected using a custom SpanContext +// 4. Datastore operations are run inside a root TraceSpan created using the custom SpanContext from +// (3). +// 5. Traces are read-back using TraceServiceClient and verified against expected Call Stacks. +@RunWith(TestParameterInjector.class) +public class ITE2ETracingTest { + + protected boolean isUsingGlobalOpenTelemetrySDK() { + return useGlobalOpenTelemetrySDK; + } + + protected String datastoreNamedDatabase() { + return datastoreNamedDatabase; + } + + // Helper class to track call-stacks in a trace + protected static class TraceContainer { + + // Maps Span ID to TraceSpan + private final Map idSpanMap; + + // Maps Parent Span ID to a list of Child SpanIDs, useful for top-down traversal + private final Map> parentChildIdMap; + + // Tracks the Root Span ID + private long rootId; + + public TraceContainer(String rootSpanName, Trace trace) { + idSpanMap = new TreeMap<>(); + parentChildIdMap = new TreeMap<>(); + for (TraceSpan span : trace.getSpansList()) { + long spanId = span.getSpanId(); + idSpanMap.put(spanId, span); + if (rootSpanName.equals(span.getName())) { + rootId = span.getSpanId(); + } + + // Add self as a child of the parent span + if (!parentChildIdMap.containsKey(span.getParentSpanId())) { + parentChildIdMap.put(span.getParentSpanId(), new ArrayList<>()); + } + parentChildIdMap.get(span.getParentSpanId()).add(spanId); + } + } + + String spanName(long spanId) { + return idSpanMap.get(spanId).getName(); + } + + List childSpans(long spanId) { + return parentChildIdMap.get(spanId); + } + + // This method only works for matching call stacks with traces which have children of distinct + // type at all levels. This is good enough as the intention is to validate if the e2e path is + // WAI - the intention is not to validate Cloud Trace's correctness w.r.t. durability of all + // kinds of traces. + boolean containsCallStack(String... callStack) throws RuntimeException { + List expectedCallStack = Arrays.asList(callStack); + if (expectedCallStack.isEmpty()) { + throw new RuntimeException("Input callStack is empty"); + } + return dfsContainsCallStack(rootId, expectedCallStack); + } + + // Depth-first check for call stack in the trace + private boolean dfsContainsCallStack(long spanId, List expectedCallStack) { + logger.info( + "span=" + + spanName(spanId) + + ", expectedCallStack[0]=" + + (expectedCallStack.isEmpty() ? "null" : expectedCallStack.get(0))); + if (expectedCallStack.isEmpty()) { + return false; + } + if (spanName(spanId).equals(expectedCallStack.get(0))) { + // Recursion termination + if (childSpans(spanId) == null) { + logger.info("No more children for " + spanName(spanId)); + return expectedCallStack.size() <= 1; + } else { + // Examine the child spans + for (Long childSpan : childSpans(spanId)) { + int callStackListSize = expectedCallStack.size(); + logger.info( + "childSpan=" + + spanName(childSpan) + + ", expectedCallStackSize=" + + callStackListSize); + if (dfsContainsCallStack( + childSpan, + expectedCallStack.subList( + /*fromIndexInclusive=*/ 1, /*toIndexExclusive*/ callStackListSize))) { + return true; + } + } + } + } else { + logger.info(spanName(spanId) + " didn't match " + expectedCallStack.get(0)); + } + return false; + } + } + + private static final Logger logger = Logger.getLogger(ITE2ETracingTest.class.getName()); + + private static final String RUN_AGGREGATION_QUERY_RPC_NAME = "RunAggregationQuery"; + + private static final String RUN_QUERY_RPC_NAME = "RunQuery"; + + private static final int NUM_TRACE_ID_BYTES = 32; + + private static final int NUM_SPAN_ID_BYTES = 16; + + private static final int GET_TRACE_RETRY_COUNT = 60; + + private static final int GET_TRACE_RETRY_BACKOFF_MILLIS = 1000; + + private static final int TRACE_FORCE_FLUSH_MILLIS = 5000; + + private static final int TRACE_PROVIDER_SHUTDOWN_MILLIS = 1000; + + private static Key KEY1; + + private static Key KEY2; + + private static Key KEY3; + + private static Key KEY4; + + // Random int generator for trace ID and span ID + private static Random random; + + private static TraceExporter traceExporter; + + // Required for reading back traces from Cloud Trace for validation + private static TraceServiceClient traceClient_v1; + + // Custom SpanContext for each test, required for TraceID injection + private static SpanContext customSpanContext; + + // Trace read back from Cloud Trace using traceClient_v1 for verification + private static Trace retrievedTrace; + + private static String rootSpanName; + private static Tracer tracer; + + // Required to set custom-root span + private static OpenTelemetrySdk openTelemetrySdk; + + private static String projectId; + + private static DatastoreOptions options; + + private static Datastore datastore; + + private static RemoteDatastoreHelper remoteDatastoreHelper; + + @TestParameter boolean useGlobalOpenTelemetrySDK; + + @TestParameter({ + /*(default)*/ + "", + "test-db" + }) + String datastoreNamedDatabase; + + @BeforeClass + public static void setup() throws IOException { + projectId = DatastoreOptions.getDefaultProjectId(); + traceExporter = + TraceExporter.createWithConfiguration( + TraceConfiguration.builder().setProjectId(projectId).build()); + traceClient_v1 = TraceServiceClient.create(); + random = new Random(); + } + + @Before + public void before() throws Exception { + // Set up OTel SDK + Resource resource = + Resource.getDefault().merge(Resource.builder().put(SERVICE_NAME, "Sparky").build()); + + if (isUsingGlobalOpenTelemetrySDK()) { + openTelemetrySdk = + OpenTelemetrySdk.builder() + .setTracerProvider( + SdkTracerProvider.builder() + .setResource(resource) + .addSpanProcessor(BatchSpanProcessor.builder(traceExporter).build()) + .setSampler(Sampler.alwaysOn()) + .build()) + .buildAndRegisterGlobal(); + } else { + openTelemetrySdk = + OpenTelemetrySdk.builder() + .setTracerProvider( + SdkTracerProvider.builder() + .setResource(resource) + .addSpanProcessor(BatchSpanProcessor.builder(traceExporter).build()) + .setSampler(Sampler.alwaysOn()) + .build()) + .build(); + } + + // Initialize the Datastore DB w/ the OTel SDK. Ideally we'd do this is the @BeforeAll method + // but because gRPC traces need to be deterministically force-flushed for every test + String namedDb = datastoreNamedDatabase(); + logger.log(Level.INFO, "Integration test using named database " + namedDb); + remoteDatastoreHelper = RemoteDatastoreHelper.create(namedDb, openTelemetrySdk); + options = remoteDatastoreHelper.getOptions(); + datastore = options.getService(); + + Preconditions.checkNotNull( + datastore, + "Error instantiating Datastore. Check that the service account credentials " + + "were properly set."); + + String projectId = options.getProjectId(); + String kind1 = "kind1"; + KEY1 = + Key.newBuilder(projectId, kind1, "key1", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + KEY2 = + Key.newBuilder(projectId, kind1, "key2", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + KEY3 = + Key.newBuilder(projectId, kind1, "key3", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + KEY4 = + Key.newBuilder(projectId, kind1, "key4", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + // Set up the tracer for custom TraceID injection + rootSpanName = + String.format("%s%d", this.getClass().getSimpleName(), System.currentTimeMillis()); + if (isUsingGlobalOpenTelemetrySDK()) { + tracer = GlobalOpenTelemetry.getTracer(rootSpanName); + } else { + tracer = + datastore + .getOptions() + .getOpenTelemetryOptions() + .getOpenTelemetry() + .getTracer(rootSpanName); + } + + // Get up a new SpanContext (ergo TraceId) for each test + customSpanContext = getNewSpanContext(); + assertNotNull(customSpanContext); + assertNull(retrievedTrace); + } + + @After + public void after() throws Exception { + if (isUsingGlobalOpenTelemetrySDK()) { + GlobalOpenTelemetry.resetForTest(); + } + remoteDatastoreHelper.deleteNamespace(); + rootSpanName = null; + tracer = null; + retrievedTrace = null; + customSpanContext = null; + openTelemetrySdk = null; + } + + @AfterClass + public static void teardown() throws Exception { + traceClient_v1.close(); + } + + // Generates a random hex string of length `numBytes` + private String generateRandomHexString(int numBytes) { + StringBuilder newTraceId = new StringBuilder(); + while (newTraceId.length() < numBytes) { + newTraceId.append(Integer.toHexString(random.nextInt())); + } + return newTraceId.substring(0, numBytes); + } + + protected String generateNewTraceId() { + return generateRandomHexString(NUM_TRACE_ID_BYTES); + } + + // Generates a random 16-byte hex string + protected String generateNewSpanId() { + return generateRandomHexString(NUM_SPAN_ID_BYTES); + } + + // Generates a new SpanContext w/ random traceId,spanId + protected SpanContext getNewSpanContext() { + String traceId = generateNewTraceId(); + String spanId = generateNewSpanId(); + logger.info("traceId=" + traceId + ", spanId=" + spanId); + + return SpanContext.create(traceId, spanId, TraceFlags.getSampled(), TraceState.getDefault()); + } + + protected Span getNewRootSpanWithContext() { + // Execute the DB operation in the context of the custom root span. + return tracer + .spanBuilder(rootSpanName) + .setParent(Context.root().with(Span.wrap(customSpanContext))) + .startSpan(); + } + + protected void waitForTracesToComplete() throws Exception { + logger.info("Flushing traces..."); + CompletableResultCode completableResultCode = + openTelemetrySdk.getSdkTracerProvider().forceFlush(); + completableResultCode.join(TRACE_FORCE_FLUSH_MILLIS, TimeUnit.MILLISECONDS); + } + + // Validates `retrievedTrace`. Cloud Trace indexes traces w/ eventual consistency, even when + // indexing traceId, therefore the test must retry a few times before the complete trace is + // available. + // For Transaction traces, there may be more spans than in the trace than specified in + // `callStack`. So `numExpectedSpans` is the expected total number of spans (and not just the + // spans in `callStack`) + protected void fetchAndValidateTrace( + String traceId, int numExpectedSpans, List> callStackList) + throws InterruptedException { + // Large enough count to accommodate eventually consistent Cloud Trace backend + int numRetries = GET_TRACE_RETRY_COUNT; + // Account for rootSpanName + numExpectedSpans++; + + // Fetch traces + do { + try { + retrievedTrace = traceClient_v1.getTrace(projectId, traceId); + assertEquals(traceId, retrievedTrace.getTraceId()); + + logger.info( + "expectedSpanCount=" + + numExpectedSpans + + ", retrievedSpanCount=" + + retrievedTrace.getSpansCount()); + } catch (NotFoundException notFound) { + logger.info("Trace not found, retrying in " + GET_TRACE_RETRY_BACKOFF_MILLIS + " ms"); + } catch (IndexOutOfBoundsException outOfBoundsException) { + logger.info("Call stack not found in trace. Retrying."); + } + if (retrievedTrace == null || numExpectedSpans != retrievedTrace.getSpansCount()) { + Thread.sleep(GET_TRACE_RETRY_BACKOFF_MILLIS); + } + } while (numRetries-- > 0 + && (retrievedTrace == null || numExpectedSpans != retrievedTrace.getSpansCount())); + + if (retrievedTrace == null || numExpectedSpans != retrievedTrace.getSpansCount()) { + throw new RuntimeException( + "Expected number of spans: " + + numExpectedSpans + + ", Actual number of spans: " + + (retrievedTrace != null + ? retrievedTrace.getSpansList().toString() + : "Trace NOT_FOUND")); + } + + TraceContainer traceContainer = new TraceContainer(rootSpanName, retrievedTrace); + + for (List callStack : callStackList) { + // Update all call stacks to be rooted at rootSpanName + ArrayList expectedCallStack = new ArrayList<>(callStack); + + // numExpectedSpans should account for rootSpanName (not passed in callStackList) + expectedCallStack.add(0, rootSpanName); + + // *May be* the full trace was returned + logger.info("Checking if TraceContainer contains the callStack"); + String[] expectedCallList = new String[expectedCallStack.size()]; + if (!traceContainer.containsCallStack(expectedCallStack.toArray(expectedCallList))) { + throw new RuntimeException( + "Expected spans: " + + Arrays.toString(expectedCallList) + + ", Actual spans: " + + (retrievedTrace != null + ? retrievedTrace.getSpansList().toString() + : "Trace NOT_FOUND")); + } + logger.severe("CallStack not found in TraceContainer."); + } + } + + // Validates `retrievedTrace`. Cloud Trace indexes traces w/ eventual consistency, even when + // indexing traceId, therefore the test must retry a few times before the complete trace is + // available. + // For Non-Transaction traces, there is a 1:1 ratio of spans in `spanNames` and in the trace. + protected void fetchAndValidateTrace(String traceId, String... spanNames) + throws InterruptedException { + fetchAndValidateTrace(traceId, spanNames.length, Arrays.asList(Arrays.asList(spanNames))); + } + + @Test + public void traceContainerTest() throws Exception { + // Make sure the test has a new SpanContext (and TraceId for injection) + assertNotNull(customSpanContext); + + // Inject new trace ID + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Entity entity = datastore.get(KEY1); + assertNull(entity); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + Trace traceResp = null; + int expectedSpanCount = 2; + + int numRetries = GET_TRACE_RETRY_COUNT; + do { + try { + traceResp = traceClient_v1.getTrace(projectId, customSpanContext.getTraceId()); + if (traceResp.getSpansCount() == expectedSpanCount) { + logger.info("Success: Got " + expectedSpanCount + " spans."); + break; + } + } catch (NotFoundException notFoundException) { + Thread.sleep(GET_TRACE_RETRY_BACKOFF_MILLIS); + logger.info("Trace not found, retrying in " + GET_TRACE_RETRY_BACKOFF_MILLIS + " ms"); + } + logger.info( + "Trace Found. The trace did not contain " + + expectedSpanCount + + " spans. Going to retry."); + numRetries--; + } while (numRetries > 0); + + // Make sure we got as many spans as we expected. + assertNotNull(traceResp); + assertEquals(expectedSpanCount, traceResp.getSpansCount()); + + TraceContainer traceCont = new TraceContainer(rootSpanName, traceResp); + + // Contains exact path + assertTrue(traceCont.containsCallStack(rootSpanName, SPAN_NAME_LOOKUP)); + + // Top-level mismatch + assertFalse(traceCont.containsCallStack(SPAN_NAME_LOOKUP, RUN_QUERY_RPC_NAME)); + + // Leaf-level mismatch/missing + assertFalse( + traceCont.containsCallStack( + rootSpanName, SPAN_NAME_LOOKUP, RUN_AGGREGATION_QUERY_RPC_NAME)); + } + + @Test + public void lookupTraceTest() throws Exception { + // Make sure the test has a new SpanContext (and TraceId for injection) + assertNotNull(customSpanContext); + + // Inject new trace ID + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Entity entity = datastore.get(KEY1); + assertNull(entity); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_LOOKUP); + } + + @Test + public void allocateIdsTraceTest() throws Exception { + assertNotNull(customSpanContext); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + String kind1 = "kind1"; + KeyFactory keyFactory = datastore.newKeyFactory().setKind(kind1); + IncompleteKey pk1 = keyFactory.newKey(); + Key key1 = datastore.allocateId(pk1); + assertEquals(key1.getProjectId(), pk1.getProjectId()); + assertEquals(key1.getNamespace(), pk1.getNamespace()); + assertEquals(key1.getAncestors(), pk1.getAncestors()); + assertEquals(key1.getKind(), pk1.getKind()); + assertTrue(key1.hasId()); + assertFalse(key1.hasName()); + assertEquals(Key.newBuilder(pk1, key1.getId()).build(), key1); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_ALLOCATE_IDS); + } + + @Test + public void reserveIdsTraceTest() throws Exception { + assertNotNull(customSpanContext); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + KeyFactory keyFactory = datastore.newKeyFactory().setKind("MyKind"); + Key key1 = keyFactory.newKey(10); + Key key2 = keyFactory.newKey("name"); + List keyList = datastore.reserveIds(key1, key2); + assertEquals(2, keyList.size()); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_RESERVE_IDS); + } + + @Test + public void commitTraceTest() throws Exception { + assertNotNull(customSpanContext); + + Span rootSpan = getNewRootSpanWithContext(); + + Entity entity1 = Entity.newBuilder(KEY1).set("test_key", "test_value").build(); + try (Scope ignored = rootSpan.makeCurrent()) { + Entity response = datastore.add(entity1); + assertEquals(entity1, response); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_COMMIT); + } + + @Test + public void putTraceTest() throws Exception { + assertNotNull(customSpanContext); + + Span rootSpan = getNewRootSpanWithContext(); + + Entity entity1 = Entity.newBuilder(KEY1).set("test_key", "test_value").build(); + try (Scope ignored = rootSpan.makeCurrent()) { + Entity response = datastore.put(entity1); + assertEquals(entity1, response); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_COMMIT); + } + + @Test + public void updateTraceTest() throws Exception { + assertNotNull(customSpanContext); + + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Entity entity1_update = + Entity.newBuilder(entity1).set("test_field", "new_test_value1").build(); + Entity entity2_update = + Entity.newBuilder(entity2).set("test_field", "new_test_value1").build(); + datastore.update(entity1_update, entity2_update); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_COMMIT); + } + + @Test + public void deleteTraceTest() throws Exception { + assertNotNull(customSpanContext); + + Entity entity1 = Entity.newBuilder(KEY1).set("test_key", "test_value").build(); + Entity response = datastore.put(entity1); + assertEquals(entity1, response); + + Span rootSpan = getNewRootSpanWithContext(); + + try (Scope ignored = rootSpan.makeCurrent()) { + datastore.delete(entity1.getKey()); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_COMMIT); + } + + @Test + public void runQueryTraceTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + PropertyFilter filter = PropertyFilter.eq("test_field", entity1.getValue("test_field")); + Query query = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(filter).build(); + QueryResults queryResults = datastore.run(query); + assertTrue(queryResults.hasNext()); + assertEquals(entity1, queryResults.next()); + assertFalse(queryResults.hasNext()); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_RUN_QUERY); + } + + @Test + public void runAggregationQueryTraceTest() throws Exception { + Entity entity1 = + Entity.newBuilder(KEY1) + .set("pepper_name", "jalapeno") + .set("max_scoville_level", 10000) + .build(); + Entity entity2 = + Entity.newBuilder(KEY2) + .set("pepper_name", "serrano") + .set("max_scoville_level", 25000) + .build(); + Entity entity3 = + Entity.newBuilder(KEY3) + .set("pepper_name", "habanero") + .set("max_scoville_level", 350000) + .build(); + Entity entity4 = + Entity.newBuilder(KEY4) + .set("pepper_name", "ghost") + .set("max_scoville_level", 1500000) + .build(); + + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + entityList.add(entity3); + entityList.add(entity4); + + List response = datastore.add(entity1, entity2, entity3, entity4); + assertEquals(entityList, response); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + PropertyFilter mediumSpicyFilters = PropertyFilter.lt("max_scoville_level", 100000); + StructuredQuery mediumSpicyQuery = + Query.newEntityQueryBuilder() + .setKind(KEY1.getKind()) + .setFilter(mediumSpicyFilters) + .build(); + AggregationQuery countSpicyPeppers = + Query.newAggregationQueryBuilder() + .addAggregation(count().as("count")) + .over(mediumSpicyQuery) + .build(); + AggregationResults results = datastore.runAggregation(countSpicyPeppers); + assertThat(results.size()).isEqualTo(1); + AggregationResult result = results.get(0); + assertThat(result.getLong("count")).isEqualTo(2L); + } finally { + rootSpan.end(); + } + + waitForTracesToComplete(); + + fetchAndValidateTrace(customSpanContext.getTraceId(), SPAN_NAME_RUN_AGGREGATION_QUERY); + } + + @Test + public void newTransactionReadTest() throws Exception { + assertNotNull(customSpanContext); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Transaction transaction = datastore.newTransaction(); + Entity entity = datastore.get(KEY1, ReadOption.transactionId(transaction.getTransactionId())); + transaction.commit(); + assertNull(entity); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace( + customSpanContext.getTraceId(), + /*numExpectedSpans=*/ 3, + Arrays.asList( + Collections.singletonList(SPAN_NAME_BEGIN_TRANSACTION), + Collections.singletonList(SPAN_NAME_TRANSACTION_LOOKUP), + Collections.singletonList(SPAN_NAME_TRANSACTION_COMMIT))); + } + + @Test + public void newTransactionQueryTest() throws Exception { + // Set up + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + assertNotNull(customSpanContext); + + // Test + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Transaction transaction = datastore.newTransaction(); + PropertyFilter filter = PropertyFilter.eq("test_field", entity1.getValue("test_field")); + Query query = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(filter).build(); + QueryResults queryResults = transaction.run(query); + transaction.commit(); + assertTrue(queryResults.hasNext()); + assertEquals(entity1, queryResults.next()); + assertFalse(queryResults.hasNext()); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace( + customSpanContext.getTraceId(), + /*numExpectedSpans=*/ 3, + Arrays.asList( + Collections.singletonList(SPAN_NAME_BEGIN_TRANSACTION), + Collections.singletonList(SPAN_NAME_TRANSACTION_RUN_QUERY), + Collections.singletonList(SPAN_NAME_TRANSACTION_COMMIT))); + } + + @Test + public void newTransactionReadWriteTraceTest() throws Exception { + // Set up + Entity entity1 = Entity.newBuilder(KEY1).set("pepper_type", "jalapeno").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("pepper_type", "habanero").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + String simplified_spice_level = "not_spicy"; + Entity entity1update = + Entity.newBuilder(entity1).set("spice_level", simplified_spice_level).build(); + + assertNotNull(customSpanContext); + + // Test + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Transaction transaction = datastore.newTransaction(); + entity1 = transaction.get(KEY1); + switch (entity1.getString("pepper_type")) { + case "jalapeno": + simplified_spice_level = "mild"; + break; + + case "habanero": + simplified_spice_level = "hot"; + break; + } + transaction.update(entity1update); + transaction.delete(KEY2); + transaction.commit(); + assertFalse(transaction.isActive()); + } finally { + rootSpan.end(); + } + + waitForTracesToComplete(); + + List list = datastore.fetch(KEY1, KEY2); + assertEquals(list.get(0), entity1update); + assertNull(list.get(1)); + + fetchAndValidateTrace( + customSpanContext.getTraceId(), + /*numExpectedSpans=*/ 3, + Arrays.asList( + Collections.singletonList(SPAN_NAME_BEGIN_TRANSACTION), + Collections.singletonList(SPAN_NAME_TRANSACTION_LOOKUP), + Collections.singletonList(SPAN_NAME_TRANSACTION_COMMIT))); + } + + @Test + public void newTransactionRollbackTest() throws Exception { + // Set up + Entity entity1 = Entity.newBuilder(KEY1).set("pepper_type", "jalapeno").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("pepper_type", "habanero").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + String simplified_spice_level = "not_spicy"; + Entity entity1update = + Entity.newBuilder(entity1).set("spice_level", simplified_spice_level).build(); + + assertNotNull(customSpanContext); + + // Test + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + Transaction transaction = datastore.newTransaction(); + entity1 = transaction.get(KEY1); + switch (entity1.getString("pepper_type")) { + case "jalapeno": + simplified_spice_level = "mild"; + break; + + case "habanero": + simplified_spice_level = "hot"; + break; + } + transaction.update(entity1update); + transaction.delete(KEY2); + transaction.rollback(); + assertFalse(transaction.isActive()); + } finally { + rootSpan.end(); + } + + waitForTracesToComplete(); + + List list = datastore.fetch(KEY1, KEY2); + assertEquals(list.get(0), entity1); + assertEquals(list.get(1), entity2); + + fetchAndValidateTrace( + customSpanContext.getTraceId(), + /*numExpectedSpans=*/ 3, + Arrays.asList( + Collections.singletonList(SPAN_NAME_BEGIN_TRANSACTION), + Collections.singletonList(SPAN_NAME_TRANSACTION_LOOKUP), + Collections.singletonList(SPAN_NAME_ROLLBACK))); + } + + @Test + public void runInTransactionQueryTest() throws Exception { + // Set up + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + assertNotNull(customSpanContext); + + Span rootSpan = getNewRootSpanWithContext(); + try (Scope ignored = rootSpan.makeCurrent()) { + PropertyFilter filter = PropertyFilter.eq("test_field", entity1.getValue("test_field")); + Query query = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(filter).build(); + Datastore.TransactionCallable callable = + transaction -> { + QueryResults queryResults = datastore.run(query); + assertTrue(queryResults.hasNext()); + assertEquals(entity1, queryResults.next()); + assertFalse(queryResults.hasNext()); + return true; + }; + datastore.runInTransaction(callable); + } finally { + rootSpan.end(); + } + waitForTracesToComplete(); + + fetchAndValidateTrace( + customSpanContext.getTraceId(), + /*numExpectedSpans=*/ 4, + Arrays.asList( + Arrays.asList(SPAN_NAME_TRANSACTION_RUN, SPAN_NAME_BEGIN_TRANSACTION), + Arrays.asList(SPAN_NAME_TRANSACTION_RUN, SPAN_NAME_RUN_QUERY), + Arrays.asList(SPAN_NAME_TRANSACTION_RUN, SPAN_NAME_TRANSACTION_COMMIT))); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITTracingTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITTracingTest.java new file mode 100644 index 000000000..aefb51352 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITTracingTest.java @@ -0,0 +1,849 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.it; + +import static com.google.cloud.datastore.aggregation.Aggregation.count; +import static com.google.cloud.datastore.telemetry.TraceUtil.*; +import static com.google.common.truth.Truth.assertThat; +import static io.opentelemetry.semconv.resource.attributes.ResourceAttributes.SERVICE_NAME; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import com.google.cloud.datastore.AggregationQuery; +import com.google.cloud.datastore.AggregationResult; +import com.google.cloud.datastore.AggregationResults; +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOpenTelemetryOptions; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.Entity; +import com.google.cloud.datastore.IncompleteKey; +import com.google.cloud.datastore.Key; +import com.google.cloud.datastore.KeyFactory; +import com.google.cloud.datastore.Query; +import com.google.cloud.datastore.QueryResults; +import com.google.cloud.datastore.ReadOption; +import com.google.cloud.datastore.StructuredQuery; +import com.google.cloud.datastore.StructuredQuery.PropertyFilter; +import com.google.cloud.datastore.Transaction; +import com.google.cloud.datastore.testing.RemoteDatastoreHelper; +import com.google.common.base.Preconditions; +import com.google.testing.junit.testparameterinjector.TestParameter; +import com.google.testing.junit.testparameterinjector.TestParameterInjector; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; +import io.opentelemetry.sdk.common.CompletableResultCode; +import io.opentelemetry.sdk.resources.Resource; +import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.SpanProcessor; +import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.SpanData; +import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.samplers.Sampler; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestName; +import org.junit.runner.RunWith; + +@RunWith(TestParameterInjector.class) +public class ITTracingTest { + protected boolean isUsingGlobalOpenTelemetrySDK() { + return useGlobalOpenTelemetrySDK; + } + + protected String datastoreNamedDatabase() { + return datastoreNamedDatabase; + } + + private static final Logger logger = + Logger.getLogger(com.google.cloud.datastore.it.ITTracingTest.class.getName()); + + private static final int TRACE_FORCE_FLUSH_MILLIS = 1000; + private static final int TRACE_PROVIDER_SHUTDOWN_MILLIS = 1000; + private static final int IN_MEMORY_SPAN_EXPORTER_DELAY_MILLIS = 50; + private static final String SERVICE = "google.datastore.v1.Datastore/"; + + private static Key KEY1; + + private static Key KEY2; + + private static Key KEY3; + + private static Key KEY4; + + private static OpenTelemetrySdk openTelemetrySdk; + + // We use an InMemorySpanExporter for testing which keeps all generated trace spans + // in memory so that we can check their correctness. + protected InMemorySpanExporter inMemorySpanExporter; + private static DatastoreOptions options; + + protected Datastore datastore; + private static RemoteDatastoreHelper remoteDatastoreHelper; + + @TestParameter boolean useGlobalOpenTelemetrySDK; + + @TestParameter({ + /*(default)*/ + "", + "test-db" + }) + String datastoreNamedDatabase; + + Map spanNameToSpanId = new HashMap<>(); + Map spanIdToParentSpanId = new HashMap<>(); + Map spanNameToSpanData = new HashMap<>(); + + @Rule public TestName testName = new TestName(); + + @Before + public void before() { + inMemorySpanExporter = InMemorySpanExporter.create(); + + Resource resource = + Resource.getDefault().merge(Resource.builder().put(SERVICE_NAME, "Sparky").build()); + SpanProcessor inMemorySpanProcessor = SimpleSpanProcessor.create(inMemorySpanExporter); + DatastoreOptions.Builder optionsBuilder = DatastoreOptions.newBuilder(); + DatastoreOpenTelemetryOptions.Builder otelOptionsBuilder = + DatastoreOpenTelemetryOptions.newBuilder(); + OpenTelemetrySdkBuilder openTelemetrySdkBuilder = + OpenTelemetrySdk.builder() + .setTracerProvider( + SdkTracerProvider.builder() + .setResource(resource) + .addSpanProcessor(inMemorySpanProcessor) + .setSampler(Sampler.alwaysOn()) + .build()); + + if (isUsingGlobalOpenTelemetrySDK()) { + GlobalOpenTelemetry.resetForTest(); + openTelemetrySdk = openTelemetrySdkBuilder.buildAndRegisterGlobal(); + optionsBuilder.setOpenTelemetryOptions(otelOptionsBuilder.setTracingEnabled(true).build()); + } else { + openTelemetrySdk = openTelemetrySdkBuilder.build(); + optionsBuilder.setOpenTelemetryOptions( + otelOptionsBuilder.setTracingEnabled(true).setOpenTelemetry(openTelemetrySdk).build()); + } + + String namedDb = datastoreNamedDatabase(); + logger.log(Level.INFO, "Integration test using named database " + namedDb); + remoteDatastoreHelper = RemoteDatastoreHelper.create(namedDb, openTelemetrySdk); + options = remoteDatastoreHelper.getOptions(); + datastore = options.getService(); + + Preconditions.checkNotNull( + datastore, + "Error instantiating Datastore. Check that the service account credentials " + + "were properly set."); + + String projectId = options.getProjectId(); + String kind1 = "kind1"; + KEY1 = + Key.newBuilder(projectId, kind1, "key1", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + KEY2 = + Key.newBuilder(projectId, kind1, "key2", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + KEY3 = + Key.newBuilder(projectId, kind1, "key3", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + KEY4 = + Key.newBuilder(projectId, kind1, "key4", options.getDatabaseId()) + .setNamespace(options.getNamespace()) + .build(); + cleanupTestSpanContext(); + } + + @After + public void after() throws Exception { + if (isUsingGlobalOpenTelemetrySDK()) { + GlobalOpenTelemetry.resetForTest(); + } + remoteDatastoreHelper.deleteNamespace(); + inMemorySpanExporter.reset(); + CompletableResultCode completableResultCode = + openTelemetrySdk.getSdkTracerProvider().shutdown(); + completableResultCode.join(TRACE_PROVIDER_SHUTDOWN_MILLIS, TimeUnit.MILLISECONDS); + openTelemetrySdk = null; + } + + @AfterClass + public static void teardown() {} + + void waitForTracesToComplete() throws Exception { + // The same way that querying the Cloud Trace backend may not give us the + // full trace on the first try, querying the in-memory traces may not result + // in the full trace immediately. Note that performing the `flush` is not + // enough. This doesn't pose an issue in practice, but can make tests flaky. + // Therefore, we're adding a delay to make sure we avoid any flakiness. + inMemorySpanExporter.flush().join(IN_MEMORY_SPAN_EXPORTER_DELAY_MILLIS, TimeUnit.MILLISECONDS); + TimeUnit.MILLISECONDS.sleep(IN_MEMORY_SPAN_EXPORTER_DELAY_MILLIS); + + CompletableResultCode completableResultCode = + openTelemetrySdk.getSdkTracerProvider().forceFlush(); + completableResultCode.join(TRACE_FORCE_FLUSH_MILLIS, TimeUnit.MILLISECONDS); + } + + // Prepares all the spans in memory for inspection. + List prepareSpans() throws Exception { + waitForTracesToComplete(); + List spans = inMemorySpanExporter.getFinishedSpanItems(); + buildSpanMaps(spans); + printSpans(); + return spans; + } + + void buildSpanMaps(List spans) { + for (SpanData spanData : spans) { + spanNameToSpanData.put(spanData.getName(), spanData); + spanNameToSpanId.put(spanData.getName(), spanData.getSpanId()); + spanIdToParentSpanId.put(spanData.getSpanId(), spanData.getParentSpanId()); + } + } + + // Returns the SpanData object for the span with the given name. + // Returns null if no span with the given name exists. + @Nullable + SpanData getSpanByName(String spanName) { + return spanNameToSpanData.get(spanName); + } + + // Returns the SpanData object for the gRPC span with the given RPC name. + // Returns null if no such span exists. + @Nullable + SpanData getGrpcSpanByName(String rpcName) { + return getSpanByName(SERVICE + rpcName); + } + + String grpcSpanName(String rpcName) { + return SERVICE + rpcName; + } + + void assertSameTrace(SpanData... spans) { + if (spans.length > 1) { + String traceId = spans[0].getTraceId(); + for (SpanData spanData : spans) { + assertEquals(traceId, spanData.getTraceId()); + } + } + } + + // Helper to see the spans in standard output while developing tests + void printSpans() { + for (SpanData spanData : spanNameToSpanData.values()) { + logger.log( + Level.FINE, + String.format( + "SPAN ID:%s, ParentID:%s, KIND:%s, TRACE ID:%s, NAME:%s, ATTRIBUTES:%s, EVENTS:%s\n", + spanData.getSpanId(), + spanData.getParentSpanId(), + spanData.getKind(), + spanData.getTraceId(), + spanData.getName(), + spanData.getAttributes().toString(), + spanData.getEvents().toString())); + } + } + + // Asserts that the span hierarchy exists for the given span names. The hierarchy starts with the + // root span, followed + // by the child span, grandchild span, and so on. It also asserts that all the given spans belong + // to the same trace, + // and that datastore-generated spans contain the expected datastore attributes. + void assertSpanHierarchy(String... spanNamesHierarchy) { + List spanNames = Arrays.asList(spanNamesHierarchy); + + for (int i = 0; i + 1 < spanNames.size(); ++i) { + String parentSpanName = spanNames.get(i); + String childSpanName = spanNames.get(i + 1); + SpanData parentSpan = getSpanByName(parentSpanName); + SpanData childSpan = getSpanByName(childSpanName); + assertNotNull(parentSpan); + assertNotNull(childSpan); + assertEquals(childSpan.getParentSpanId(), parentSpan.getSpanId()); + assertSameTrace(childSpan, parentSpan); + // gRPC spans do not have datastore attributes. + if (!parentSpanName.startsWith(SERVICE)) { + assertHasExpectedAttributes(parentSpan); + } + if (!childSpanName.startsWith(SERVICE)) { + assertHasExpectedAttributes(childSpan); + } + } + } + + void assertHasExpectedAttributes(SpanData spanData, String... additionalExpectedAttributes) { + // All datastore-generated spans have the settings attributes. + List expectedAttributes = + Arrays.asList( + "gcp.datastore.memoryUtilization", + "gcp.datastore.settings.host", + "gcp.datastore.settings.databaseId", + "gcp.datastore.settings.retrySettings.maxRpcTimeout", + "gcp.datastore.settings.retrySettings.retryDelayMultiplier", + "gcp.datastore.settings.retrySettings.initialRetryDelay", + "gcp.datastore.settings.credentials.authenticationType", + "gcp.datastore.settings.retrySettings.maxAttempts", + "gcp.datastore.settings.retrySettings.maxRetryDelay", + "gcp.datastore.settings.retrySettings.rpcTimeoutMultiplier", + "gcp.datastore.settings.retrySettings.totalTimeout", + "gcp.datastore.settings.retrySettings.initialRpcTimeout"); + + expectedAttributes.addAll(Arrays.asList(additionalExpectedAttributes)); + + Attributes spanAttributes = spanData.getAttributes(); + for (String expectedAttribute : expectedAttributes) { + assertNotNull(spanAttributes.get(AttributeKey.stringKey(expectedAttribute))); + } + } + + // Returns true if and only if the given span data contains an event with the given name and the + // given expected + // attributes. + boolean hasEvent(SpanData spanData, String eventName, @Nullable Attributes expectedAttributes) { + if (spanData == null) { + return false; + } + + logger.log( + Level.INFO, + String.format( + "Checking if span named '%s' (ID='%s') contains an event named '%s'", + spanData.getName(), spanData.getSpanId(), eventName)); + + List events = spanData.getEvents(); + for (EventData event : events) { + if (event.getName().equals(eventName)) { + if (expectedAttributes == null) { + return true; + } + + // Make sure attributes also match. + Attributes eventAttributes = event.getAttributes(); + return expectedAttributes.equals(eventAttributes); + } + } + return false; + } + + void cleanupTestSpanContext() { + inMemorySpanExporter.reset(); + spanNameToSpanId.clear(); + spanIdToParentSpanId.clear(); + spanNameToSpanData.clear(); + } + + // This is a POJO used for testing APIs that take a POJO. + public static class Pojo { + public int bar; + + public Pojo() { + bar = 0; + } + + public Pojo(int bar) { + this.bar = bar; + } + + public int getBar() { + return bar; + } + + public void setBar(int bar) { + this.bar = bar; + } + } + + @Test + public void lookupTraceTest() throws Exception { + Entity entity = datastore.get(KEY1); + assertNull(entity); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_LOOKUP); + SpanData span = getSpanByName(SPAN_NAME_LOOKUP); + assertTrue( + hasEvent( + span, + SPAN_NAME_LOOKUP + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_RECEIVED, 0) + .put(ATTRIBUTES_KEY_MISSING, 1) + .put(ATTRIBUTES_KEY_DEFERRED, 0) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, false) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, "") + .build())); + } + + @Test + public void allocateIdsTraceTest() throws Exception { + String kind1 = "kind1"; + KeyFactory keyFactory = datastore.newKeyFactory().setKind(kind1); + IncompleteKey pk1 = keyFactory.newKey(); + Key key1 = datastore.allocateId(pk1); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_ALLOCATE_IDS); + } + + @Test + public void reserveIdsTraceTest() throws Exception { + KeyFactory keyFactory = datastore.newKeyFactory().setKind("MyKind"); + Key key1 = keyFactory.newKey(10); + Key key2 = keyFactory.newKey("name"); + List keyList = datastore.reserveIds(key1, key2); + assertEquals(2, keyList.size()); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_RESERVE_IDS); + } + + @Test + public void commitTraceTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_key", "test_value").build(); + Entity response = datastore.add(entity1); + assertEquals(entity1, response); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_COMMIT); + } + + @Test + public void putTraceTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_key", "test_value").build(); + Entity response = datastore.put(entity1); + assertEquals(entity1, response); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_COMMIT); + } + + @Test + public void updateTraceTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_COMMIT); + + SpanData spanData = getSpanByName(SPAN_NAME_COMMIT); + assertTrue( + hasEvent( + spanData, + SPAN_NAME_COMMIT + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, response.size()) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, false) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, "") + .build())); + + // Clean Up test span context to verify update spans + cleanupTestSpanContext(); + + Entity entity1_update = Entity.newBuilder(entity1).set("test_field", "new_test_value1").build(); + Entity entity2_update = Entity.newBuilder(entity2).set("test_field", "new_test_value1").build(); + datastore.update(entity1_update, entity2_update); + + waitForTracesToComplete(); + + spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_COMMIT); + } + + @Test + public void deleteTraceTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_key", "test_value").build(); + Entity response = datastore.put(entity1); + assertEquals(entity1, response); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_COMMIT); + + SpanData spanData = getSpanByName(SPAN_NAME_COMMIT); + assertTrue( + hasEvent( + spanData, + SPAN_NAME_COMMIT + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, 1) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, false) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, "") + .build())); + + // Clean Up test span context to verify update spans + cleanupTestSpanContext(); + + datastore.delete(entity1.getKey()); + + waitForTracesToComplete(); + + spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_COMMIT); + + spanData = getSpanByName(SPAN_NAME_COMMIT); + assertTrue( + hasEvent( + spanData, + SPAN_NAME_COMMIT + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, 1) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, false) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, "") + .build())); + } + + @Test + public void runQueryTraceTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + // Clean Up test span context to verify RunQuery spans + cleanupTestSpanContext(); + + PropertyFilter filter = PropertyFilter.eq("test_field", entity1.getValue("test_field")); + Query query = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(filter).build(); + QueryResults queryResults = datastore.run(query); + assertTrue(queryResults.hasNext()); + assertEquals(entity1, queryResults.next()); + assertFalse(queryResults.hasNext()); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_RUN_QUERY); + + SpanData span = getSpanByName(SPAN_NAME_RUN_QUERY); + assertTrue( + hasEvent( + span, + SPAN_NAME_RUN_QUERY + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, 1) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, false) + .put(ATTRIBUTES_KEY_READ_CONSISTENCY, "READ_CONSISTENCY_UNSPECIFIED") + .put(ATTRIBUTES_KEY_MORE_RESULTS, "NO_MORE_RESULTS") + .put(ATTRIBUTES_KEY_TRANSACTION_ID, "") + .build())); + } + + @Test + public void runAggregationQueryTraceTest() throws Exception { + Entity entity1 = + Entity.newBuilder(KEY1) + .set("pepper_name", "jalapeno") + .set("max_scoville_level", 10000) + .build(); + Entity entity2 = + Entity.newBuilder(KEY2) + .set("pepper_name", "serrano") + .set("max_scoville_level", 25000) + .build(); + Entity entity3 = + Entity.newBuilder(KEY3) + .set("pepper_name", "habanero") + .set("max_scoville_level", 350000) + .build(); + Entity entity4 = + Entity.newBuilder(KEY4) + .set("pepper_name", "ghost") + .set("max_scoville_level", 1500000) + .build(); + + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + entityList.add(entity3); + entityList.add(entity4); + + List response = datastore.add(entity1, entity2, entity3, entity4); + assertEquals(entityList, response); + + // Clean Up test span context to verify RunAggregationQuery spans + cleanupTestSpanContext(); + + PropertyFilter mediumSpicyFilters = PropertyFilter.lt("max_scoville_level", 100000); + StructuredQuery mediumSpicyQuery = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(mediumSpicyFilters).build(); + AggregationQuery countSpicyPeppers = + Query.newAggregationQueryBuilder() + .addAggregation(count().as("count")) + .over(mediumSpicyQuery) + .build(); + AggregationResults results = datastore.runAggregation(countSpicyPeppers); + assertThat(results.size()).isEqualTo(1); + AggregationResult result = results.get(0); + assertThat(result.getLong("count")).isEqualTo(2L); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(1, spans.size()); + assertSpanHierarchy(SPAN_NAME_RUN_AGGREGATION_QUERY); + } + + @Test + public void newTransactionReadWriteTraceTest() throws Exception { + // Transaction.Begin + Transaction transaction = datastore.newTransaction(); + + // Transaction.Lookup + Entity entity = datastore.get(KEY1, ReadOption.transactionId(transaction.getTransactionId())); + assertNull(entity); + + Entity updatedEntity = Entity.newBuilder(KEY1).set("test_field", "new_test_value1").build(); + transaction.put(updatedEntity); + + // Transaction.Commit + transaction.commit(); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(3, spans.size()); + + assertSpanHierarchy(SPAN_NAME_BEGIN_TRANSACTION); + assertSpanHierarchy(SPAN_NAME_TRANSACTION_LOOKUP); + SpanData span = getSpanByName(SPAN_NAME_TRANSACTION_LOOKUP); + assertTrue( + hasEvent( + span, + SPAN_NAME_TRANSACTION_LOOKUP + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DEFERRED, 0) + .put(ATTRIBUTES_KEY_MISSING, 1) + .put(ATTRIBUTES_KEY_RECEIVED, 0) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, true) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, transaction.getTransactionId().toStringUtf8()) + .build())); + + assertSpanHierarchy(SPAN_NAME_TRANSACTION_COMMIT); + span = getSpanByName(SPAN_NAME_TRANSACTION_COMMIT); + assertTrue( + hasEvent( + span, + SPAN_NAME_TRANSACTION_COMMIT + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, 1) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, true) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, transaction.getTransactionId().toStringUtf8()) + .build())); + } + + @Test + public void newTransactionQueryTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + // Clean Up test span context to verify Transaction RunQuery spans + cleanupTestSpanContext(); + + Transaction transaction = datastore.newTransaction(); + PropertyFilter filter = PropertyFilter.eq("test_field", entity1.getValue("test_field")); + Query query = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(filter).build(); + QueryResults queryResults = transaction.run(query); + transaction.commit(); + assertTrue(queryResults.hasNext()); + assertEquals(entity1, queryResults.next()); + assertFalse(queryResults.hasNext()); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(3, spans.size()); + + assertSpanHierarchy(SPAN_NAME_BEGIN_TRANSACTION); + assertSpanHierarchy(SPAN_NAME_TRANSACTION_RUN_QUERY); + assertSpanHierarchy(SPAN_NAME_TRANSACTION_COMMIT); + SpanData span = getSpanByName(SPAN_NAME_TRANSACTION_RUN_QUERY); + assertTrue( + hasEvent( + span, + SPAN_NAME_TRANSACTION_RUN_QUERY + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DOCUMENT_COUNT, 1) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, true) + .put(ATTRIBUTES_KEY_READ_CONSISTENCY, "READ_CONSISTENCY_UNSPECIFIED") + .put(ATTRIBUTES_KEY_MORE_RESULTS, "NO_MORE_RESULTS") + .put(ATTRIBUTES_KEY_TRANSACTION_ID, transaction.getTransactionId().toStringUtf8()) + .build())); + } + + @Test + public void newTransactionRollbackTest() throws Exception { + Entity entity1 = Entity.newBuilder(KEY1).set("pepper_type", "jalapeno").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("pepper_type", "habanero").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + // Clean Up test span context to verify Transaction Rollback spans + cleanupTestSpanContext(); + + String simplified_spice_level = "not_spicy"; + Entity entity1update = + Entity.newBuilder(entity1).set("spice_level", simplified_spice_level).build(); + Transaction transaction = datastore.newTransaction(); + entity1 = transaction.get(KEY1); + switch (entity1.getString("pepper_type")) { + case "jalapeno": + simplified_spice_level = "mild"; + break; + + case "habanero": + simplified_spice_level = "hot"; + break; + } + transaction.update(entity1update); + transaction.delete(KEY2); + transaction.rollback(); + assertFalse(transaction.isActive()); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(3, spans.size()); + + assertSpanHierarchy(SPAN_NAME_BEGIN_TRANSACTION); + assertSpanHierarchy(SPAN_NAME_TRANSACTION_LOOKUP); + SpanData span = getSpanByName(SPAN_NAME_TRANSACTION_LOOKUP); + assertTrue( + hasEvent( + span, + SPAN_NAME_TRANSACTION_LOOKUP + " complete.", + Attributes.builder() + .put(ATTRIBUTES_KEY_DEFERRED, 0) + .put(ATTRIBUTES_KEY_MISSING, 0) + .put(ATTRIBUTES_KEY_RECEIVED, 1) + .put(ATTRIBUTES_KEY_TRANSACTIONAL, true) + .put(ATTRIBUTES_KEY_TRANSACTION_ID, transaction.getTransactionId().toStringUtf8()) + .build())); + + assertSpanHierarchy(SPAN_NAME_ROLLBACK); + span = getSpanByName(SPAN_NAME_ROLLBACK); + assertTrue( + hasEvent( + span, + SPAN_NAME_ROLLBACK, + Attributes.builder() + .put(ATTRIBUTES_KEY_TRANSACTION_ID, transaction.getTransactionId().toStringUtf8()) + .build())); + } + + @Test + public void runInTransactionQueryTest() throws Exception { + // Set up + Entity entity1 = Entity.newBuilder(KEY1).set("test_field", "test_value1").build(); + Entity entity2 = Entity.newBuilder(KEY2).set("test_field", "test_value2").build(); + List entityList = new ArrayList<>(); + entityList.add(entity1); + entityList.add(entity2); + + List response = datastore.add(entity1, entity2); + assertEquals(entityList, response); + + // Clean Up test span context to verify Transaction Rollback spans + cleanupTestSpanContext(); + + PropertyFilter filter = PropertyFilter.eq("test_field", entity1.getValue("test_field")); + Query query = + Query.newEntityQueryBuilder().setKind(KEY1.getKind()).setFilter(filter).build(); + Datastore.TransactionCallable callable = + transaction -> { + QueryResults queryResults = datastore.run(query); + assertTrue(queryResults.hasNext()); + assertEquals(entity1, queryResults.next()); + assertFalse(queryResults.hasNext()); + return true; + }; + datastore.runInTransaction(callable); + + waitForTracesToComplete(); + + List spans = prepareSpans(); + assertEquals(4, spans.size()); + + // Since the runInTransaction method runs the TransactionCallable opaquely in a transaction + // there is no way for the API user to know the transaction ID, so we will not validate it here. + assertSpanHierarchy(SPAN_NAME_TRANSACTION_RUN, SPAN_NAME_BEGIN_TRANSACTION); + assertSpanHierarchy(SPAN_NAME_TRANSACTION_RUN, SPAN_NAME_RUN_QUERY); + assertSpanHierarchy(SPAN_NAME_TRANSACTION_RUN, SPAN_NAME_TRANSACTION_COMMIT); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/DisabledTraceUtilTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/DisabledTraceUtilTest.java new file mode 100644 index 000000000..c80ef9353 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/DisabledTraceUtilTest.java @@ -0,0 +1,54 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore.telemetry; + +import static com.google.common.truth.Truth.assertThat; + +import org.junit.Test; + +public class DisabledTraceUtilTest { + @Test + public void disabledTraceUtilDoesNotProvideChannelConfigurator() { + DisabledTraceUtil traceUtil = new DisabledTraceUtil(); + assertThat(traceUtil.getChannelConfigurator()).isNull(); + } + + @Test + public void usesDisabledContext() { + DisabledTraceUtil traceUtil = new DisabledTraceUtil(); + assertThat(traceUtil.getCurrentContext() instanceof DisabledTraceUtil.Context).isTrue(); + } + + @Test + public void usesDisabledSpan() { + DisabledTraceUtil traceUtil = new DisabledTraceUtil(); + assertThat(traceUtil.getCurrentSpan() instanceof DisabledTraceUtil.Span).isTrue(); + assertThat(traceUtil.startSpan("foo") instanceof DisabledTraceUtil.Span).isTrue(); + assertThat( + traceUtil.startSpan("foo", traceUtil.getCurrentSpan()) + instanceof DisabledTraceUtil.Span) + .isTrue(); + } + + @Test + public void usesDisabledScope() { + DisabledTraceUtil traceUtil = new DisabledTraceUtil(); + assertThat(traceUtil.getCurrentContext().makeCurrent() instanceof DisabledTraceUtil.Scope) + .isTrue(); + assertThat(traceUtil.getCurrentSpan().makeCurrent() instanceof DisabledTraceUtil.Scope) + .isTrue(); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/EnabledTraceUtilTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/EnabledTraceUtilTest.java new file mode 100644 index 000000000..50d7b6820 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/EnabledTraceUtilTest.java @@ -0,0 +1,106 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore.telemetry; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.NoCredentials; +import com.google.cloud.datastore.DatastoreOpenTelemetryOptions; +import com.google.cloud.datastore.DatastoreOptions; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import org.junit.Before; +import org.junit.Test; + +public class EnabledTraceUtilTest { + @Before + public void setUp() { + GlobalOpenTelemetry.resetForTest(); + } + + DatastoreOptions.Builder getBaseOptions() { + return DatastoreOptions.newBuilder() + .setProjectId("test-project") + .setCredentials(NoCredentials.getInstance()); + } + + DatastoreOptions getTracingEnabledOptions() { + return getBaseOptions() + .setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder().setTracingEnabled(true).build()) + .build(); + } + + EnabledTraceUtil newEnabledTraceUtil() { + return new EnabledTraceUtil(getTracingEnabledOptions()); + } + + @Test + public void usesOpenTelemetryFromOptions() { + OpenTelemetrySdk myOpenTelemetrySdk = OpenTelemetrySdk.builder().build(); + DatastoreOptions firestoreOptions = + getBaseOptions() + .setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder() + .setTracingEnabled(true) + .setOpenTelemetry(myOpenTelemetrySdk) + .build()) + .build(); + EnabledTraceUtil traceUtil = new EnabledTraceUtil(firestoreOptions); + assertThat(traceUtil.getOpenTelemetry()).isEqualTo(myOpenTelemetrySdk); + } + + @Test + public void usesGlobalOpenTelemetryIfOpenTelemetryInstanceNotProvided() { + OpenTelemetrySdk ignored = OpenTelemetrySdk.builder().buildAndRegisterGlobal(); + DatastoreOptions firestoreOptions = + getBaseOptions() + .setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder().setTracingEnabled(true).build()) + .build(); + EnabledTraceUtil traceUtil = new EnabledTraceUtil(firestoreOptions); + assertThat(traceUtil.getOpenTelemetry()).isEqualTo(GlobalOpenTelemetry.get()); + } + + @Test + public void enabledTraceUtilProvidesChannelConfigurator() { + assertThat(newEnabledTraceUtil().getChannelConfigurator()).isNull(); + } + + @Test + public void usesEnabledContext() { + assertThat(newEnabledTraceUtil().getCurrentContext() instanceof EnabledTraceUtil.Context) + .isTrue(); + } + + @Test + public void usesEnabledSpan() { + EnabledTraceUtil traceUtil = newEnabledTraceUtil(); + assertThat(traceUtil.getCurrentSpan() instanceof EnabledTraceUtil.Span).isTrue(); + assertThat(traceUtil.startSpan("foo") != null).isTrue(); + assertThat( + traceUtil.startSpan("foo", traceUtil.getCurrentSpan()) instanceof EnabledTraceUtil.Span) + .isTrue(); + } + + @Test + public void usesEnabledScope() { + EnabledTraceUtil traceUtil = newEnabledTraceUtil(); + assertThat(traceUtil.getCurrentContext().makeCurrent() instanceof EnabledTraceUtil.Scope) + .isTrue(); + assertThat(traceUtil.getCurrentSpan().makeCurrent() instanceof EnabledTraceUtil.Scope).isTrue(); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/TraceUtilTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/TraceUtilTest.java new file mode 100644 index 000000000..f1cce8006 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/telemetry/TraceUtilTest.java @@ -0,0 +1,62 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore.telemetry; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.NoCredentials; +import com.google.cloud.datastore.DatastoreOpenTelemetryOptions; +import com.google.cloud.datastore.DatastoreOptions; +import org.junit.Test; + +public class TraceUtilTest { + @Test + public void defaultOptionsUseDisabledTraceUtil() { + TraceUtil traceUtil = + TraceUtil.getInstance( + DatastoreOptions.newBuilder() + .setProjectId("test-project") + .setCredentials(NoCredentials.getInstance()) + .build()); + assertThat(traceUtil instanceof DisabledTraceUtil).isTrue(); + } + + @Test + public void tracingDisabledOptionsUseDisabledTraceUtil() { + TraceUtil traceUtil = + TraceUtil.getInstance( + DatastoreOptions.newBuilder() + .setProjectId("test-project") + .setCredentials(NoCredentials.getInstance()) + .setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder().setTracingEnabled(false).build()) + .build()); + assertThat(traceUtil instanceof DisabledTraceUtil).isTrue(); + } + + @Test + public void tracingEnabledOptionsUseEnabledTraceUtil() { + TraceUtil traceUtil = + TraceUtil.getInstance( + DatastoreOptions.newBuilder() + .setProjectId("test-project") + .setCredentials(NoCredentials.getInstance()) + .setOpenTelemetryOptions( + DatastoreOpenTelemetryOptions.newBuilder().setTracingEnabled(true).build()) + .build()); + assertThat(traceUtil instanceof EnabledTraceUtil).isTrue(); + } +} From 63218dc8bca3a408bcc8b72a0752a550032ddf7d Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 20:50:24 +0000 Subject: [PATCH 079/102] chore(main): release 2.21.4-SNAPSHOT (#1571) :robot: I have created a release *beep* *boop* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please). --- datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 +++++----- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 ++++++------ proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 3922a2757..d55ccc6af 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.3 + 2.21.4-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.21.3 + 2.21.4-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index a13792e8f..a3a740e7c 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.3 + 2.21.4-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.3 + 2.21.4-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.3 + 2.21.4-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.3 + 0.112.4-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.3 + 2.21.4-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 5137728ea..23d17e836 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.3 + 2.21.4-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.3 + 2.21.4-SNAPSHOT google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index fe38bbef1..8f51e25fc 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.3 + 2.21.4-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.3 + 2.21.4-SNAPSHOT diff --git a/pom.xml b/pom.xml index 23737d6b3..1d30d1961 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.3 + 2.21.4-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.3 + 2.21.4-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.3 + 2.21.4-SNAPSHOT com.google.cloud google-cloud-datastore - 2.21.3 + 2.21.4-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.3 + 0.112.4-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.21.3 + 2.21.4-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 5ddd934ff..10b83d827 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.3 + 2.21.4-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.3 + 2.21.4-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index a2bceec90..437485dc0 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.3 + 0.112.4-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.3 + 2.21.4-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index af7856d35..bf1562ed7 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.3 + 2.21.4-SNAPSHOT diff --git a/versions.txt b/versions.txt index 9cc37ac81..8622f54a2 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.3:2.21.3 -google-cloud-datastore-bom:2.21.3:2.21.3 -proto-google-cloud-datastore-v1:0.112.3:0.112.3 -datastore-v1-proto-client:2.21.3:2.21.3 -proto-google-cloud-datastore-admin-v1:2.21.3:2.21.3 -grpc-google-cloud-datastore-admin-v1:2.21.3:2.21.3 +google-cloud-datastore:2.21.3:2.21.4-SNAPSHOT +google-cloud-datastore-bom:2.21.3:2.21.4-SNAPSHOT +proto-google-cloud-datastore-v1:0.112.3:0.112.4-SNAPSHOT +datastore-v1-proto-client:2.21.3:2.21.4-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.21.3:2.21.4-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.21.3:2.21.4-SNAPSHOT From b43a5c3676792509bcc0ab56e6410923eb7b567b Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:43:06 -0400 Subject: [PATCH 080/102] chore: Update generation configuration at Sat Sep 21 02:20:09 UTC 2024 (#1586) * chore: Update generation configuration at Fri Sep 20 02:21:45 UTC 2024 * chore: generate libraries at Fri Sep 20 02:22:36 UTC 2024 * chore: Update generation configuration at Sat Sep 21 02:20:09 UTC 2024 --- README.md | 2 +- generation_config.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d8b43bd0a..144f2e567 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ 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.46.0') +implementation platform('com.google.cloud:libraries-bom:26.47.0') implementation 'com.google.cloud:google-cloud-datastore' ``` diff --git a/generation_config.yaml b/generation_config.yaml index cd940462a..99ade5352 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ gapic_generator_version: 2.45.0 -googleapis_commitish: 607c2ae82620153880a66898bcbf0a46d38d7d10 -libraries_bom_version: 26.46.0 +googleapis_commitish: a18d9b2c3563527b26c4b713469e795b92795271 +libraries_bom_version: 26.47.0 libraries: - api_shortname: datastore name_pretty: Cloud Datastore From 9d719e809ea830d8602399b72e432580f14ae6bd Mon Sep 17 00:00:00 2001 From: Jimit Shah <57637300+jimit-j-shah@users.noreply.github.com> Date: Tue, 24 Sep 2024 11:15:37 -0700 Subject: [PATCH 081/102] fix: Update opentelemetry-sdk dependency to be test-only (#1595) * fix: Update opentelemetry-sdk dependency to be test-only * fix: move RemoteDatastoreHelper into `test` * fix: Add CLIRR exception for 8001: Removed class for `RemoteDatastoreHelper` --- google-cloud-datastore/clirr-ignored-differences.xml | 5 +++++ google-cloud-datastore/pom.xml | 1 + .../cloud/datastore/testing/RemoteDatastoreHelper.java | 0 3 files changed, 6 insertions(+) rename google-cloud-datastore/src/{main => test}/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java (100%) diff --git a/google-cloud-datastore/clirr-ignored-differences.xml b/google-cloud-datastore/clirr-ignored-differences.xml index 847ba4f4c..6275f05c6 100644 --- a/google-cloud-datastore/clirr-ignored-differences.xml +++ b/google-cloud-datastore/clirr-ignored-differences.xml @@ -67,4 +67,9 @@ com/google/cloud/datastore/TraceUtil 8001 + + com/google/cloud/datastore/testing/RemoteDatastoreHelper + 8001 + + diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 23d17e836..26b2825c5 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -200,6 +200,7 @@ io.opentelemetry opentelemetry-sdk ${opentelemetry.version} + test io.opentelemetry diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java similarity index 100% rename from google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java rename to google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java From 23c5c2662117370c66c611604c56b878d41f4738 Mon Sep 17 00:00:00 2001 From: Jimit Shah <57637300+jimit-j-shah@users.noreply.github.com> Date: Tue, 24 Sep 2024 12:20:24 -0700 Subject: [PATCH 082/102] fix: Update opentelemetry.version to 1.42.1 to match the BOM version (#1598) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 26b2825c5..d43a5e86e 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -16,7 +16,7 @@ google-cloud-datastore - 1.42.0 + 1.42.1 From 2db9e439189baf8f97127f6cff1de5d47efb0073 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 25 Sep 2024 00:17:19 +0200 Subject: [PATCH 083/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.36.0 (#1590) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 9d1576d94..158a36c96 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.35.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.36.0 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 41590566e..5ca041eb2 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.35.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.36.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index d6941e80e..20592bf3e 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.35.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.36.0" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index a3a740e7c..34f4f9ec9 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.35.0 + 3.36.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 1d30d1961..04d25a179 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.35.0 + 3.36.0 From d2a214cd38bdac990d57603952a546c5fefe2acf Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Tue, 24 Sep 2024 19:10:26 -0400 Subject: [PATCH 084/102] chore: Update generation configuration at Tue Sep 24 02:23:54 UTC 2024 (#1593) --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index 99ade5352..f707b9034 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ gapic_generator_version: 2.45.0 -googleapis_commitish: a18d9b2c3563527b26c4b713469e795b92795271 +googleapis_commitish: 534e49c0ca0b9297f4ede6f119a0db054b35dd1e libraries_bom_version: 26.47.0 libraries: - api_shortname: datastore From fae3b74eaa3494a27fd43f56435c01e8fc09e5ee Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 25 Sep 2024 17:41:43 +0200 Subject: [PATCH 085/102] deps: update dependency com.google.cloud:gapic-libraries-bom to v1.43.0 (#1584) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index d43a5e86e..61426ea1e 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -24,7 +24,7 @@ com.google.cloud gapic-libraries-bom - 1.37.0 + 1.43.0 pom import From 5d078a4b294d071716f51f0d4b9baa5d65a0fe90 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 25 Sep 2024 17:41:54 +0200 Subject: [PATCH 086/102] deps: update dependency com.google.guava:guava-testlib to v33.3.1-jre (#1592) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 61426ea1e..e7a4971b3 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -151,7 +151,7 @@ com.google.guava guava-testlib - 33.3.0-jre + 33.3.1-jre test From 1286792d7b49229d698df652cd117d229a5cd97e Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Wed, 25 Sep 2024 16:28:12 -0700 Subject: [PATCH 087/102] feat: add sample code for multiple inequalities indexing consideration query (#1579) * feat: add sample code for multiple inequalities indexing consideration query * fix formatting * fix formatting * fix formatting * fix formatting * Add index * Correct indexes * Add orderfileds query * fix orderby asc * Move region tag to include import statements --- .../filters/IndexingConsiderationQuery.java | 64 +++++++++++++ .../datastore/filters/OrderFieldsQuery.java | 63 ++++++++++++ .../filters/MultiIneqQuerySampleIT.java | 96 +++++++++++++++++++ .../snippets/src/test/resources/index.yaml | 4 + 4 files changed, 227 insertions(+) create mode 100644 samples/snippets/src/main/java/com/example/datastore/filters/IndexingConsiderationQuery.java create mode 100644 samples/snippets/src/main/java/com/example/datastore/filters/OrderFieldsQuery.java create mode 100644 samples/snippets/src/test/java/com/example/datastore/filters/MultiIneqQuerySampleIT.java diff --git a/samples/snippets/src/main/java/com/example/datastore/filters/IndexingConsiderationQuery.java b/samples/snippets/src/main/java/com/example/datastore/filters/IndexingConsiderationQuery.java new file mode 100644 index 000000000..f0c9cd5da --- /dev/null +++ b/samples/snippets/src/main/java/com/example/datastore/filters/IndexingConsiderationQuery.java @@ -0,0 +1,64 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.datastore.filters; + +// sample-metadata: +// title: Queries with indexing considerations +// description: The following query produces a result set +// that is ordered according to the index definition. + +// [START datastore_query_indexing_considerations] + +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.Entity; +import com.google.cloud.datastore.Query; +import com.google.cloud.datastore.QueryResults; +import com.google.cloud.datastore.StructuredQuery.CompositeFilter; +import com.google.cloud.datastore.StructuredQuery.Filter; +import com.google.cloud.datastore.StructuredQuery.OrderBy; +import com.google.cloud.datastore.StructuredQuery.PropertyFilter; + +public class IndexingConsiderationQuery { + public static void invoke() throws Exception { + + // Instantiates a client + Datastore datastore = DatastoreOptions.getDefaultInstance().getService(); + + // Build a query with multi inequal filters and optimized index order of index properties. + Query query = Query.newEntityQueryBuilder() + .setKind("employees") + .setFilter(CompositeFilter.and( + PropertyFilter.gt("salary", 100000), + PropertyFilter.gt("experience", 0))) + .setOrderBy(OrderBy.asc("salary"), OrderBy.asc("experience")) + .build(); + + // Get the results back from Datastore + QueryResults results = datastore.run(query); + + if (!results.hasNext()) { + throw new Exception("query yielded no results"); + } + + while (results.hasNext()) { + Entity entity = results.next(); + System.out.printf("Entity: %s%n", entity); + } + } +} +// [END datastore_query_indexing_considerations] diff --git a/samples/snippets/src/main/java/com/example/datastore/filters/OrderFieldsQuery.java b/samples/snippets/src/main/java/com/example/datastore/filters/OrderFieldsQuery.java new file mode 100644 index 000000000..1739dbade --- /dev/null +++ b/samples/snippets/src/main/java/com/example/datastore/filters/OrderFieldsQuery.java @@ -0,0 +1,63 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.datastore.filters; + +// sample-metadata: +// title: Queries with order fileds +// description: The following query order properties +// in the decreasing order of query constraint selectivity. + +// [START datastore_query_order_fields] + +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.Entity; +import com.google.cloud.datastore.Query; +import com.google.cloud.datastore.QueryResults; +import com.google.cloud.datastore.StructuredQuery.Filter; +import com.google.cloud.datastore.StructuredQuery.OrderBy; +import com.google.cloud.datastore.StructuredQuery.PropertyFilter; + +public class OrderFieldsQuery { + public static void invoke() throws Exception { + + // Instantiates a client + Datastore datastore = DatastoreOptions.getDefaultInstance().getService(); + + // Build a query with order properties in the decreasing order of query constraint selectivity. + Query query = + Query.newEntityQueryBuilder() + .setKind("employees") + .setFilter(PropertyFilter.gt("salary", 100000)) + .setOrderBy(OrderBy.asc("salary")) + .build(); + + // Get the results back from Datastore + QueryResults results = datastore.run(query); + // Order results by `experience` + + if (!results.hasNext()) { + throw new Exception("query yielded no results"); + } + + while (results.hasNext()) { + Entity entity = results.next(); + System.out.printf("Entity: %s%n", entity); + } + } +} +// [END datastore_query_order_fields] diff --git a/samples/snippets/src/test/java/com/example/datastore/filters/MultiIneqQuerySampleIT.java b/samples/snippets/src/test/java/com/example/datastore/filters/MultiIneqQuerySampleIT.java new file mode 100644 index 000000000..6fee2a806 --- /dev/null +++ b/samples/snippets/src/test/java/com/example/datastore/filters/MultiIneqQuerySampleIT.java @@ -0,0 +1,96 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.datastore.filters; + +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.Entity; +import com.google.cloud.datastore.Key; +import com.rule.SystemsOutRule; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +@SuppressWarnings("checkstyle:abbreviationaswordinname") +public class MultiIneqQuerySampleIT { + + private final Datastore datastore = DatastoreOptions.getDefaultInstance().getService(); + + private Key employeeKey1; + private Key employeeKey2; + private Key employeeKey3; + + @Rule + public final SystemsOutRule systemsOutRule = new SystemsOutRule(); + + @Before + public void setUp() { + employeeKey1 = datastore.newKeyFactory().setKind("employees").newKey("employee1"); + Entity employee1 = Entity.newBuilder(employeeKey1) + .set("name", "Alice") + .set("salary", 100001) + .set("experience", 10) + .build(); + + employeeKey2 = datastore.newKeyFactory().setKind("employees").newKey("employee2"); + Entity employee2 = Entity.newBuilder(employeeKey2) + .set("name", "Bob") + .set("salary", 90000) + .set("experience", 5) + .build(); + + employeeKey3 = datastore.newKeyFactory().setKind("employees").newKey("employee3"); + Entity employee3 = Entity.newBuilder(employeeKey3) + .set("name", "Jay") + .set("salary", 120000) + .set("experience", 15) + .build(); + + datastore.put(employee1); + datastore.put(employee2); + datastore.put(employee3); + } + + @After + public void tearDown() { + datastore.delete(employeeKey1); + datastore.delete(employeeKey2); + datastore.delete(employeeKey3); + } + + @Test + public void testIndexingConsiderationQuery() throws Exception { + // Act + IndexingConsiderationQuery.invoke(); + + // Assert + systemsOutRule.assertContains("Entity"); + } + + @Test + public void testOrderFieldsQuery() throws Exception { + // Act + OrderFieldsQuery.invoke(); + + // Assert + systemsOutRule.assertContains("Entity"); + } +} diff --git a/samples/snippets/src/test/resources/index.yaml b/samples/snippets/src/test/resources/index.yaml index 8652a0ee0..5f2f0c74a 100644 --- a/samples/snippets/src/test/resources/index.yaml +++ b/samples/snippets/src/test/resources/index.yaml @@ -23,3 +23,7 @@ indexes: properties: - name: tag - name: tag +- kind: employees + properties: + - name: salary + - name: experience \ No newline at end of file From 9e9786e7c11c800abd29724284fdf2b7aaf45819 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 26 Sep 2024 16:38:40 +0200 Subject: [PATCH 088/102] chore(deps): update dependency com.google.cloud:libraries-bom to v26.47.0 (#1578) --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 1cc4e9152..677692680 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 26.45.0 + 26.47.0 pom import From e1b7d4b205312d7d4c2a285f3d1f61388da65c83 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 26 Sep 2024 22:26:06 +0200 Subject: [PATCH 089/102] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.36.1 (#1602) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 158a36c96..aabf59292 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -14,6 +14,6 @@ jobs: shell: bash run: .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.36.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.36.1 with: bom-path: google-cloud-datastore-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 5ca041eb2..b39cf017d 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.36.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.36.1" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index 20592bf3e..c59887969 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.36.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.36.1" } env_vars: { diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 34f4f9ec9..fc281ecdd 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.36.0 + 3.36.1 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 04d25a179..0942649db 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.36.0 + 3.36.1 From 8f74a49c5982d00bd168e78671163683f7b41126 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 26 Sep 2024 22:27:04 +0200 Subject: [PATCH 090/102] deps: update dependency com.google.testparameterinjector:test-parameter-injector to v1.17 (#1585) --- google-cloud-datastore/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index e7a4971b3..8f7b315a7 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -192,7 +192,7 @@ com.google.testparameterinjector test-parameter-injector - 1.16 + 1.17 test From df9705b0c9cb561336ac4dd1e8a4bf09b3f51ebd Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 09:25:46 -0700 Subject: [PATCH 091/102] chore(main): release 2.22.0 (#1589) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 23 +++++++++++++++++++ datastore-v1-proto-client/pom.xml | 4 ++-- google-cloud-datastore-bom/pom.xml | 10 ++++---- google-cloud-datastore/pom.xml | 4 ++-- grpc-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- pom.xml | 12 +++++----- proto-google-cloud-datastore-admin-v1/pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 12 +++++----- 10 files changed, 51 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a38532a81..e2670cb02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [2.22.0](https://github.com/googleapis/java-datastore/compare/v2.21.3...v2.22.0) (2024-09-26) + + +### Features + +* Add sample code for multiple inequalities indexing consideration query ([#1579](https://github.com/googleapis/java-datastore/issues/1579)) ([1286792](https://github.com/googleapis/java-datastore/commit/1286792d7b49229d698df652cd117d229a5cd97e)) +* Introducing Tracing with OpenTelemetry API [#1537](https://github.com/googleapis/java-datastore/issues/1537) ([#1576](https://github.com/googleapis/java-datastore/issues/1576)) ([5440c22](https://github.com/googleapis/java-datastore/commit/5440c22364074c108450c3a748a6a17d5f1dddda)) + + +### Bug Fixes + +* Update opentelemetry-sdk dependency to be test-only ([#1595](https://github.com/googleapis/java-datastore/issues/1595)) ([9d719e8](https://github.com/googleapis/java-datastore/commit/9d719e809ea830d8602399b72e432580f14ae6bd)) +* Update opentelemetry.version to 1.42.1 to match the BOM version ([#1598](https://github.com/googleapis/java-datastore/issues/1598)) ([23c5c26](https://github.com/googleapis/java-datastore/commit/23c5c2662117370c66c611604c56b878d41f4738)) + + +### Dependencies + +* Update dependency com.google.cloud:gapic-libraries-bom to v1.43.0 ([#1584](https://github.com/googleapis/java-datastore/issues/1584)) ([fae3b74](https://github.com/googleapis/java-datastore/commit/fae3b74eaa3494a27fd43f56435c01e8fc09e5ee)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.36.0 ([#1590](https://github.com/googleapis/java-datastore/issues/1590)) ([2db9e43](https://github.com/googleapis/java-datastore/commit/2db9e439189baf8f97127f6cff1de5d47efb0073)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.36.1 ([#1602](https://github.com/googleapis/java-datastore/issues/1602)) ([e1b7d4b](https://github.com/googleapis/java-datastore/commit/e1b7d4b205312d7d4c2a285f3d1f61388da65c83)) +* Update dependency com.google.guava:guava-testlib to v33.3.1-jre ([#1592](https://github.com/googleapis/java-datastore/issues/1592)) ([5d078a4](https://github.com/googleapis/java-datastore/commit/5d078a4b294d071716f51f0d4b9baa5d65a0fe90)) +* Update dependency com.google.testparameterinjector:test-parameter-injector to v1.17 ([#1585](https://github.com/googleapis/java-datastore/issues/1585)) ([8f74a49](https://github.com/googleapis/java-datastore/commit/8f74a49c5982d00bd168e78671163683f7b41126)) + ## [2.21.3](https://github.com/googleapis/java-datastore/compare/v2.21.2...v2.21.3) (2024-09-11) diff --git a/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index d55ccc6af..34c4d9475 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.4-SNAPSHOT + 2.22.0 com.google.cloud google-cloud-datastore-parent - 2.21.4-SNAPSHOT + 2.22.0 jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index fc281ecdd..4c3ab17bb 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.21.4-SNAPSHOT + 2.22.0 pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.21.4-SNAPSHOT + 2.22.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.4-SNAPSHOT + 2.22.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.4-SNAPSHOT + 0.113.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.4-SNAPSHOT + 2.22.0 diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 8f7b315a7..9e91f9ca5 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.21.4-SNAPSHOT + 2.22.0 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.21.4-SNAPSHOT + 2.22.0 google-cloud-datastore diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 8f51e25fc..966e0c054 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.4-SNAPSHOT + 2.22.0 grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.4-SNAPSHOT + 2.22.0 diff --git a/pom.xml b/pom.xml index 0942649db..a90b44f5e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.21.4-SNAPSHOT + 2.22.0 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,27 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.4-SNAPSHOT + 2.22.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.21.4-SNAPSHOT + 2.22.0 com.google.cloud google-cloud-datastore - 2.21.4-SNAPSHOT + 2.22.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.4-SNAPSHOT + 0.113.0 com.google.cloud.datastore datastore-v1-proto-client - 2.21.4-SNAPSHOT + 2.22.0 com.google.api.grpc diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 10b83d827..9d3256b3f 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.21.4-SNAPSHOT + 2.22.0 proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.21.4-SNAPSHOT + 2.22.0 diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 437485dc0..2e34da3af 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.112.4-SNAPSHOT + 0.113.0 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.21.4-SNAPSHOT + 2.22.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index bf1562ed7..973390f5d 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.21.4-SNAPSHOT + 2.22.0 diff --git a/versions.txt b/versions.txt index 8622f54a2..191d0abf1 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,9 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.21.3:2.21.4-SNAPSHOT -google-cloud-datastore-bom:2.21.3:2.21.4-SNAPSHOT -proto-google-cloud-datastore-v1:0.112.3:0.112.4-SNAPSHOT -datastore-v1-proto-client:2.21.3:2.21.4-SNAPSHOT -proto-google-cloud-datastore-admin-v1:2.21.3:2.21.4-SNAPSHOT -grpc-google-cloud-datastore-admin-v1:2.21.3:2.21.4-SNAPSHOT +google-cloud-datastore:2.22.0:2.22.0 +google-cloud-datastore-bom:2.22.0:2.22.0 +proto-google-cloud-datastore-v1:0.113.0:0.113.0 +datastore-v1-proto-client:2.22.0:2.22.0 +proto-google-cloud-datastore-admin-v1:2.22.0:2.22.0 +grpc-google-cloud-datastore-admin-v1:2.22.0:2.22.0 From 678eee2dfb6d447a852edd436137f8ebfbe50d74 Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 12:27:32 -0400 Subject: [PATCH 092/102] chore: Update generation configuration at Sat Sep 28 02:22:38 UTC 2024 (#1599) * chore: Update generation configuration at Wed Sep 25 02:24:24 UTC 2024 * update gen script * chore: generate libraries at Wed Sep 25 23:31:54 UTC 2024 * chore: Update generation configuration at Thu Sep 26 02:23:26 UTC 2024 * chore: Update generation configuration at Fri Sep 27 02:23:56 UTC 2024 * chore: Update generation configuration at Sat Sep 28 02:22:38 UTC 2024 --------- Co-authored-by: Joe Wang --- .../scripts/hermetic_library_generation.sh | 45 +++++++++---------- generation_config.yaml | 4 +- .../datastore/admin/v1/CommonMetadata.java | 2 +- .../admin/v1/CommonMetadataOrBuilder.java | 2 +- .../admin/v1/CreateIndexRequest.java | 2 +- .../admin/v1/CreateIndexRequestOrBuilder.java | 2 +- .../admin/v1/DatastoreAdminProto.java | 2 +- .../DatastoreFirestoreMigrationMetadata.java | 2 +- ...reFirestoreMigrationMetadataOrBuilder.java | 2 +- .../admin/v1/DeleteIndexRequest.java | 2 +- .../admin/v1/DeleteIndexRequestOrBuilder.java | 2 +- .../datastore/admin/v1/EntityFilter.java | 2 +- .../admin/v1/EntityFilterOrBuilder.java | 2 +- .../admin/v1/ExportEntitiesMetadata.java | 2 +- .../v1/ExportEntitiesMetadataOrBuilder.java | 2 +- .../admin/v1/ExportEntitiesRequest.java | 2 +- .../v1/ExportEntitiesRequestOrBuilder.java | 2 +- .../admin/v1/ExportEntitiesResponse.java | 2 +- .../v1/ExportEntitiesResponseOrBuilder.java | 2 +- .../datastore/admin/v1/GetIndexRequest.java | 2 +- .../admin/v1/GetIndexRequestOrBuilder.java | 2 +- .../admin/v1/ImportEntitiesMetadata.java | 2 +- .../v1/ImportEntitiesMetadataOrBuilder.java | 2 +- .../admin/v1/ImportEntitiesRequest.java | 2 +- .../v1/ImportEntitiesRequestOrBuilder.java | 2 +- .../com/google/datastore/admin/v1/Index.java | 2 +- .../admin/v1/IndexOperationMetadata.java | 2 +- .../v1/IndexOperationMetadataOrBuilder.java | 2 +- .../datastore/admin/v1/IndexOrBuilder.java | 2 +- .../google/datastore/admin/v1/IndexProto.java | 2 +- .../admin/v1/ListIndexesRequest.java | 2 +- .../admin/v1/ListIndexesRequestOrBuilder.java | 2 +- .../admin/v1/ListIndexesResponse.java | 2 +- .../v1/ListIndexesResponseOrBuilder.java | 2 +- .../admin/v1/MigrationProgressEvent.java | 2 +- .../v1/MigrationProgressEventOrBuilder.java | 2 +- .../datastore/admin/v1/MigrationProto.java | 2 +- .../datastore/admin/v1/MigrationState.java | 2 +- .../admin/v1/MigrationStateEvent.java | 2 +- .../v1/MigrationStateEventOrBuilder.java | 2 +- .../datastore/admin/v1/MigrationStep.java | 2 +- .../datastore/admin/v1/OperationType.java | 2 +- .../google/datastore/admin/v1/Progress.java | 2 +- .../datastore/admin/v1/ProgressOrBuilder.java | 2 +- .../google/datastore/v1/AggregationQuery.java | 2 +- .../v1/AggregationQueryOrBuilder.java | 2 +- .../datastore/v1/AggregationResult.java | 2 +- .../datastore/v1/AggregationResultBatch.java | 2 +- .../v1/AggregationResultBatchOrBuilder.java | 2 +- .../v1/AggregationResultOrBuilder.java | 2 +- .../datastore/v1/AggregationResultProto.java | 2 +- .../datastore/v1/AllocateIdsRequest.java | 2 +- .../v1/AllocateIdsRequestOrBuilder.java | 2 +- .../datastore/v1/AllocateIdsResponse.java | 2 +- .../v1/AllocateIdsResponseOrBuilder.java | 2 +- .../com/google/datastore/v1/ArrayValue.java | 2 +- .../datastore/v1/ArrayValueOrBuilder.java | 2 +- .../datastore/v1/BeginTransactionRequest.java | 2 +- .../v1/BeginTransactionRequestOrBuilder.java | 2 +- .../v1/BeginTransactionResponse.java | 2 +- .../v1/BeginTransactionResponseOrBuilder.java | 2 +- .../google/datastore/v1/CommitRequest.java | 2 +- .../datastore/v1/CommitRequestOrBuilder.java | 2 +- .../google/datastore/v1/CommitResponse.java | 2 +- .../datastore/v1/CommitResponseOrBuilder.java | 2 +- .../google/datastore/v1/CompositeFilter.java | 2 +- .../v1/CompositeFilterOrBuilder.java | 2 +- .../google/datastore/v1/DatastoreProto.java | 2 +- .../java/com/google/datastore/v1/Entity.java | 2 +- .../google/datastore/v1/EntityOrBuilder.java | 2 +- .../com/google/datastore/v1/EntityProto.java | 2 +- .../com/google/datastore/v1/EntityResult.java | 2 +- .../datastore/v1/EntityResultOrBuilder.java | 2 +- .../google/datastore/v1/ExecutionStats.java | 2 +- .../datastore/v1/ExecutionStatsOrBuilder.java | 2 +- .../google/datastore/v1/ExplainMetrics.java | 2 +- .../datastore/v1/ExplainMetricsOrBuilder.java | 2 +- .../google/datastore/v1/ExplainOptions.java | 2 +- .../datastore/v1/ExplainOptionsOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Filter.java | 2 +- .../google/datastore/v1/FilterOrBuilder.java | 2 +- .../com/google/datastore/v1/GqlQuery.java | 2 +- .../datastore/v1/GqlQueryOrBuilder.java | 2 +- .../datastore/v1/GqlQueryParameter.java | 2 +- .../v1/GqlQueryParameterOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Key.java | 2 +- .../com/google/datastore/v1/KeyOrBuilder.java | 2 +- .../google/datastore/v1/KindExpression.java | 2 +- .../datastore/v1/KindExpressionOrBuilder.java | 2 +- .../google/datastore/v1/LookupRequest.java | 2 +- .../datastore/v1/LookupRequestOrBuilder.java | 2 +- .../google/datastore/v1/LookupResponse.java | 2 +- .../datastore/v1/LookupResponseOrBuilder.java | 2 +- .../com/google/datastore/v1/Mutation.java | 2 +- .../datastore/v1/MutationOrBuilder.java | 2 +- .../google/datastore/v1/MutationResult.java | 2 +- .../datastore/v1/MutationResultOrBuilder.java | 2 +- .../com/google/datastore/v1/PartitionId.java | 2 +- .../datastore/v1/PartitionIdOrBuilder.java | 2 +- .../com/google/datastore/v1/PlanSummary.java | 2 +- .../datastore/v1/PlanSummaryOrBuilder.java | 2 +- .../com/google/datastore/v1/Projection.java | 2 +- .../datastore/v1/ProjectionOrBuilder.java | 2 +- .../google/datastore/v1/PropertyFilter.java | 2 +- .../datastore/v1/PropertyFilterOrBuilder.java | 2 +- .../com/google/datastore/v1/PropertyMask.java | 2 +- .../datastore/v1/PropertyMaskOrBuilder.java | 2 +- .../google/datastore/v1/PropertyOrder.java | 2 +- .../datastore/v1/PropertyOrderOrBuilder.java | 2 +- .../datastore/v1/PropertyReference.java | 2 +- .../v1/PropertyReferenceOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Query.java | 2 +- .../google/datastore/v1/QueryOrBuilder.java | 2 +- .../datastore/v1/QueryProfileProto.java | 2 +- .../com/google/datastore/v1/QueryProto.java | 2 +- .../google/datastore/v1/QueryResultBatch.java | 2 +- .../v1/QueryResultBatchOrBuilder.java | 2 +- .../com/google/datastore/v1/ReadOptions.java | 2 +- .../datastore/v1/ReadOptionsOrBuilder.java | 2 +- .../datastore/v1/ReserveIdsRequest.java | 2 +- .../v1/ReserveIdsRequestOrBuilder.java | 2 +- .../datastore/v1/ReserveIdsResponse.java | 2 +- .../v1/ReserveIdsResponseOrBuilder.java | 2 +- .../google/datastore/v1/RollbackRequest.java | 2 +- .../v1/RollbackRequestOrBuilder.java | 2 +- .../google/datastore/v1/RollbackResponse.java | 2 +- .../v1/RollbackResponseOrBuilder.java | 2 +- .../v1/RunAggregationQueryRequest.java | 2 +- .../RunAggregationQueryRequestOrBuilder.java | 2 +- .../v1/RunAggregationQueryResponse.java | 2 +- .../RunAggregationQueryResponseOrBuilder.java | 2 +- .../google/datastore/v1/RunQueryRequest.java | 2 +- .../v1/RunQueryRequestOrBuilder.java | 2 +- .../google/datastore/v1/RunQueryResponse.java | 2 +- .../v1/RunQueryResponseOrBuilder.java | 2 +- .../datastore/v1/TransactionOptions.java | 2 +- .../v1/TransactionOptionsOrBuilder.java | 2 +- .../java/com/google/datastore/v1/Value.java | 2 +- .../google/datastore/v1/ValueOrBuilder.java | 2 +- 139 files changed, 161 insertions(+), 162 deletions(-) diff --git a/.github/scripts/hermetic_library_generation.sh b/.github/scripts/hermetic_library_generation.sh index 6c3f22d8f..49a7414cf 100644 --- a/.github/scripts/hermetic_library_generation.sh +++ b/.github/scripts/hermetic_library_generation.sh @@ -67,20 +67,24 @@ message="chore: generate libraries at $(date)" git checkout "${target_branch}" git checkout "${current_branch}" -# if the last commit doesn't contain changes to generation configuration, -# do not generate again as the result will be the same. -change_of_last_commit="$(git diff-tree --no-commit-id --name-only HEAD~1..HEAD -r)" -if [[ ! ("${change_of_last_commit}" == *"${generation_config}"*) ]]; then - echo "The last commit doesn't contain any changes to the generation_config.yaml, skipping the whole generation process." || true - exit 0 -fi + # copy generation configuration from target branch to current branch. git show "${target_branch}":"${generation_config}" > "${baseline_generation_config}" -config_diff=$(diff "${generation_config}" "${baseline_generation_config}" || true) # parse image tag from the generation configuration. image_tag=$(grep "gapic_generator_version" "${generation_config}" | cut -d ':' -f 2 | xargs) +repo_root_dir=$(pwd) +mkdir -p "${repo_root_dir}/output" +# download api definitions from googleapis repository +googleapis_commitish=$(grep googleapis_commitish "${generation_config}" | cut -d ":" -f 2 | xargs) +api_def_dir=$(mktemp -d) +git clone https://github.com/googleapis/googleapis.git "${api_def_dir}" +pushd "${api_def_dir}" +git checkout "${googleapis_commitish}" +cp -r google/ grafeas/ "${repo_root_dir}/output" +popd + # run hermetic code generation docker image. docker run \ --rm \ @@ -90,26 +94,21 @@ docker run \ --baseline-generation-config-path="${workspace_name}/${baseline_generation_config}" \ --current-generation-config-path="${workspace_name}/${generation_config}" +# remove api definitions after generation +rm -rf "${api_def_dir}" # commit the change to the pull request. -if [[ $(basename $(pwd)) == "google-cloud-java" ]]; then - git add java-* pom.xml gapic-libraries-bom/pom.xml versions.txt -else - # The image leaves intermediate folders and files it works with. Here we remove them - rm -rdf output googleapis "${baseline_generation_config}" - git add --all -- ':!pr_description.txt' -fi +rm -rdf output googleapis "${baseline_generation_config}" +git add --all -- ':!pr_description.txt' ':!hermetic_library_generation.sh' changed_files=$(git diff --cached --name-only) -if [[ "${changed_files}" == "" ]]; then - echo "There is no generated code change with the generation config change ${config_diff}." - echo "Skip committing to the pull request." - exit 0 +if [[ "${changed_files}" != "" ]]; then + echo "Commit changes..." + git commit -m "${message}" + git push +else + echo "There is no generated code change, skip commit." fi -echo "Configuration diff:" -echo "${config_diff}" -git commit -m "${message}" -git push # set pr body if pr_description.txt is generated. if [[ -f "pr_description.txt" ]]; then pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") diff --git a/generation_config.yaml b/generation_config.yaml index f707b9034..bff4d8b41 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ -gapic_generator_version: 2.45.0 -googleapis_commitish: 534e49c0ca0b9297f4ede6f119a0db054b35dd1e +gapic_generator_version: 2.46.1 +googleapis_commitish: d6f184876ec67295addccbb70aa4af622e049a7e libraries_bom_version: 26.47.0 libraries: - api_shortname: datastore diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java index 27c9ab448..3bd274168 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java index 913db1a5a..3ef2919c4 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CommonMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface CommonMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java index f9e6986e1..6a14a8152 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java index 6440f28fc..0d87e8faa 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/CreateIndexRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface CreateIndexRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java index bcea2e23a..838a55b36 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public final class DatastoreAdminProto { diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java index 072da0b59..ea0e28ff1 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java index 1476b0451..2f6c2ae7c 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreFirestoreMigrationMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface DatastoreFirestoreMigrationMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java index 19311057e..d4f87d2a8 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java index b2e5e6325..ab53b6df5 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DeleteIndexRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface DeleteIndexRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java index f48b9fc16..3a6b14377 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilter.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java index ff9abf72c..3f75daeff 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/EntityFilterOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface EntityFilterOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java index a48521aab..a6bded093 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java index dd09e14bf..099f4bb5b 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ExportEntitiesMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java index a87805a6c..88eeb5b0f 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java index e54ff1d1e..9ddd587f9 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ExportEntitiesRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java index f629356dd..b4f183c04 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java index a71ac8e9d..338f4ff99 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ExportEntitiesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ExportEntitiesResponseOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java index e1d6886b2..2513a6c2b 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java index 5c5d811d7..da3d4617d 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/GetIndexRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface GetIndexRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java index 47de2e41e..9e8265e49 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java index 462bfacf2..2ed2c3684 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ImportEntitiesMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java index 43f3a746e..1ca992dd5 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java index a38f50917..c1d8424fe 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ImportEntitiesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ImportEntitiesRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java index a2649edfb..cb5c4b96c 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Index.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/index.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java index a153b6848..c524fb3b2 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadata.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java index 538df9521..e85b0747a 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOperationMetadataOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface IndexOperationMetadataOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java index 459a0ef57..b45823f6a 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/index.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface IndexOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java index f350301db..e44ad1c73 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/IndexProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/index.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public final class IndexProto { diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java index 8dcdac9b9..8472db7dc 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java index 4a3ea0672..dc18f1b63 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ListIndexesRequestOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java index 63bc8361f..abce952f3 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java index 83ee6d607..a305da039 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ListIndexesResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ListIndexesResponseOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java index 34b32c5c9..a35cd49ca 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEvent.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java index 1b746f571..4db619cd0 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProgressEventOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface MigrationProgressEventOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java index c5eae4353..63e6e1186 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public final class MigrationProto { diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java index 0ffd47e82..a5b46ab83 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationState.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java index 0e3913ecd..203980b3a 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEvent.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java index a96dd7999..de901f9e3 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStateEventOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface MigrationStateEventOrBuilder diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java index ad98ba777..46a80ff31 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/MigrationStep.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/migration.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java index 644f8de69..34316b3be 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/OperationType.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java index bacd7cd7e..7e010b15d 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/Progress.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; /** diff --git a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java index 57bc88fc4..cc6b6c27b 100644 --- a/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java +++ b/proto-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/ProgressOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/admin/v1/datastore_admin.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.admin.v1; public interface ProgressOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java index 5207578bd..fa056f1b1 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java index 4d34dc107..d71b7a7ec 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQueryOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface AggregationQueryOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java index 9ad3eb613..5566884f0 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java index 8b0a4ddad..d40e87f16 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatch.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java index 6dc72d389..280f19bd4 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultBatchOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface AggregationResultBatchOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java index 27ab61915..470d13243 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface AggregationResultOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java index 254cef18a..5a3b32a73 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationResultProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/aggregation_result.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public final class AggregationResultProto { diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequest.java index 9a7568b5e..6aeec8c61 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequestOrBuilder.java index 67bc67b1d..e39eca958 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface AllocateIdsRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponse.java index 091cc9964..25b3b348c 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponseOrBuilder.java index 5ff577f9f..2204290ae 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AllocateIdsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface AllocateIdsResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValue.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValue.java index e0d23c6c8..245cb4b38 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValue.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValue.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValueOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValueOrBuilder.java index 9c6910f1c..021a8ba56 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValueOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ArrayValueOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ArrayValueOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequest.java index dfd89d0de..79747e7ba 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequestOrBuilder.java index 6d3aa722f..8a8bbadd2 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface BeginTransactionRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponse.java index 45f35d980..c9cbae64e 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponseOrBuilder.java index 4c7010782..ef98909fd 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/BeginTransactionResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface BeginTransactionResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequest.java index 4be4d798d..baefc371e 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequestOrBuilder.java index a3dd50817..137b69963 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface CommitRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponse.java index 030da5583..e24a08499 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponseOrBuilder.java index f46c69b6c..ac4da4033 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CommitResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface CommitResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilter.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilter.java index 73941db09..10fb06dfd 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilter.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilter.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilterOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilterOrBuilder.java index e2739044e..3e53e363a 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilterOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/CompositeFilterOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface CompositeFilterOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java index 605c6a093..851692f0f 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public final class DatastoreProto { diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java index 7e2d68fc6..6688af1dc 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java index 5eb6072df..8359303a8 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface EntityOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityProto.java index c9da99a31..8d131a68a 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public final class EntityProto { diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResult.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResult.java index 976833f13..4fac83ece 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResult.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResultOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResultOrBuilder.java index 034c02f56..6d1020451 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResultOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface EntityResultOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStats.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStats.java index e779bf33e..2e17827a8 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStats.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStats.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStatsOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStatsOrBuilder.java index a18726ef8..237bd2909 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStatsOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExecutionStatsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ExecutionStatsOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetrics.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetrics.java index cc0c25272..e6fefcd17 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetrics.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetrics.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetricsOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetricsOrBuilder.java index 47d09d250..3b4d3578b 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetricsOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainMetricsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ExplainMetricsOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptions.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptions.java index 7ea6f45b7..0871c6cbb 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptions.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptionsOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptionsOrBuilder.java index ff52c5a15..764b080ee 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptionsOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ExplainOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ExplainOptionsOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Filter.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Filter.java index e226df025..55d69597d 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Filter.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Filter.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/FilterOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/FilterOrBuilder.java index 411b5d2aa..49f3eb708 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/FilterOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/FilterOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface FilterOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQuery.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQuery.java index 4dd8adb21..49a298590 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQuery.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQuery.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryOrBuilder.java index a66357c22..48a1a92de 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface GqlQueryOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameter.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameter.java index 0b1d8bf8c..d22732f68 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameter.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameter.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameterOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameterOrBuilder.java index c8c219e27..dfa3547b8 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameterOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/GqlQueryParameterOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface GqlQueryParameterOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Key.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Key.java index 52ca92469..90c1fe1fc 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Key.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Key.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KeyOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KeyOrBuilder.java index eef38ea7b..ca5be689d 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KeyOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KeyOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface KeyOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpression.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpression.java index 670d287dd..8d4782909 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpression.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpression.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpressionOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpressionOrBuilder.java index 43569465b..08dc4b3d2 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpressionOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/KindExpressionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface KindExpressionOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequest.java index f899d37c0..4a9d52439 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java index 9494c3480..e417f3306 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface LookupRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponse.java index bb517bcdc..f624e5d4d 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponseOrBuilder.java index 9def5c181..9dfacb3d6 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/LookupResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface LookupResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java index 4f82c423b..71c310516 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java index 2082fb48e..0bee88325 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface MutationOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java index ee39e9010..03e96876d 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java index c3586b7e4..7d3b4f895 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface MutationResultOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionId.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionId.java index 7b87a1df5..09ea652c9 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionId.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionId.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionIdOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionIdOrBuilder.java index 1146a856d..7c418fe37 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionIdOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PartitionIdOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface PartitionIdOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummary.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummary.java index 2e45efb7b..365b11d31 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummary.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummary.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummaryOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummaryOrBuilder.java index 4b405e880..8088a8c24 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummaryOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PlanSummaryOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface PlanSummaryOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Projection.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Projection.java index f5257355a..cfd0dc705 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Projection.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Projection.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ProjectionOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ProjectionOrBuilder.java index f492feebb..71920236c 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ProjectionOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ProjectionOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ProjectionOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilter.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilter.java index 7bb7d77cb..814bfe7fa 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilter.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilter.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilterOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilterOrBuilder.java index da06f4f42..fd74ed8e9 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilterOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyFilterOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface PropertyFilterOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java index 54f084786..432846ebc 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMask.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java index 6b4c91336..e36a55be5 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyMaskOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface PropertyMaskOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrder.java index 6b9cd57ba..c12f8741b 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrderOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrderOrBuilder.java index 2590df078..4e4e8b986 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrderOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyOrderOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface PropertyOrderOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReference.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReference.java index 89ca784eb..d1ce5477e 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReference.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReference.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReferenceOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReferenceOrBuilder.java index 12e3c0344..0d80ea0ea 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReferenceOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyReferenceOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface PropertyReferenceOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java index d925fbd82..2c0c40f79 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java index bda9dcb7c..70533577f 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface QueryOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProfileProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProfileProto.java index 5b1d59a7a..83e5d1763 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProfileProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProfileProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query_profile.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public final class QueryProfileProto { diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProto.java index 749fbb368..60c35e2e1 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryProto.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public final class QueryProto { diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatch.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatch.java index 264b04c2b..49bb3799f 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatch.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatch.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatchOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatchOrBuilder.java index 10e886e97..57ae675f6 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatchOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryResultBatchOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/query.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface QueryResultBatchOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptions.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptions.java index 195a26679..dd545344e 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptions.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptionsOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptionsOrBuilder.java index 22210bac5..64500abd9 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptionsOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReadOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ReadOptionsOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequest.java index 4fb3a324a..d37792b79 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequestOrBuilder.java index 1509951d0..74644db43 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ReserveIdsRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponse.java index b64df8ca4..9cf9adff3 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponseOrBuilder.java index 93ad913d3..8858bddf2 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ReserveIdsResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ReserveIdsResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequest.java index b8efa3620..1e3b5e93d 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequestOrBuilder.java index 76f2ec4f7..5c4ac4664 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface RollbackRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponse.java index 7ecae56a6..a8de2a48b 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponseOrBuilder.java index c5f5cddac..3b89b7ed5 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RollbackResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface RollbackResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequest.java index a3e4b5fbb..85021f6fa 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequestOrBuilder.java index 181e67626..6137bb693 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface RunAggregationQueryRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponse.java index e15917183..f122b0943 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponseOrBuilder.java index 518244e3a..cacfa52e8 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunAggregationQueryResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface RunAggregationQueryResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java index 42a25c70e..7886ca3c7 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequest.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java index 66125f517..858455723 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryRequestOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface RunQueryRequestOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponse.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponse.java index 50de039e4..714256e65 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponse.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponse.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponseOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponseOrBuilder.java index 2eb2df5c7..c7fceec74 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponseOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/RunQueryResponseOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface RunQueryResponseOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptions.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptions.java index 1460d75c9..7e73f6826 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptions.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptions.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptionsOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptionsOrBuilder.java index 915877a31..551969802 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptionsOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/TransactionOptionsOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/datastore.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface TransactionOptionsOrBuilder diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Value.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Value.java index d8db3277e..56b6fae30 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Value.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Value.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; /** diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ValueOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ValueOrBuilder.java index 6024a74d7..a375525d9 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ValueOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/ValueOrBuilder.java @@ -16,7 +16,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: google/datastore/v1/entity.proto -// Protobuf Java Version: 3.25.4 +// Protobuf Java Version: 3.25.5 package com.google.datastore.v1; public interface ValueOrBuilder From 0da1219b49b27263783ee336d7078e5ccb796d2d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 30 Sep 2024 23:32:27 +0200 Subject: [PATCH 093/102] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v2.22.0 (#1607) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.cloud:google-cloud-datastore](https://redirect.github.com/googleapis/java-datastore) | `2.21.3` -> `2.22.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.cloud:google-cloud-datastore/2.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.cloud:google-cloud-datastore/2.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.cloud:google-cloud-datastore/2.21.3/2.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.cloud:google-cloud-datastore/2.21.3/2.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes

googleapis/java-datastore (com.google.cloud:google-cloud-datastore) ### [`v2.22.0`](https://redirect.github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2220-2024-09-26) [Compare Source](https://redirect.github.com/googleapis/java-datastore/compare/v2.21.3...v2.22.0) ##### Features - Add sample code for multiple inequalities indexing consideration query ([#​1579](https://redirect.github.com/googleapis/java-datastore/issues/1579)) ([1286792](https://redirect.github.com/googleapis/java-datastore/commit/1286792d7b49229d698df652cd117d229a5cd97e)) - Introducing Tracing with OpenTelemetry API [#​1537](https://redirect.github.com/googleapis/java-datastore/issues/1537) ([#​1576](https://redirect.github.com/googleapis/java-datastore/issues/1576)) ([5440c22](https://redirect.github.com/googleapis/java-datastore/commit/5440c22364074c108450c3a748a6a17d5f1dddda)) ##### Bug Fixes - Update opentelemetry-sdk dependency to be test-only ([#​1595](https://redirect.github.com/googleapis/java-datastore/issues/1595)) ([9d719e8](https://redirect.github.com/googleapis/java-datastore/commit/9d719e809ea830d8602399b72e432580f14ae6bd)) - Update opentelemetry.version to 1.42.1 to match the BOM version ([#​1598](https://redirect.github.com/googleapis/java-datastore/issues/1598)) ([23c5c26](https://redirect.github.com/googleapis/java-datastore/commit/23c5c2662117370c66c611604c56b878d41f4738)) ##### Dependencies - Update dependency com.google.cloud:gapic-libraries-bom to v1.43.0 ([#​1584](https://redirect.github.com/googleapis/java-datastore/issues/1584)) ([fae3b74](https://redirect.github.com/googleapis/java-datastore/commit/fae3b74eaa3494a27fd43f56435c01e8fc09e5ee)) - Update dependency com.google.cloud:sdk-platform-java-config to v3.36.0 ([#​1590](https://redirect.github.com/googleapis/java-datastore/issues/1590)) ([2db9e43](https://redirect.github.com/googleapis/java-datastore/commit/2db9e439189baf8f97127f6cff1de5d47efb0073)) - Update dependency com.google.cloud:sdk-platform-java-config to v3.36.1 ([#​1602](https://redirect.github.com/googleapis/java-datastore/issues/1602)) ([e1b7d4b](https://redirect.github.com/googleapis/java-datastore/commit/e1b7d4b205312d7d4c2a285f3d1f61388da65c83)) - Update dependency com.google.guava:guava-testlib to v33.3.1-jre ([#​1592](https://redirect.github.com/googleapis/java-datastore/issues/1592)) ([5d078a4](https://redirect.github.com/googleapis/java-datastore/commit/5d078a4b294d071716f51f0d4b9baa5d65a0fe90)) - Update dependency com.google.testparameterinjector:test-parameter-injector to v1.17 ([#​1585](https://redirect.github.com/googleapis/java-datastore/issues/1585)) ([8f74a49](https://redirect.github.com/googleapis/java-datastore/commit/8f74a49c5982d00bd168e78671163683f7b41126))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/googleapis/java-datastore). --- samples/install-without-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 9187ea8ce..c39bbf20b 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 2.21.3 + 2.22.0 From 742d059f444e41985142553514b0a0abd033c5cb Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:22:44 +0000 Subject: [PATCH 094/102] chore: use composite action (#1610) * chore: use composite action * chore: generate libraries at Wed Oct 2 13:35:35 UTC 2024 --------- Co-authored-by: cloud-java-bot --- .../scripts/hermetic_library_generation.sh | 116 ------------------ .../hermetic_library_generation.yaml | 19 +-- README.md | 12 +- 3 files changed, 12 insertions(+), 135 deletions(-) delete mode 100644 .github/scripts/hermetic_library_generation.sh diff --git a/.github/scripts/hermetic_library_generation.sh b/.github/scripts/hermetic_library_generation.sh deleted file mode 100644 index 49a7414cf..000000000 --- a/.github/scripts/hermetic_library_generation.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash -set -e -# This script should be run at the root of the repository. -# This script is used to, when a pull request changes the generation -# configuration (generation_config.yaml by default): -# 1. Find whether the last commit in this pull request contains changes to -# the generation configuration and exit early if it doesn't have such a change -# since the generation result would be the same. -# 2. Compare generation configurations in the current branch (with which the -# pull request associated) and target branch (into which the pull request is -# merged); -# 3. Generate changed libraries using library_generation image; -# 4. Commit the changes to the pull request, if any. -# 5. Edit the PR body with generated pull request description, if applicable. - -# The following commands need to be installed before running the script: -# 1. git -# 2. gh -# 3. docker - -# The parameters of this script is: -# 1. target_branch, the branch into which the pull request is merged. -# 2. current_branch, the branch with which the pull request is associated. -# 3. [optional] generation_config, the path to the generation configuration, -# the default value is generation_config.yaml in the repository root. -while [[ $# -gt 0 ]]; do -key="$1" -case "${key}" in - --target_branch) - target_branch="$2" - shift - ;; - --current_branch) - current_branch="$2" - shift - ;; - --generation_config) - generation_config="$2" - shift - ;; - *) - echo "Invalid option: [$1]" - exit 1 - ;; -esac -shift -done - -if [ -z "${target_branch}" ]; then - echo "missing required argument --target_branch" - exit 1 -fi - -if [ -z "${current_branch}" ]; then - echo "missing required argument --current_branch" - exit 1 -fi - -if [ -z "${generation_config}" ]; then - generation_config=generation_config.yaml - echo "Using default generation config: ${generation_config}" -fi - -workspace_name="/workspace" -baseline_generation_config="baseline_generation_config.yaml" -message="chore: generate libraries at $(date)" - -git checkout "${target_branch}" -git checkout "${current_branch}" - -# copy generation configuration from target branch to current branch. -git show "${target_branch}":"${generation_config}" > "${baseline_generation_config}" - -# parse image tag from the generation configuration. -image_tag=$(grep "gapic_generator_version" "${generation_config}" | cut -d ':' -f 2 | xargs) - -repo_root_dir=$(pwd) -mkdir -p "${repo_root_dir}/output" -# download api definitions from googleapis repository -googleapis_commitish=$(grep googleapis_commitish "${generation_config}" | cut -d ":" -f 2 | xargs) -api_def_dir=$(mktemp -d) -git clone https://github.com/googleapis/googleapis.git "${api_def_dir}" -pushd "${api_def_dir}" -git checkout "${googleapis_commitish}" -cp -r google/ grafeas/ "${repo_root_dir}/output" -popd - -# run hermetic code generation docker image. -docker run \ - --rm \ - -u "$(id -u):$(id -g)" \ - -v "$(pwd):${workspace_name}" \ - gcr.io/cloud-devrel-public-resources/java-library-generation:"${image_tag}" \ - --baseline-generation-config-path="${workspace_name}/${baseline_generation_config}" \ - --current-generation-config-path="${workspace_name}/${generation_config}" - -# remove api definitions after generation -rm -rf "${api_def_dir}" - -# commit the change to the pull request. -rm -rdf output googleapis "${baseline_generation_config}" -git add --all -- ':!pr_description.txt' ':!hermetic_library_generation.sh' -changed_files=$(git diff --cached --name-only) -if [[ "${changed_files}" != "" ]]; then - echo "Commit changes..." - git commit -m "${message}" - git push -else - echo "There is no generated code change, skip commit." -fi - -# set pr body if pr_description.txt is generated. -if [[ -f "pr_description.txt" ]]; then - pr_num=$(gh pr list -s open -H "${current_branch}" -q . --json number | jq ".[] | .number") - gh pr edit "${pr_num}" --body "$(cat pr_description.txt)" -fi diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 0266fbc96..4caa5567a 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -20,7 +20,6 @@ on: env: REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }} GITHUB_REPOSITORY: ${{ github.repository }} - jobs: library_generation: runs-on: ubuntu-latest @@ -38,17 +37,9 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - name: Generate changed libraries + - uses: googleapis/sdk-platform-java/.github/scripts@v2.46.0 if: env.SHOULD_RUN == 'true' - shell: bash - run: | - set -ex - [ -z "$(git config user.email)" ] && git config --global user.email "cloud-java-bot@google.com" - [ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot" - bash .github/scripts/hermetic_library_generation.sh \ - --target_branch "${BASE_REF}" \ - --current_branch "${HEAD_REF}" - env: - BASE_REF: ${{ github.base_ref }} - HEAD_REF: ${{ github.head_ref }} - GH_TOKEN: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} + with: + base_ref: ${{ github.base_ref }} + head_ref: ${{ github.head_ref }} + token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} diff --git a/README.md b/README.md index 144f2e567..da7d93a81 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.45.0 + 26.47.0 pom import @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-datastore - 2.21.3 + 2.22.0 ``` @@ -57,13 +57,13 @@ 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.21.3' +implementation 'com.google.cloud:google-cloud-datastore:2.22.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.21.3" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "2.22.0" ``` @@ -370,7 +370,9 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-datastore/tre | Sum Aggregation With Limit | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/aggregation/SumAggregationWithLimit.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/aggregation/SumAggregationWithLimit.java) | | Sum Aggregation With Order By | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/aggregation/SumAggregationWithOrderBy.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/aggregation/SumAggregationWithOrderBy.java) | | Sum Aggregation With Property Filter | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/aggregation/SumAggregationWithPropertyFilter.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/aggregation/SumAggregationWithPropertyFilter.java) | +| Indexing Consideration Query | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/filters/IndexingConsiderationQuery.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/filters/IndexingConsiderationQuery.java) | | Create a union between two filters | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/filters/OrFilterQuery.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/filters/OrFilterQuery.java) | +| Order Fields Query | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/filters/OrderFieldsQuery.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/filters/OrderFieldsQuery.java) | | Query Profile Explain | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/queryprofile/QueryProfileExplain.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/queryprofile/QueryProfileExplain.java) | | Query Profile Explain Aggregation | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/queryprofile/QueryProfileExplainAggregation.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/queryprofile/QueryProfileExplainAggregation.java) | | Query Profile Explain Analyze | [source code](https://github.com/googleapis/java-datastore/blob/main/samples/snippets/src/main/java/com/example/datastore/queryprofile/QueryProfileExplainAnalyze.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-datastore&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/datastore/queryprofile/QueryProfileExplainAnalyze.java) | @@ -479,7 +481,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.21.3 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.22.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 From b299266e42037b731ee7bbba21dbded73a37323c Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Wed, 9 Oct 2024 17:03:50 -0400 Subject: [PATCH 095/102] chore: Update generation configuration at Wed Oct 9 02:23:35 UTC 2024 (#1608) * chore: Update generation configuration at Tue Oct 1 02:27:19 UTC 2024 * chore: generate libraries at Tue Oct 1 02:27:43 UTC 2024 * chore: Update generation configuration at Wed Oct 2 02:23:35 UTC 2024 * chore: Update generation configuration at Thu Oct 3 02:23:49 UTC 2024 * chore: Update generation configuration at Fri Oct 4 02:23:55 UTC 2024 * chore: generate libraries at Fri Oct 4 02:24:21 UTC 2024 * chore: Update generation configuration at Sat Oct 5 02:26:12 UTC 2024 * chore: Update generation configuration at Sun Oct 6 02:25:59 UTC 2024 * chore: generate libraries at Sun Oct 6 02:26:25 UTC 2024 * chore: Update generation configuration at Tue Oct 8 02:25:05 UTC 2024 * chore: generate libraries at Tue Oct 8 02:25:30 UTC 2024 * chore: Update generation configuration at Wed Oct 9 02:23:35 UTC 2024 --- README.md | 2 +- generation_config.yaml | 6 +- .../google/datastore/v1/DatastoreProto.java | 200 +- .../com/google/datastore/v1/Mutation.java | 1014 +++++- .../datastore/v1/MutationOrBuilder.java | 115 + .../google/datastore/v1/MutationResult.java | 544 ++- .../datastore/v1/MutationResultOrBuilder.java | 62 + .../datastore/v1/PropertyTransform.java | 3197 +++++++++++++++++ .../v1/PropertyTransformOrBuilder.java | 438 +++ .../proto/google/datastore/v1/datastore.proto | 141 +- renovate.json | 17 + 11 files changed, 5633 insertions(+), 103 deletions(-) create mode 100644 proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransform.java create mode 100644 proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransformOrBuilder.java diff --git a/README.md b/README.md index da7d93a81..d5e61c715 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ 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.47.0') +implementation platform('com.google.cloud:libraries-bom:26.48.0') implementation 'com.google.cloud:google-cloud-datastore' ``` diff --git a/generation_config.yaml b/generation_config.yaml index bff4d8b41..44eb5d8aa 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ -gapic_generator_version: 2.46.1 -googleapis_commitish: d6f184876ec67295addccbb70aa4af622e049a7e -libraries_bom_version: 26.47.0 +gapic_generator_version: 2.47.0 +googleapis_commitish: 8692273ae7e0ef95d264e1bb8bcb900fa950674f +libraries_bom_version: 26.48.0 libraries: - api_shortname: datastore name_pretty: Cloud Datastore diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java index 851692f0f..b186c25f0 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java @@ -96,6 +96,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_datastore_v1_Mutation_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_datastore_v1_Mutation_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_datastore_v1_PropertyTransform_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_datastore_v1_PropertyTransform_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_datastore_v1_MutationResult_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -208,87 +212,106 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "v1.Key\"n\n\021ReserveIdsRequest\022\027\n\nproject_i" + "d\030\010 \001(\tB\003\340A\002\022\023\n\013database_id\030\t \001(\t\022+\n\004key" + "s\030\001 \003(\0132\030.google.datastore.v1.KeyB\003\340A\002\"\024" - + "\n\022ReserveIdsResponse\"\364\002\n\010Mutation\022-\n\006ins" + + "\n\022ReserveIdsResponse\"\362\004\n\010Mutation\022-\n\006ins" + "ert\030\004 \001(\0132\033.google.datastore.v1.EntityH\000" + "\022-\n\006update\030\005 \001(\0132\033.google.datastore.v1.E" + "ntityH\000\022-\n\006upsert\030\006 \001(\0132\033.google.datasto" + "re.v1.EntityH\000\022*\n\006delete\030\007 \001(\0132\030.google." + "datastore.v1.KeyH\000\022\026\n\014base_version\030\010 \001(\003" + "H\001\0221\n\013update_time\030\013 \001(\0132\032.google.protobu" - + "f.TimestampH\001\0228\n\rproperty_mask\030\t \001(\0132!.g" - + "oogle.datastore.v1.PropertyMaskB\013\n\topera" - + "tionB\035\n\033conflict_detection_strategy\"\305\001\n\016" - + "MutationResult\022%\n\003key\030\003 \001(\0132\030.google.dat" - + "astore.v1.Key\022\017\n\007version\030\004 \001(\003\022/\n\013create" - + "_time\030\007 \001(\0132\032.google.protobuf.Timestamp\022" - + "/\n\013update_time\030\006 \001(\0132\032.google.protobuf.T" - + "imestamp\022\031\n\021conflict_detected\030\005 \001(\010\"\035\n\014P" - + "ropertyMask\022\r\n\005paths\030\001 \003(\t\"\312\002\n\013ReadOptio" - + "ns\022L\n\020read_consistency\030\001 \001(\01620.google.da" - + "tastore.v1.ReadOptions.ReadConsistencyH\000" - + "\022\025\n\013transaction\030\002 \001(\014H\000\022B\n\017new_transacti" - + "on\030\003 \001(\0132\'.google.datastore.v1.Transacti" - + "onOptionsH\000\022/\n\tread_time\030\004 \001(\0132\032.google." - + "protobuf.TimestampH\000\"M\n\017ReadConsistency\022" - + " \n\034READ_CONSISTENCY_UNSPECIFIED\020\000\022\n\n\006STR" - + "ONG\020\001\022\014\n\010EVENTUAL\020\002B\022\n\020consistency_type\"" - + "\222\002\n\022TransactionOptions\022G\n\nread_write\030\001 \001" - + "(\01321.google.datastore.v1.TransactionOpti" - + "ons.ReadWriteH\000\022E\n\tread_only\030\002 \001(\01320.goo" - + "gle.datastore.v1.TransactionOptions.Read" - + "OnlyH\000\032)\n\tReadWrite\022\034\n\024previous_transact" - + "ion\030\001 \001(\014\0329\n\010ReadOnly\022-\n\tread_time\030\001 \001(\013" - + "2\032.google.protobuf.TimestampB\006\n\004mode2\341\r\n" - + "\tDatastore\022\300\001\n\006Lookup\022\".google.datastore" - + ".v1.LookupRequest\032#.google.datastore.v1." - + "LookupResponse\"m\332A\034project_id,read_optio" - + "ns,keys\202\323\344\223\002%\" /v1/projects/{project_id}" - + ":lookup:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013databa" - + "se_id\022\251\001\n\010RunQuery\022$.google.datastore.v1" - + ".RunQueryRequest\032%.google.datastore.v1.R" - + "unQueryResponse\"P\202\323\344\223\002\'\"\"/v1/projects/{p" - + "roject_id}:runQuery:\001*\212\323\344\223\002\035\022\014\n\nproject_" - + "id\022\r\n\013database_id\022\325\001\n\023RunAggregationQuer" - + "y\022/.google.datastore.v1.RunAggregationQu" - + "eryRequest\0320.google.datastore.v1.RunAggr" - + "egationQueryResponse\"[\202\323\344\223\0022\"-/v1/projec" - + "ts/{project_id}:runAggregationQuery:\001*\212\323" - + "\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\326\001\n\020Be" - + "ginTransaction\022,.google.datastore.v1.Beg" - + "inTransactionRequest\032-.google.datastore." - + "v1.BeginTransactionResponse\"e\332A\nproject_" - + "id\202\323\344\223\002/\"*/v1/projects/{project_id}:begi" - + "nTransaction:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013d" - + "atabase_id\022\346\001\n\006Commit\022\".google.datastore" - + ".v1.CommitRequest\032#.google.datastore.v1." - + "CommitResponse\"\222\001\332A%project_id,mode,tran" - + "saction,mutations\332A\031project_id,mode,muta" - + "tions\202\323\344\223\002%\" /v1/projects/{project_id}:c" - + "ommit:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database" - + "_id\022\302\001\n\010Rollback\022$.google.datastore.v1.R" - + "ollbackRequest\032%.google.datastore.v1.Rol" - + "lbackResponse\"i\332A\026project_id,transaction" - + "\202\323\344\223\002\'\"\"/v1/projects/{project_id}:rollba" - + "ck:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id" - + "\022\307\001\n\013AllocateIds\022\'.google.datastore.v1.A" - + "llocateIdsRequest\032(.google.datastore.v1." - + "AllocateIdsResponse\"e\332A\017project_id,keys\202" - + "\323\344\223\002*\"%/v1/projects/{project_id}:allocat" - + "eIds:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_" - + "id\022\303\001\n\nReserveIds\022&.google.datastore.v1." - + "ReserveIdsRequest\032\'.google.datastore.v1." - + "ReserveIdsResponse\"d\332A\017project_id,keys\202\323" - + "\344\223\002)\"$/v1/projects/{project_id}:reserveI" - + "ds:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id" - + "\032v\312A\030datastore.googleapis.com\322AXhttps://" - + "www.googleapis.com/auth/cloud-platform,h" - + "ttps://www.googleapis.com/auth/datastore" - + "B\277\001\n\027com.google.datastore.v1B\016DatastoreP" - + "rotoP\001Z;cloud.google.com/go/datastore/ap" - + "iv1/datastorepb;datastorepb\252\002\031Google.Clo" - + "ud.Datastore.V1\312\002\031Google\\Cloud\\Datastore" - + "\\V1\352\002\034Google::Cloud::Datastore::V1b\006prot" - + "o3" + + "f.TimestampH\001\022^\n\034conflict_resolution_str" + + "ategy\030\n \001(\01628.google.datastore.v1.Mutati" + + "on.ConflictResolutionStrategy\0228\n\rpropert" + + "y_mask\030\t \001(\0132!.google.datastore.v1.Prope" + + "rtyMask\022H\n\023property_transforms\030\014 \003(\0132&.g" + + "oogle.datastore.v1.PropertyTransformB\003\340A" + + "\001\"R\n\032ConflictResolutionStrategy\022\030\n\024STRAT" + + "EGY_UNSPECIFIED\020\000\022\020\n\014SERVER_VALUE\020\001\022\010\n\004F" + + "AIL\020\003B\013\n\toperationB\035\n\033conflict_detection" + + "_strategy\"\343\003\n\021PropertyTransform\022\025\n\010prope" + + "rty\030\001 \001(\tB\003\340A\001\022Q\n\023set_to_server_value\030\002 " + + "\001(\01622.google.datastore.v1.PropertyTransf" + + "orm.ServerValueH\000\022/\n\tincrement\030\003 \001(\0132\032.g" + + "oogle.datastore.v1.ValueH\000\022-\n\007maximum\030\004 " + + "\001(\0132\032.google.datastore.v1.ValueH\000\022-\n\007min" + + "imum\030\005 \001(\0132\032.google.datastore.v1.ValueH\000" + + "\022B\n\027append_missing_elements\030\006 \001(\0132\037.goog" + + "le.datastore.v1.ArrayValueH\000\022@\n\025remove_a" + + "ll_from_array\030\007 \001(\0132\037.google.datastore.v" + + "1.ArrayValueH\000\"=\n\013ServerValue\022\034\n\030SERVER_" + + "VALUE_UNSPECIFIED\020\000\022\020\n\014REQUEST_TIME\020\001B\020\n" + + "\016transform_type\"\374\001\n\016MutationResult\022%\n\003ke" + + "y\030\003 \001(\0132\030.google.datastore.v1.Key\022\017\n\007ver" + + "sion\030\004 \001(\003\022/\n\013create_time\030\007 \001(\0132\032.google" + + ".protobuf.Timestamp\022/\n\013update_time\030\006 \001(\013" + + "2\032.google.protobuf.Timestamp\022\031\n\021conflict" + + "_detected\030\005 \001(\010\0225\n\021transform_results\030\010 \003" + + "(\0132\032.google.datastore.v1.Value\"\035\n\014Proper" + + "tyMask\022\r\n\005paths\030\001 \003(\t\"\312\002\n\013ReadOptions\022L\n" + + "\020read_consistency\030\001 \001(\01620.google.datasto" + + "re.v1.ReadOptions.ReadConsistencyH\000\022\025\n\013t" + + "ransaction\030\002 \001(\014H\000\022B\n\017new_transaction\030\003 " + + "\001(\0132\'.google.datastore.v1.TransactionOpt" + + "ionsH\000\022/\n\tread_time\030\004 \001(\0132\032.google.proto" + + "buf.TimestampH\000\"M\n\017ReadConsistency\022 \n\034RE" + + "AD_CONSISTENCY_UNSPECIFIED\020\000\022\n\n\006STRONG\020\001" + + "\022\014\n\010EVENTUAL\020\002B\022\n\020consistency_type\"\222\002\n\022T" + + "ransactionOptions\022G\n\nread_write\030\001 \001(\01321." + + "google.datastore.v1.TransactionOptions.R" + + "eadWriteH\000\022E\n\tread_only\030\002 \001(\01320.google.d" + + "atastore.v1.TransactionOptions.ReadOnlyH" + + "\000\032)\n\tReadWrite\022\034\n\024previous_transaction\030\001" + + " \001(\014\0329\n\010ReadOnly\022-\n\tread_time\030\001 \001(\0132\032.go" + + "ogle.protobuf.TimestampB\006\n\004mode2\341\r\n\tData" + + "store\022\300\001\n\006Lookup\022\".google.datastore.v1.L" + + "ookupRequest\032#.google.datastore.v1.Looku" + + "pResponse\"m\332A\034project_id,read_options,ke" + + "ys\202\323\344\223\002%\" /v1/projects/{project_id}:look" + + "up:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id" + + "\022\251\001\n\010RunQuery\022$.google.datastore.v1.RunQ" + + "ueryRequest\032%.google.datastore.v1.RunQue" + + "ryResponse\"P\202\323\344\223\002\'\"\"/v1/projects/{projec" + + "t_id}:runQuery:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n" + + "\013database_id\022\325\001\n\023RunAggregationQuery\022/.g" + + "oogle.datastore.v1.RunAggregationQueryRe" + + "quest\0320.google.datastore.v1.RunAggregati" + + "onQueryResponse\"[\202\323\344\223\0022\"-/v1/projects/{p" + + "roject_id}:runAggregationQuery:\001*\212\323\344\223\002\035\022" + + "\014\n\nproject_id\022\r\n\013database_id\022\326\001\n\020BeginTr" + + "ansaction\022,.google.datastore.v1.BeginTra" + + "nsactionRequest\032-.google.datastore.v1.Be" + + "ginTransactionResponse\"e\332A\nproject_id\202\323\344" + + "\223\002/\"*/v1/projects/{project_id}:beginTran" + + "saction:\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013databa" + + "se_id\022\346\001\n\006Commit\022\".google.datastore.v1.C" + + "ommitRequest\032#.google.datastore.v1.Commi" + + "tResponse\"\222\001\332A%project_id,mode,transacti" + + "on,mutations\332A\031project_id,mode,mutations" + + "\202\323\344\223\002%\" /v1/projects/{project_id}:commit" + + ":\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\302" + + "\001\n\010Rollback\022$.google.datastore.v1.Rollba" + + "ckRequest\032%.google.datastore.v1.Rollback" + + "Response\"i\332A\026project_id,transaction\202\323\344\223\002" + + "\'\"\"/v1/projects/{project_id}:rollback:\001*" + + "\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\307\001\n\013" + + "AllocateIds\022\'.google.datastore.v1.Alloca" + + "teIdsRequest\032(.google.datastore.v1.Alloc" + + "ateIdsResponse\"e\332A\017project_id,keys\202\323\344\223\002*" + + "\"%/v1/projects/{project_id}:allocateIds:" + + "\001*\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\022\303\001" + + "\n\nReserveIds\022&.google.datastore.v1.Reser" + + "veIdsRequest\032\'.google.datastore.v1.Reser" + + "veIdsResponse\"d\332A\017project_id,keys\202\323\344\223\002)\"" + + "$/v1/projects/{project_id}:reserveIds:\001*" + + "\212\323\344\223\002\035\022\014\n\nproject_id\022\r\n\013database_id\032v\312A\030" + + "datastore.googleapis.com\322AXhttps://www.g" + + "oogleapis.com/auth/cloud-platform,https:" + + "//www.googleapis.com/auth/datastoreB\277\001\n\027" + + "com.google.datastore.v1B\016DatastoreProtoP" + + "\001Z;cloud.google.com/go/datastore/apiv1/d" + + "atastorepb;datastorepb\252\002\031Google.Cloud.Da" + + "tastore.V1\312\002\031Google\\Cloud\\Datastore\\V1\352\002" + + "\034Google::Cloud::Datastore::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -461,20 +484,37 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Delete", "BaseVersion", "UpdateTime", + "ConflictResolutionStrategy", "PropertyMask", + "PropertyTransforms", "Operation", "ConflictDetectionStrategy", }); - internal_static_google_datastore_v1_MutationResult_descriptor = + internal_static_google_datastore_v1_PropertyTransform_descriptor = getDescriptor().getMessageTypes().get(17); + internal_static_google_datastore_v1_PropertyTransform_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_datastore_v1_PropertyTransform_descriptor, + new java.lang.String[] { + "Property", + "SetToServerValue", + "Increment", + "Maximum", + "Minimum", + "AppendMissingElements", + "RemoveAllFromArray", + "TransformType", + }); + internal_static_google_datastore_v1_MutationResult_descriptor = + getDescriptor().getMessageTypes().get(18); internal_static_google_datastore_v1_MutationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_datastore_v1_MutationResult_descriptor, new java.lang.String[] { - "Key", "Version", "CreateTime", "UpdateTime", "ConflictDetected", + "Key", "Version", "CreateTime", "UpdateTime", "ConflictDetected", "TransformResults", }); internal_static_google_datastore_v1_PropertyMask_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(19); internal_static_google_datastore_v1_PropertyMask_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_datastore_v1_PropertyMask_descriptor, @@ -482,7 +522,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Paths", }); internal_static_google_datastore_v1_ReadOptions_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(20); internal_static_google_datastore_v1_ReadOptions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_datastore_v1_ReadOptions_descriptor, @@ -490,7 +530,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ReadConsistency", "Transaction", "NewTransaction", "ReadTime", "ConsistencyType", }); internal_static_google_datastore_v1_TransactionOptions_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(21); internal_static_google_datastore_v1_TransactionOptions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_datastore_v1_TransactionOptions_descriptor, diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java index 71c310516..ff6a54f5b 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java @@ -38,7 +38,10 @@ private Mutation(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private Mutation() {} + private Mutation() { + conflictResolutionStrategy_ = 0; + propertyTransforms_ = java.util.Collections.emptyList(); + } @java.lang.Override @SuppressWarnings({"unused"}) @@ -60,6 +63,166 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { com.google.datastore.v1.Mutation.class, com.google.datastore.v1.Mutation.Builder.class); } + /** + * + * + *
+   * The possible ways to resolve a conflict detected in a mutation.
+   * 
+ * + * Protobuf enum {@code google.datastore.v1.Mutation.ConflictResolutionStrategy} + */ + public enum ConflictResolutionStrategy implements com.google.protobuf.ProtocolMessageEnum { + /** + * + * + *
+     * Unspecified. Defaults to `SERVER_VALUE`.
+     * 
+ * + * STRATEGY_UNSPECIFIED = 0; + */ + STRATEGY_UNSPECIFIED(0), + /** + * + * + *
+     * The server entity is kept.
+     * 
+ * + * SERVER_VALUE = 1; + */ + SERVER_VALUE(1), + /** + * + * + *
+     * The whole commit request fails.
+     * 
+ * + * FAIL = 3; + */ + FAIL(3), + UNRECOGNIZED(-1), + ; + + /** + * + * + *
+     * Unspecified. Defaults to `SERVER_VALUE`.
+     * 
+ * + * STRATEGY_UNSPECIFIED = 0; + */ + public static final int STRATEGY_UNSPECIFIED_VALUE = 0; + /** + * + * + *
+     * The server entity is kept.
+     * 
+ * + * SERVER_VALUE = 1; + */ + public static final int SERVER_VALUE_VALUE = 1; + /** + * + * + *
+     * The whole commit request fails.
+     * 
+ * + * FAIL = 3; + */ + public static final int FAIL_VALUE = 3; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ConflictResolutionStrategy valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ConflictResolutionStrategy forNumber(int value) { + switch (value) { + case 0: + return STRATEGY_UNSPECIFIED; + case 1: + return SERVER_VALUE; + case 3: + return FAIL; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ConflictResolutionStrategy findValueByNumber(int number) { + return ConflictResolutionStrategy.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.datastore.v1.Mutation.getDescriptor().getEnumTypes().get(0); + } + + private static final ConflictResolutionStrategy[] VALUES = values(); + + public static ConflictResolutionStrategy valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ConflictResolutionStrategy(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.datastore.v1.Mutation.ConflictResolutionStrategy) + } + private int bitField0_; private int operationCase_ = 0; @@ -477,6 +640,53 @@ public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() { return com.google.protobuf.Timestamp.getDefaultInstance(); } + public static final int CONFLICT_RESOLUTION_STRATEGY_FIELD_NUMBER = 10; + private int conflictResolutionStrategy_ = 0; + /** + * + * + *
+   * The strategy to use when a conflict is detected. Defaults to
+   * `SERVER_VALUE`.
+   * If this is set, then `conflict_detection_strategy` must also be set.
+   * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return The enum numeric value on the wire for conflictResolutionStrategy. + */ + @java.lang.Override + public int getConflictResolutionStrategyValue() { + return conflictResolutionStrategy_; + } + /** + * + * + *
+   * The strategy to use when a conflict is detected. Defaults to
+   * `SERVER_VALUE`.
+   * If this is set, then `conflict_detection_strategy` must also be set.
+   * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return The conflictResolutionStrategy. + */ + @java.lang.Override + public com.google.datastore.v1.Mutation.ConflictResolutionStrategy + getConflictResolutionStrategy() { + com.google.datastore.v1.Mutation.ConflictResolutionStrategy result = + com.google.datastore.v1.Mutation.ConflictResolutionStrategy.forNumber( + conflictResolutionStrategy_); + return result == null + ? com.google.datastore.v1.Mutation.ConflictResolutionStrategy.UNRECOGNIZED + : result; + } + public static final int PROPERTY_MASK_FIELD_NUMBER = 9; private com.google.datastore.v1.PropertyMask propertyMask_; /** @@ -548,6 +758,108 @@ public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() : propertyMask_; } + public static final int PROPERTY_TRANSFORMS_FIELD_NUMBER = 12; + + @SuppressWarnings("serial") + private java.util.List propertyTransforms_; + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public java.util.List getPropertyTransformsList() { + return propertyTransforms_; + } + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public java.util.List + getPropertyTransformsOrBuilderList() { + return propertyTransforms_; + } + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public int getPropertyTransformsCount() { + return propertyTransforms_.size(); + } + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.datastore.v1.PropertyTransform getPropertyTransforms(int index) { + return propertyTransforms_.get(index); + } + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.datastore.v1.PropertyTransformOrBuilder getPropertyTransformsOrBuilder( + int index) { + return propertyTransforms_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -580,9 +892,17 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000001) != 0)) { output.writeMessage(9, getPropertyMask()); } + if (conflictResolutionStrategy_ + != com.google.datastore.v1.Mutation.ConflictResolutionStrategy.STRATEGY_UNSPECIFIED + .getNumber()) { + output.writeEnum(10, conflictResolutionStrategy_); + } if (conflictDetectionStrategyCase_ == 11) { output.writeMessage(11, (com.google.protobuf.Timestamp) conflictDetectionStrategy_); } + for (int i = 0; i < propertyTransforms_.size(); i++) { + output.writeMessage(12, propertyTransforms_.get(i)); + } getUnknownFields().writeTo(output); } @@ -620,11 +940,21 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getPropertyMask()); } + if (conflictResolutionStrategy_ + != com.google.datastore.v1.Mutation.ConflictResolutionStrategy.STRATEGY_UNSPECIFIED + .getNumber()) { + size += + com.google.protobuf.CodedOutputStream.computeEnumSize(10, conflictResolutionStrategy_); + } if (conflictDetectionStrategyCase_ == 11) { size += com.google.protobuf.CodedOutputStream.computeMessageSize( 11, (com.google.protobuf.Timestamp) conflictDetectionStrategy_); } + for (int i = 0; i < propertyTransforms_.size(); i++) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(12, propertyTransforms_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -640,10 +970,12 @@ public boolean equals(final java.lang.Object obj) { } com.google.datastore.v1.Mutation other = (com.google.datastore.v1.Mutation) obj; + if (conflictResolutionStrategy_ != other.conflictResolutionStrategy_) return false; if (hasPropertyMask() != other.hasPropertyMask()) return false; if (hasPropertyMask()) { if (!getPropertyMask().equals(other.getPropertyMask())) return false; } + if (!getPropertyTransformsList().equals(other.getPropertyTransformsList())) return false; if (!getOperationCase().equals(other.getOperationCase())) return false; switch (operationCase_) { case 4: @@ -684,10 +1016,16 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CONFLICT_RESOLUTION_STRATEGY_FIELD_NUMBER; + hash = (53 * hash) + conflictResolutionStrategy_; if (hasPropertyMask()) { hash = (37 * hash) + PROPERTY_MASK_FIELD_NUMBER; hash = (53 * hash) + getPropertyMask().hashCode(); } + if (getPropertyTransformsCount() > 0) { + hash = (37 * hash) + PROPERTY_TRANSFORMS_FIELD_NUMBER; + hash = (53 * hash) + getPropertyTransformsList().hashCode(); + } switch (operationCase_) { case 4: hash = (37 * hash) + INSERT_FIELD_NUMBER; @@ -860,6 +1198,7 @@ private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getPropertyMaskFieldBuilder(); + getPropertyTransformsFieldBuilder(); } } @@ -882,11 +1221,19 @@ public Builder clear() { if (updateTimeBuilder_ != null) { updateTimeBuilder_.clear(); } + conflictResolutionStrategy_ = 0; propertyMask_ = null; if (propertyMaskBuilder_ != null) { propertyMaskBuilder_.dispose(); propertyMaskBuilder_ = null; } + if (propertyTransformsBuilder_ == null) { + propertyTransforms_ = java.util.Collections.emptyList(); + } else { + propertyTransforms_ = null; + propertyTransformsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000100); operationCase_ = 0; operation_ = null; conflictDetectionStrategyCase_ = 0; @@ -917,6 +1264,7 @@ public com.google.datastore.v1.Mutation build() { @java.lang.Override public com.google.datastore.v1.Mutation buildPartial() { com.google.datastore.v1.Mutation result = new com.google.datastore.v1.Mutation(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -925,10 +1273,25 @@ public com.google.datastore.v1.Mutation buildPartial() { return result; } + private void buildPartialRepeatedFields(com.google.datastore.v1.Mutation result) { + if (propertyTransformsBuilder_ == null) { + if (((bitField0_ & 0x00000100) != 0)) { + propertyTransforms_ = java.util.Collections.unmodifiableList(propertyTransforms_); + bitField0_ = (bitField0_ & ~0x00000100); + } + result.propertyTransforms_ = propertyTransforms_; + } else { + result.propertyTransforms_ = propertyTransformsBuilder_.build(); + } + } + private void buildPartial0(com.google.datastore.v1.Mutation result) { int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000040) != 0)) { + result.conflictResolutionStrategy_ = conflictResolutionStrategy_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000080) != 0)) { result.propertyMask_ = propertyMaskBuilder_ == null ? propertyMask_ : propertyMaskBuilder_.build(); to_bitField0_ |= 0x00000001; @@ -1003,9 +1366,39 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(com.google.datastore.v1.Mutation other) { if (other == com.google.datastore.v1.Mutation.getDefaultInstance()) return this; + if (other.conflictResolutionStrategy_ != 0) { + setConflictResolutionStrategyValue(other.getConflictResolutionStrategyValue()); + } if (other.hasPropertyMask()) { mergePropertyMask(other.getPropertyMask()); } + if (propertyTransformsBuilder_ == null) { + if (!other.propertyTransforms_.isEmpty()) { + if (propertyTransforms_.isEmpty()) { + propertyTransforms_ = other.propertyTransforms_; + bitField0_ = (bitField0_ & ~0x00000100); + } else { + ensurePropertyTransformsIsMutable(); + propertyTransforms_.addAll(other.propertyTransforms_); + } + onChanged(); + } + } else { + if (!other.propertyTransforms_.isEmpty()) { + if (propertyTransformsBuilder_.isEmpty()) { + propertyTransformsBuilder_.dispose(); + propertyTransformsBuilder_ = null; + propertyTransforms_ = other.propertyTransforms_; + bitField0_ = (bitField0_ & ~0x00000100); + propertyTransformsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getPropertyTransformsFieldBuilder() + : null; + } else { + propertyTransformsBuilder_.addAllMessages(other.propertyTransforms_); + } + } + } switch (other.getOperationCase()) { case INSERT: { @@ -1107,15 +1500,34 @@ public Builder mergeFrom( case 74: { input.readMessage(getPropertyMaskFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; break; } // case 74 + case 80: + { + conflictResolutionStrategy_ = input.readEnum(); + bitField0_ |= 0x00000040; + break; + } // case 80 case 90: { input.readMessage(getUpdateTimeFieldBuilder().getBuilder(), extensionRegistry); conflictDetectionStrategyCase_ = 11; break; } // case 90 + case 98: + { + com.google.datastore.v1.PropertyTransform m = + input.readMessage( + com.google.datastore.v1.PropertyTransform.parser(), extensionRegistry); + if (propertyTransformsBuilder_ == null) { + ensurePropertyTransformsIsMutable(); + propertyTransforms_.add(m); + } else { + propertyTransformsBuilder_.addMessage(m); + } + break; + } // case 98 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -2322,6 +2734,121 @@ public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() { return updateTimeBuilder_; } + private int conflictResolutionStrategy_ = 0; + /** + * + * + *
+     * The strategy to use when a conflict is detected. Defaults to
+     * `SERVER_VALUE`.
+     * If this is set, then `conflict_detection_strategy` must also be set.
+     * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return The enum numeric value on the wire for conflictResolutionStrategy. + */ + @java.lang.Override + public int getConflictResolutionStrategyValue() { + return conflictResolutionStrategy_; + } + /** + * + * + *
+     * The strategy to use when a conflict is detected. Defaults to
+     * `SERVER_VALUE`.
+     * If this is set, then `conflict_detection_strategy` must also be set.
+     * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @param value The enum numeric value on the wire for conflictResolutionStrategy to set. + * @return This builder for chaining. + */ + public Builder setConflictResolutionStrategyValue(int value) { + conflictResolutionStrategy_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * + * + *
+     * The strategy to use when a conflict is detected. Defaults to
+     * `SERVER_VALUE`.
+     * If this is set, then `conflict_detection_strategy` must also be set.
+     * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return The conflictResolutionStrategy. + */ + @java.lang.Override + public com.google.datastore.v1.Mutation.ConflictResolutionStrategy + getConflictResolutionStrategy() { + com.google.datastore.v1.Mutation.ConflictResolutionStrategy result = + com.google.datastore.v1.Mutation.ConflictResolutionStrategy.forNumber( + conflictResolutionStrategy_); + return result == null + ? com.google.datastore.v1.Mutation.ConflictResolutionStrategy.UNRECOGNIZED + : result; + } + /** + * + * + *
+     * The strategy to use when a conflict is detected. Defaults to
+     * `SERVER_VALUE`.
+     * If this is set, then `conflict_detection_strategy` must also be set.
+     * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @param value The conflictResolutionStrategy to set. + * @return This builder for chaining. + */ + public Builder setConflictResolutionStrategy( + com.google.datastore.v1.Mutation.ConflictResolutionStrategy value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000040; + conflictResolutionStrategy_ = value.getNumber(); + onChanged(); + return this; + } + /** + * + * + *
+     * The strategy to use when a conflict is detected. Defaults to
+     * `SERVER_VALUE`.
+     * If this is set, then `conflict_detection_strategy` must also be set.
+     * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return This builder for chaining. + */ + public Builder clearConflictResolutionStrategy() { + bitField0_ = (bitField0_ & ~0x00000040); + conflictResolutionStrategy_ = 0; + onChanged(); + return this; + } + private com.google.datastore.v1.PropertyMask propertyMask_; private com.google.protobuf.SingleFieldBuilderV3< com.google.datastore.v1.PropertyMask, @@ -2347,7 +2874,7 @@ public com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder() { * @return Whether the propertyMask field is set. */ public boolean hasPropertyMask() { - return ((bitField0_ & 0x00000040) != 0); + return ((bitField0_ & 0x00000080) != 0); } /** * @@ -2401,7 +2928,7 @@ public Builder setPropertyMask(com.google.datastore.v1.PropertyMask value) { } else { propertyMaskBuilder_.setMessage(value); } - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2427,7 +2954,7 @@ public Builder setPropertyMask(com.google.datastore.v1.PropertyMask.Builder buil } else { propertyMaskBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return this; } @@ -2449,7 +2976,7 @@ public Builder setPropertyMask(com.google.datastore.v1.PropertyMask.Builder buil */ public Builder mergePropertyMask(com.google.datastore.v1.PropertyMask value) { if (propertyMaskBuilder_ == null) { - if (((bitField0_ & 0x00000040) != 0) + if (((bitField0_ & 0x00000080) != 0) && propertyMask_ != null && propertyMask_ != com.google.datastore.v1.PropertyMask.getDefaultInstance()) { getPropertyMaskBuilder().mergeFrom(value); @@ -2460,7 +2987,7 @@ public Builder mergePropertyMask(com.google.datastore.v1.PropertyMask value) { propertyMaskBuilder_.mergeFrom(value); } if (propertyMask_ != null) { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); } return this; @@ -2482,7 +3009,7 @@ public Builder mergePropertyMask(com.google.datastore.v1.PropertyMask value) { * .google.datastore.v1.PropertyMask property_mask = 9; */ public Builder clearPropertyMask() { - bitField0_ = (bitField0_ & ~0x00000040); + bitField0_ = (bitField0_ & ~0x00000080); propertyMask_ = null; if (propertyMaskBuilder_ != null) { propertyMaskBuilder_.dispose(); @@ -2508,7 +3035,7 @@ public Builder clearPropertyMask() { * .google.datastore.v1.PropertyMask property_mask = 9; */ public com.google.datastore.v1.PropertyMask.Builder getPropertyMaskBuilder() { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; onChanged(); return getPropertyMaskFieldBuilder().getBuilder(); } @@ -2570,6 +3097,473 @@ public com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder() return propertyMaskBuilder_; } + private java.util.List propertyTransforms_ = + java.util.Collections.emptyList(); + + private void ensurePropertyTransformsIsMutable() { + if (!((bitField0_ & 0x00000100) != 0)) { + propertyTransforms_ = + new java.util.ArrayList(propertyTransforms_); + bitField0_ |= 0x00000100; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.datastore.v1.PropertyTransform, + com.google.datastore.v1.PropertyTransform.Builder, + com.google.datastore.v1.PropertyTransformOrBuilder> + propertyTransformsBuilder_; + + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public java.util.List getPropertyTransformsList() { + if (propertyTransformsBuilder_ == null) { + return java.util.Collections.unmodifiableList(propertyTransforms_); + } else { + return propertyTransformsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public int getPropertyTransformsCount() { + if (propertyTransformsBuilder_ == null) { + return propertyTransforms_.size(); + } else { + return propertyTransformsBuilder_.getCount(); + } + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.datastore.v1.PropertyTransform getPropertyTransforms(int index) { + if (propertyTransformsBuilder_ == null) { + return propertyTransforms_.get(index); + } else { + return propertyTransformsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPropertyTransforms( + int index, com.google.datastore.v1.PropertyTransform value) { + if (propertyTransformsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePropertyTransformsIsMutable(); + propertyTransforms_.set(index, value); + onChanged(); + } else { + propertyTransformsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPropertyTransforms( + int index, com.google.datastore.v1.PropertyTransform.Builder builderForValue) { + if (propertyTransformsBuilder_ == null) { + ensurePropertyTransformsIsMutable(); + propertyTransforms_.set(index, builderForValue.build()); + onChanged(); + } else { + propertyTransformsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder addPropertyTransforms(com.google.datastore.v1.PropertyTransform value) { + if (propertyTransformsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePropertyTransformsIsMutable(); + propertyTransforms_.add(value); + onChanged(); + } else { + propertyTransformsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder addPropertyTransforms( + int index, com.google.datastore.v1.PropertyTransform value) { + if (propertyTransformsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePropertyTransformsIsMutable(); + propertyTransforms_.add(index, value); + onChanged(); + } else { + propertyTransformsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder addPropertyTransforms( + com.google.datastore.v1.PropertyTransform.Builder builderForValue) { + if (propertyTransformsBuilder_ == null) { + ensurePropertyTransformsIsMutable(); + propertyTransforms_.add(builderForValue.build()); + onChanged(); + } else { + propertyTransformsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder addPropertyTransforms( + int index, com.google.datastore.v1.PropertyTransform.Builder builderForValue) { + if (propertyTransformsBuilder_ == null) { + ensurePropertyTransformsIsMutable(); + propertyTransforms_.add(index, builderForValue.build()); + onChanged(); + } else { + propertyTransformsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder addAllPropertyTransforms( + java.lang.Iterable values) { + if (propertyTransformsBuilder_ == null) { + ensurePropertyTransformsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, propertyTransforms_); + onChanged(); + } else { + propertyTransformsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearPropertyTransforms() { + if (propertyTransformsBuilder_ == null) { + propertyTransforms_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + } else { + propertyTransformsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder removePropertyTransforms(int index) { + if (propertyTransformsBuilder_ == null) { + ensurePropertyTransformsIsMutable(); + propertyTransforms_.remove(index); + onChanged(); + } else { + propertyTransformsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.datastore.v1.PropertyTransform.Builder getPropertyTransformsBuilder( + int index) { + return getPropertyTransformsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.datastore.v1.PropertyTransformOrBuilder getPropertyTransformsOrBuilder( + int index) { + if (propertyTransformsBuilder_ == null) { + return propertyTransforms_.get(index); + } else { + return propertyTransformsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public java.util.List + getPropertyTransformsOrBuilderList() { + if (propertyTransformsBuilder_ != null) { + return propertyTransformsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(propertyTransforms_); + } + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.datastore.v1.PropertyTransform.Builder addPropertyTransformsBuilder() { + return getPropertyTransformsFieldBuilder() + .addBuilder(com.google.datastore.v1.PropertyTransform.getDefaultInstance()); + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.datastore.v1.PropertyTransform.Builder addPropertyTransformsBuilder( + int index) { + return getPropertyTransformsFieldBuilder() + .addBuilder(index, com.google.datastore.v1.PropertyTransform.getDefaultInstance()); + } + /** + * + * + *
+     * Optional. The transforms to perform on the entity.
+     *
+     * This field can be set only when the operation is `insert`, `update`,
+     * or `upsert`. If present, the transforms are be applied to the entity
+     * regardless of the property mask, in order, after the operation.
+     * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public java.util.List + getPropertyTransformsBuilderList() { + return getPropertyTransformsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.datastore.v1.PropertyTransform, + com.google.datastore.v1.PropertyTransform.Builder, + com.google.datastore.v1.PropertyTransformOrBuilder> + getPropertyTransformsFieldBuilder() { + if (propertyTransformsBuilder_ == null) { + propertyTransformsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.datastore.v1.PropertyTransform, + com.google.datastore.v1.PropertyTransform.Builder, + com.google.datastore.v1.PropertyTransformOrBuilder>( + propertyTransforms_, + ((bitField0_ & 0x00000100) != 0), + getParentForChildren(), + isClean()); + propertyTransforms_ = null; + } + return propertyTransformsBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java index 0bee88325..131454c79 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationOrBuilder.java @@ -246,6 +246,39 @@ public interface MutationOrBuilder */ com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder(); + /** + * + * + *
+   * The strategy to use when a conflict is detected. Defaults to
+   * `SERVER_VALUE`.
+   * If this is set, then `conflict_detection_strategy` must also be set.
+   * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return The enum numeric value on the wire for conflictResolutionStrategy. + */ + int getConflictResolutionStrategyValue(); + /** + * + * + *
+   * The strategy to use when a conflict is detected. Defaults to
+   * `SERVER_VALUE`.
+   * If this is set, then `conflict_detection_strategy` must also be set.
+   * 
+ * + * + * .google.datastore.v1.Mutation.ConflictResolutionStrategy conflict_resolution_strategy = 10; + * + * + * @return The conflictResolutionStrategy. + */ + com.google.datastore.v1.Mutation.ConflictResolutionStrategy getConflictResolutionStrategy(); + /** * * @@ -302,6 +335,88 @@ public interface MutationOrBuilder */ com.google.datastore.v1.PropertyMaskOrBuilder getPropertyMaskOrBuilder(); + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + java.util.List getPropertyTransformsList(); + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.datastore.v1.PropertyTransform getPropertyTransforms(int index); + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + int getPropertyTransformsCount(); + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + java.util.List + getPropertyTransformsOrBuilderList(); + /** + * + * + *
+   * Optional. The transforms to perform on the entity.
+   *
+   * This field can be set only when the operation is `insert`, `update`,
+   * or `upsert`. If present, the transforms are be applied to the entity
+   * regardless of the property mask, in order, after the operation.
+   * 
+ * + * + * repeated .google.datastore.v1.PropertyTransform property_transforms = 12 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.datastore.v1.PropertyTransformOrBuilder getPropertyTransformsOrBuilder(int index); + com.google.datastore.v1.Mutation.OperationCase getOperationCase(); com.google.datastore.v1.Mutation.ConflictDetectionStrategyCase getConflictDetectionStrategyCase(); diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java index 03e96876d..aa05f03da 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResult.java @@ -38,7 +38,9 @@ private MutationResult(com.google.protobuf.GeneratedMessageV3.Builder builder super(builder); } - private MutationResult() {} + private MutationResult() { + transformResults_ = java.util.Collections.emptyList(); + } @java.lang.Override @SuppressWarnings({"unused"}) @@ -253,6 +255,87 @@ public boolean getConflictDetected() { return conflictDetected_; } + public static final int TRANSFORM_RESULTS_FIELD_NUMBER = 8; + + @SuppressWarnings("serial") + private java.util.List transformResults_; + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + @java.lang.Override + public java.util.List getTransformResultsList() { + return transformResults_; + } + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + @java.lang.Override + public java.util.List + getTransformResultsOrBuilderList() { + return transformResults_; + } + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + @java.lang.Override + public int getTransformResultsCount() { + return transformResults_.size(); + } + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + @java.lang.Override + public com.google.datastore.v1.Value getTransformResults(int index) { + return transformResults_.get(index); + } + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getTransformResultsOrBuilder(int index) { + return transformResults_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -282,6 +365,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000002) != 0)) { output.writeMessage(7, getCreateTime()); } + for (int i = 0; i < transformResults_.size(); i++) { + output.writeMessage(8, transformResults_.get(i)); + } getUnknownFields().writeTo(output); } @@ -306,6 +392,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getCreateTime()); } + for (int i = 0; i < transformResults_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, transformResults_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -335,6 +424,7 @@ public boolean equals(final java.lang.Object obj) { if (!getUpdateTime().equals(other.getUpdateTime())) return false; } if (getConflictDetected() != other.getConflictDetected()) return false; + if (!getTransformResultsList().equals(other.getTransformResultsList())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -362,6 +452,10 @@ public int hashCode() { } hash = (37 * hash) + CONFLICT_DETECTED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getConflictDetected()); + if (getTransformResultsCount() > 0) { + hash = (37 * hash) + TRANSFORM_RESULTS_FIELD_NUMBER; + hash = (53 * hash) + getTransformResultsList().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -505,6 +599,7 @@ private void maybeForceBuilderInitialization() { getKeyFieldBuilder(); getCreateTimeFieldBuilder(); getUpdateTimeFieldBuilder(); + getTransformResultsFieldBuilder(); } } @@ -529,6 +624,13 @@ public Builder clear() { updateTimeBuilder_ = null; } conflictDetected_ = false; + if (transformResultsBuilder_ == null) { + transformResults_ = java.util.Collections.emptyList(); + } else { + transformResults_ = null; + transformResultsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -556,6 +658,7 @@ public com.google.datastore.v1.MutationResult build() { public com.google.datastore.v1.MutationResult buildPartial() { com.google.datastore.v1.MutationResult result = new com.google.datastore.v1.MutationResult(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -563,6 +666,18 @@ public com.google.datastore.v1.MutationResult buildPartial() { return result; } + private void buildPartialRepeatedFields(com.google.datastore.v1.MutationResult result) { + if (transformResultsBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0)) { + transformResults_ = java.util.Collections.unmodifiableList(transformResults_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.transformResults_ = transformResults_; + } else { + result.transformResults_ = transformResultsBuilder_.build(); + } + } + private void buildPartial0(com.google.datastore.v1.MutationResult result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; @@ -647,6 +762,33 @@ public Builder mergeFrom(com.google.datastore.v1.MutationResult other) { if (other.getConflictDetected() != false) { setConflictDetected(other.getConflictDetected()); } + if (transformResultsBuilder_ == null) { + if (!other.transformResults_.isEmpty()) { + if (transformResults_.isEmpty()) { + transformResults_ = other.transformResults_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureTransformResultsIsMutable(); + transformResults_.addAll(other.transformResults_); + } + onChanged(); + } + } else { + if (!other.transformResults_.isEmpty()) { + if (transformResultsBuilder_.isEmpty()) { + transformResultsBuilder_.dispose(); + transformResultsBuilder_ = null; + transformResults_ = other.transformResults_; + bitField0_ = (bitField0_ & ~0x00000020); + transformResultsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getTransformResultsFieldBuilder() + : null; + } else { + transformResultsBuilder_.addAllMessages(other.transformResults_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -703,6 +845,18 @@ public Builder mergeFrom( bitField0_ |= 0x00000004; break; } // case 58 + case 66: + { + com.google.datastore.v1.Value m = + input.readMessage(com.google.datastore.v1.Value.parser(), extensionRegistry); + if (transformResultsBuilder_ == null) { + ensureTransformResultsIsMutable(); + transformResults_.add(m); + } else { + transformResultsBuilder_.addMessage(m); + } + break; + } // case 66 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1429,6 +1583,394 @@ public Builder clearConflictDetected() { return this; } + private java.util.List transformResults_ = + java.util.Collections.emptyList(); + + private void ensureTransformResultsIsMutable() { + if (!((bitField0_ & 0x00000020) != 0)) { + transformResults_ = + new java.util.ArrayList(transformResults_); + bitField0_ |= 0x00000020; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + transformResultsBuilder_; + + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public java.util.List getTransformResultsList() { + if (transformResultsBuilder_ == null) { + return java.util.Collections.unmodifiableList(transformResults_); + } else { + return transformResultsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public int getTransformResultsCount() { + if (transformResultsBuilder_ == null) { + return transformResults_.size(); + } else { + return transformResultsBuilder_.getCount(); + } + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public com.google.datastore.v1.Value getTransformResults(int index) { + if (transformResultsBuilder_ == null) { + return transformResults_.get(index); + } else { + return transformResultsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder setTransformResults(int index, com.google.datastore.v1.Value value) { + if (transformResultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureTransformResultsIsMutable(); + transformResults_.set(index, value); + onChanged(); + } else { + transformResultsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder setTransformResults( + int index, com.google.datastore.v1.Value.Builder builderForValue) { + if (transformResultsBuilder_ == null) { + ensureTransformResultsIsMutable(); + transformResults_.set(index, builderForValue.build()); + onChanged(); + } else { + transformResultsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder addTransformResults(com.google.datastore.v1.Value value) { + if (transformResultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureTransformResultsIsMutable(); + transformResults_.add(value); + onChanged(); + } else { + transformResultsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder addTransformResults(int index, com.google.datastore.v1.Value value) { + if (transformResultsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureTransformResultsIsMutable(); + transformResults_.add(index, value); + onChanged(); + } else { + transformResultsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder addTransformResults(com.google.datastore.v1.Value.Builder builderForValue) { + if (transformResultsBuilder_ == null) { + ensureTransformResultsIsMutable(); + transformResults_.add(builderForValue.build()); + onChanged(); + } else { + transformResultsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder addTransformResults( + int index, com.google.datastore.v1.Value.Builder builderForValue) { + if (transformResultsBuilder_ == null) { + ensureTransformResultsIsMutable(); + transformResults_.add(index, builderForValue.build()); + onChanged(); + } else { + transformResultsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder addAllTransformResults( + java.lang.Iterable values) { + if (transformResultsBuilder_ == null) { + ensureTransformResultsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, transformResults_); + onChanged(); + } else { + transformResultsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder clearTransformResults() { + if (transformResultsBuilder_ == null) { + transformResults_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + transformResultsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public Builder removeTransformResults(int index) { + if (transformResultsBuilder_ == null) { + ensureTransformResultsIsMutable(); + transformResults_.remove(index); + onChanged(); + } else { + transformResultsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public com.google.datastore.v1.Value.Builder getTransformResultsBuilder(int index) { + return getTransformResultsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public com.google.datastore.v1.ValueOrBuilder getTransformResultsOrBuilder(int index) { + if (transformResultsBuilder_ == null) { + return transformResults_.get(index); + } else { + return transformResultsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public java.util.List + getTransformResultsOrBuilderList() { + if (transformResultsBuilder_ != null) { + return transformResultsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(transformResults_); + } + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public com.google.datastore.v1.Value.Builder addTransformResultsBuilder() { + return getTransformResultsFieldBuilder() + .addBuilder(com.google.datastore.v1.Value.getDefaultInstance()); + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public com.google.datastore.v1.Value.Builder addTransformResultsBuilder(int index) { + return getTransformResultsFieldBuilder() + .addBuilder(index, com.google.datastore.v1.Value.getDefaultInstance()); + } + /** + * + * + *
+     * The results of applying each
+     * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+     * order of the request.
+     * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + public java.util.List getTransformResultsBuilderList() { + return getTransformResultsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + getTransformResultsFieldBuilder() { + if (transformResultsBuilder_ == null) { + transformResultsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder>( + transformResults_, + ((bitField0_ & 0x00000020) != 0), + getParentForChildren(), + isClean()); + transformResults_ = null; + } + return transformResultsBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java index 7d3b4f895..e4f8c7561 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/MutationResultOrBuilder.java @@ -171,4 +171,66 @@ public interface MutationResultOrBuilder * @return The conflictDetected. */ boolean getConflictDetected(); + + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + java.util.List getTransformResultsList(); + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + com.google.datastore.v1.Value getTransformResults(int index); + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + int getTransformResultsCount(); + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + java.util.List + getTransformResultsOrBuilderList(); + /** + * + * + *
+   * The results of applying each
+   * [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
+   * order of the request.
+   * 
+ * + * repeated .google.datastore.v1.Value transform_results = 8; + */ + com.google.datastore.v1.ValueOrBuilder getTransformResultsOrBuilder(int index); } diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransform.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransform.java new file mode 100644 index 000000000..520ccb0f2 --- /dev/null +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransform.java @@ -0,0 +1,3197 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/datastore/v1/datastore.proto + +// Protobuf Java Version: 3.25.5 +package com.google.datastore.v1; + +/** + * + * + *
+ * A transformation of an entity property.
+ * 
+ * + * Protobuf type {@code google.datastore.v1.PropertyTransform} + */ +public final class PropertyTransform extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.datastore.v1.PropertyTransform) + PropertyTransformOrBuilder { + private static final long serialVersionUID = 0L; + // Use PropertyTransform.newBuilder() to construct. + private PropertyTransform(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private PropertyTransform() { + property_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new PropertyTransform(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyTransform_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyTransform_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.datastore.v1.PropertyTransform.class, + com.google.datastore.v1.PropertyTransform.Builder.class); + } + + /** + * + * + *
+   * A value that is calculated by the server.
+   * 
+ * + * Protobuf enum {@code google.datastore.v1.PropertyTransform.ServerValue} + */ + public enum ServerValue implements com.google.protobuf.ProtocolMessageEnum { + /** + * + * + *
+     * Unspecified. This value must not be used.
+     * 
+ * + * SERVER_VALUE_UNSPECIFIED = 0; + */ + SERVER_VALUE_UNSPECIFIED(0), + /** + * + * + *
+     * The time at which the server processed the request, with millisecond
+     * precision. If used on multiple properties (same or different entities)
+     * in a transaction, all the properties will get the same server timestamp.
+     * 
+ * + * REQUEST_TIME = 1; + */ + REQUEST_TIME(1), + UNRECOGNIZED(-1), + ; + + /** + * + * + *
+     * Unspecified. This value must not be used.
+     * 
+ * + * SERVER_VALUE_UNSPECIFIED = 0; + */ + public static final int SERVER_VALUE_UNSPECIFIED_VALUE = 0; + /** + * + * + *
+     * The time at which the server processed the request, with millisecond
+     * precision. If used on multiple properties (same or different entities)
+     * in a transaction, all the properties will get the same server timestamp.
+     * 
+ * + * REQUEST_TIME = 1; + */ + public static final int REQUEST_TIME_VALUE = 1; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ServerValue valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ServerValue forNumber(int value) { + switch (value) { + case 0: + return SERVER_VALUE_UNSPECIFIED; + case 1: + return REQUEST_TIME; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ServerValue findValueByNumber(int number) { + return ServerValue.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.datastore.v1.PropertyTransform.getDescriptor().getEnumTypes().get(0); + } + + private static final ServerValue[] VALUES = values(); + + public static ServerValue valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ServerValue(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.datastore.v1.PropertyTransform.ServerValue) + } + + private int transformTypeCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object transformType_; + + public enum TransformTypeCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + SET_TO_SERVER_VALUE(2), + INCREMENT(3), + MAXIMUM(4), + MINIMUM(5), + APPEND_MISSING_ELEMENTS(6), + REMOVE_ALL_FROM_ARRAY(7), + TRANSFORMTYPE_NOT_SET(0); + private final int value; + + private TransformTypeCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static TransformTypeCase valueOf(int value) { + return forNumber(value); + } + + public static TransformTypeCase forNumber(int value) { + switch (value) { + case 2: + return SET_TO_SERVER_VALUE; + case 3: + return INCREMENT; + case 4: + return MAXIMUM; + case 5: + return MINIMUM; + case 6: + return APPEND_MISSING_ELEMENTS; + case 7: + return REMOVE_ALL_FROM_ARRAY; + case 0: + return TRANSFORMTYPE_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public TransformTypeCase getTransformTypeCase() { + return TransformTypeCase.forNumber(transformTypeCase_); + } + + public static final int PROPERTY_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object property_ = ""; + /** + * + * + *
+   * Optional. The name of the property.
+   *
+   * Property paths (a list of property names separated by dots (`.`)) may be
+   * used to refer to properties inside entity values. For example `foo.bar`
+   * means the property `bar` inside the entity property `foo`.
+   *
+   * If a property name contains a dot `.` or a backlslash `\`, then that name
+   * must be escaped.
+   * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The property. + */ + @java.lang.Override + public java.lang.String getProperty() { + java.lang.Object ref = property_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + property_ = s; + return s; + } + } + /** + * + * + *
+   * Optional. The name of the property.
+   *
+   * Property paths (a list of property names separated by dots (`.`)) may be
+   * used to refer to properties inside entity values. For example `foo.bar`
+   * means the property `bar` inside the entity property `foo`.
+   *
+   * If a property name contains a dot `.` or a backlslash `\`, then that name
+   * must be escaped.
+   * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for property. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPropertyBytes() { + java.lang.Object ref = property_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + property_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SET_TO_SERVER_VALUE_FIELD_NUMBER = 2; + /** + * + * + *
+   * Sets the property to the given server value.
+   * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return Whether the setToServerValue field is set. + */ + public boolean hasSetToServerValue() { + return transformTypeCase_ == 2; + } + /** + * + * + *
+   * Sets the property to the given server value.
+   * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return The enum numeric value on the wire for setToServerValue. + */ + public int getSetToServerValueValue() { + if (transformTypeCase_ == 2) { + return (java.lang.Integer) transformType_; + } + return 0; + } + /** + * + * + *
+   * Sets the property to the given server value.
+   * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return The setToServerValue. + */ + public com.google.datastore.v1.PropertyTransform.ServerValue getSetToServerValue() { + if (transformTypeCase_ == 2) { + com.google.datastore.v1.PropertyTransform.ServerValue result = + com.google.datastore.v1.PropertyTransform.ServerValue.forNumber( + (java.lang.Integer) transformType_); + return result == null + ? com.google.datastore.v1.PropertyTransform.ServerValue.UNRECOGNIZED + : result; + } + return com.google.datastore.v1.PropertyTransform.ServerValue.SERVER_VALUE_UNSPECIFIED; + } + + public static final int INCREMENT_FIELD_NUMBER = 3; + /** + * + * + *
+   * Adds the given value to the property's current value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If either of the given value or the current property value are doubles,
+   * both values will be interpreted as doubles. Double arithmetic and
+   * representation of double values follows IEEE 754 semantics.
+   * If there is positive/negative integer overflow, the property is resolved
+   * to the largest magnitude positive/negative integer.
+   * 
+ * + * .google.datastore.v1.Value increment = 3; + * + * @return Whether the increment field is set. + */ + @java.lang.Override + public boolean hasIncrement() { + return transformTypeCase_ == 3; + } + /** + * + * + *
+   * Adds the given value to the property's current value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If either of the given value or the current property value are doubles,
+   * both values will be interpreted as doubles. Double arithmetic and
+   * representation of double values follows IEEE 754 semantics.
+   * If there is positive/negative integer overflow, the property is resolved
+   * to the largest magnitude positive/negative integer.
+   * 
+ * + * .google.datastore.v1.Value increment = 3; + * + * @return The increment. + */ + @java.lang.Override + public com.google.datastore.v1.Value getIncrement() { + if (transformTypeCase_ == 3) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + /** + * + * + *
+   * Adds the given value to the property's current value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If either of the given value or the current property value are doubles,
+   * both values will be interpreted as doubles. Double arithmetic and
+   * representation of double values follows IEEE 754 semantics.
+   * If there is positive/negative integer overflow, the property is resolved
+   * to the largest magnitude positive/negative integer.
+   * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getIncrementOrBuilder() { + if (transformTypeCase_ == 3) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + + public static final int MAXIMUM_FIELD_NUMBER = 4; + /** + * + * + *
+   * Sets the property to the maximum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If a maximum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the larger operand. If the operands are
+   * equivalent (e.g. 3 and 3.0), the property does not change.
+   * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+   * zero input value is always the stored value.
+   * The maximum of any numeric value x and NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value maximum = 4; + * + * @return Whether the maximum field is set. + */ + @java.lang.Override + public boolean hasMaximum() { + return transformTypeCase_ == 4; + } + /** + * + * + *
+   * Sets the property to the maximum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If a maximum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the larger operand. If the operands are
+   * equivalent (e.g. 3 and 3.0), the property does not change.
+   * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+   * zero input value is always the stored value.
+   * The maximum of any numeric value x and NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value maximum = 4; + * + * @return The maximum. + */ + @java.lang.Override + public com.google.datastore.v1.Value getMaximum() { + if (transformTypeCase_ == 4) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + /** + * + * + *
+   * Sets the property to the maximum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If a maximum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the larger operand. If the operands are
+   * equivalent (e.g. 3 and 3.0), the property does not change.
+   * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+   * zero input value is always the stored value.
+   * The maximum of any numeric value x and NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getMaximumOrBuilder() { + if (transformTypeCase_ == 4) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + + public static final int MINIMUM_FIELD_NUMBER = 5; + /** + * + * + *
+   * Sets the property to the minimum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the input value.
+   * If a minimum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the smaller operand. If the operands
+   * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+   * and -0.0 are all zero. The minimum of a zero stored value and zero input
+   * value is always the stored value. The minimum of any numeric value x and
+   * NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value minimum = 5; + * + * @return Whether the minimum field is set. + */ + @java.lang.Override + public boolean hasMinimum() { + return transformTypeCase_ == 5; + } + /** + * + * + *
+   * Sets the property to the minimum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the input value.
+   * If a minimum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the smaller operand. If the operands
+   * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+   * and -0.0 are all zero. The minimum of a zero stored value and zero input
+   * value is always the stored value. The minimum of any numeric value x and
+   * NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value minimum = 5; + * + * @return The minimum. + */ + @java.lang.Override + public com.google.datastore.v1.Value getMinimum() { + if (transformTypeCase_ == 5) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + /** + * + * + *
+   * Sets the property to the minimum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the input value.
+   * If a minimum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the smaller operand. If the operands
+   * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+   * and -0.0 are all zero. The minimum of a zero stored value and zero input
+   * value is always the stored value. The minimum of any numeric value x and
+   * NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getMinimumOrBuilder() { + if (transformTypeCase_ == 5) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + + public static final int APPEND_MISSING_ELEMENTS_FIELD_NUMBER = 6; + /** + * + * + *
+   * Appends the given elements in order if they are not already present in
+   * the current property value.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is first set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when checking if a value is missing.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * If the input contains multiple equivalent values, only the first will
+   * be considered.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + * + * @return Whether the appendMissingElements field is set. + */ + @java.lang.Override + public boolean hasAppendMissingElements() { + return transformTypeCase_ == 6; + } + /** + * + * + *
+   * Appends the given elements in order if they are not already present in
+   * the current property value.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is first set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when checking if a value is missing.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * If the input contains multiple equivalent values, only the first will
+   * be considered.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + * + * @return The appendMissingElements. + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValue getAppendMissingElements() { + if (transformTypeCase_ == 6) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + /** + * + * + *
+   * Appends the given elements in order if they are not already present in
+   * the current property value.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is first set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when checking if a value is missing.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * If the input contains multiple equivalent values, only the first will
+   * be considered.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValueOrBuilder getAppendMissingElementsOrBuilder() { + if (transformTypeCase_ == 6) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + + public static final int REMOVE_ALL_FROM_ARRAY_FIELD_NUMBER = 7; + /** + * + * + *
+   * Removes all of the given elements from the array in the property.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when deciding whether an element should be removed.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * This will remove all equivalent values if there are duplicates.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + * + * @return Whether the removeAllFromArray field is set. + */ + @java.lang.Override + public boolean hasRemoveAllFromArray() { + return transformTypeCase_ == 7; + } + /** + * + * + *
+   * Removes all of the given elements from the array in the property.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when deciding whether an element should be removed.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * This will remove all equivalent values if there are duplicates.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + * + * @return The removeAllFromArray. + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValue getRemoveAllFromArray() { + if (transformTypeCase_ == 7) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + /** + * + * + *
+   * Removes all of the given elements from the array in the property.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when deciding whether an element should be removed.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * This will remove all equivalent values if there are duplicates.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValueOrBuilder getRemoveAllFromArrayOrBuilder() { + if (transformTypeCase_ == 7) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(property_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, property_); + } + if (transformTypeCase_ == 2) { + output.writeEnum(2, ((java.lang.Integer) transformType_)); + } + if (transformTypeCase_ == 3) { + output.writeMessage(3, (com.google.datastore.v1.Value) transformType_); + } + if (transformTypeCase_ == 4) { + output.writeMessage(4, (com.google.datastore.v1.Value) transformType_); + } + if (transformTypeCase_ == 5) { + output.writeMessage(5, (com.google.datastore.v1.Value) transformType_); + } + if (transformTypeCase_ == 6) { + output.writeMessage(6, (com.google.datastore.v1.ArrayValue) transformType_); + } + if (transformTypeCase_ == 7) { + output.writeMessage(7, (com.google.datastore.v1.ArrayValue) transformType_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(property_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, property_); + } + if (transformTypeCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeEnumSize( + 2, ((java.lang.Integer) transformType_)); + } + if (transformTypeCase_ == 3) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 3, (com.google.datastore.v1.Value) transformType_); + } + if (transformTypeCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.datastore.v1.Value) transformType_); + } + if (transformTypeCase_ == 5) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 5, (com.google.datastore.v1.Value) transformType_); + } + if (transformTypeCase_ == 6) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 6, (com.google.datastore.v1.ArrayValue) transformType_); + } + if (transformTypeCase_ == 7) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 7, (com.google.datastore.v1.ArrayValue) transformType_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.datastore.v1.PropertyTransform)) { + return super.equals(obj); + } + com.google.datastore.v1.PropertyTransform other = + (com.google.datastore.v1.PropertyTransform) obj; + + if (!getProperty().equals(other.getProperty())) return false; + if (!getTransformTypeCase().equals(other.getTransformTypeCase())) return false; + switch (transformTypeCase_) { + case 2: + if (getSetToServerValueValue() != other.getSetToServerValueValue()) return false; + break; + case 3: + if (!getIncrement().equals(other.getIncrement())) return false; + break; + case 4: + if (!getMaximum().equals(other.getMaximum())) return false; + break; + case 5: + if (!getMinimum().equals(other.getMinimum())) return false; + break; + case 6: + if (!getAppendMissingElements().equals(other.getAppendMissingElements())) return false; + break; + case 7: + if (!getRemoveAllFromArray().equals(other.getRemoveAllFromArray())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + PROPERTY_FIELD_NUMBER; + hash = (53 * hash) + getProperty().hashCode(); + switch (transformTypeCase_) { + case 2: + hash = (37 * hash) + SET_TO_SERVER_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getSetToServerValueValue(); + break; + case 3: + hash = (37 * hash) + INCREMENT_FIELD_NUMBER; + hash = (53 * hash) + getIncrement().hashCode(); + break; + case 4: + hash = (37 * hash) + MAXIMUM_FIELD_NUMBER; + hash = (53 * hash) + getMaximum().hashCode(); + break; + case 5: + hash = (37 * hash) + MINIMUM_FIELD_NUMBER; + hash = (53 * hash) + getMinimum().hashCode(); + break; + case 6: + hash = (37 * hash) + APPEND_MISSING_ELEMENTS_FIELD_NUMBER; + hash = (53 * hash) + getAppendMissingElements().hashCode(); + break; + case 7: + hash = (37 * hash) + REMOVE_ALL_FROM_ARRAY_FIELD_NUMBER; + hash = (53 * hash) + getRemoveAllFromArray().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.datastore.v1.PropertyTransform parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyTransform parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.datastore.v1.PropertyTransform parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.datastore.v1.PropertyTransform parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.datastore.v1.PropertyTransform prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * A transformation of an entity property.
+   * 
+ * + * Protobuf type {@code google.datastore.v1.PropertyTransform} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.datastore.v1.PropertyTransform) + com.google.datastore.v1.PropertyTransformOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyTransform_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyTransform_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.datastore.v1.PropertyTransform.class, + com.google.datastore.v1.PropertyTransform.Builder.class); + } + + // Construct using com.google.datastore.v1.PropertyTransform.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + property_ = ""; + if (incrementBuilder_ != null) { + incrementBuilder_.clear(); + } + if (maximumBuilder_ != null) { + maximumBuilder_.clear(); + } + if (minimumBuilder_ != null) { + minimumBuilder_.clear(); + } + if (appendMissingElementsBuilder_ != null) { + appendMissingElementsBuilder_.clear(); + } + if (removeAllFromArrayBuilder_ != null) { + removeAllFromArrayBuilder_.clear(); + } + transformTypeCase_ = 0; + transformType_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.datastore.v1.DatastoreProto + .internal_static_google_datastore_v1_PropertyTransform_descriptor; + } + + @java.lang.Override + public com.google.datastore.v1.PropertyTransform getDefaultInstanceForType() { + return com.google.datastore.v1.PropertyTransform.getDefaultInstance(); + } + + @java.lang.Override + public com.google.datastore.v1.PropertyTransform build() { + com.google.datastore.v1.PropertyTransform result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.datastore.v1.PropertyTransform buildPartial() { + com.google.datastore.v1.PropertyTransform result = + new com.google.datastore.v1.PropertyTransform(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.datastore.v1.PropertyTransform result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.property_ = property_; + } + } + + private void buildPartialOneofs(com.google.datastore.v1.PropertyTransform result) { + result.transformTypeCase_ = transformTypeCase_; + result.transformType_ = this.transformType_; + if (transformTypeCase_ == 3 && incrementBuilder_ != null) { + result.transformType_ = incrementBuilder_.build(); + } + if (transformTypeCase_ == 4 && maximumBuilder_ != null) { + result.transformType_ = maximumBuilder_.build(); + } + if (transformTypeCase_ == 5 && minimumBuilder_ != null) { + result.transformType_ = minimumBuilder_.build(); + } + if (transformTypeCase_ == 6 && appendMissingElementsBuilder_ != null) { + result.transformType_ = appendMissingElementsBuilder_.build(); + } + if (transformTypeCase_ == 7 && removeAllFromArrayBuilder_ != null) { + result.transformType_ = removeAllFromArrayBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.datastore.v1.PropertyTransform) { + return mergeFrom((com.google.datastore.v1.PropertyTransform) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.datastore.v1.PropertyTransform other) { + if (other == com.google.datastore.v1.PropertyTransform.getDefaultInstance()) return this; + if (!other.getProperty().isEmpty()) { + property_ = other.property_; + bitField0_ |= 0x00000001; + onChanged(); + } + switch (other.getTransformTypeCase()) { + case SET_TO_SERVER_VALUE: + { + setSetToServerValueValue(other.getSetToServerValueValue()); + break; + } + case INCREMENT: + { + mergeIncrement(other.getIncrement()); + break; + } + case MAXIMUM: + { + mergeMaximum(other.getMaximum()); + break; + } + case MINIMUM: + { + mergeMinimum(other.getMinimum()); + break; + } + case APPEND_MISSING_ELEMENTS: + { + mergeAppendMissingElements(other.getAppendMissingElements()); + break; + } + case REMOVE_ALL_FROM_ARRAY: + { + mergeRemoveAllFromArray(other.getRemoveAllFromArray()); + break; + } + case TRANSFORMTYPE_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + property_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: + { + int rawValue = input.readEnum(); + transformTypeCase_ = 2; + transformType_ = rawValue; + break; + } // case 16 + case 26: + { + input.readMessage(getIncrementFieldBuilder().getBuilder(), extensionRegistry); + transformTypeCase_ = 3; + break; + } // case 26 + case 34: + { + input.readMessage(getMaximumFieldBuilder().getBuilder(), extensionRegistry); + transformTypeCase_ = 4; + break; + } // case 34 + case 42: + { + input.readMessage(getMinimumFieldBuilder().getBuilder(), extensionRegistry); + transformTypeCase_ = 5; + break; + } // case 42 + case 50: + { + input.readMessage( + getAppendMissingElementsFieldBuilder().getBuilder(), extensionRegistry); + transformTypeCase_ = 6; + break; + } // case 50 + case 58: + { + input.readMessage( + getRemoveAllFromArrayFieldBuilder().getBuilder(), extensionRegistry); + transformTypeCase_ = 7; + break; + } // case 58 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int transformTypeCase_ = 0; + private java.lang.Object transformType_; + + public TransformTypeCase getTransformTypeCase() { + return TransformTypeCase.forNumber(transformTypeCase_); + } + + public Builder clearTransformType() { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private java.lang.Object property_ = ""; + /** + * + * + *
+     * Optional. The name of the property.
+     *
+     * Property paths (a list of property names separated by dots (`.`)) may be
+     * used to refer to properties inside entity values. For example `foo.bar`
+     * means the property `bar` inside the entity property `foo`.
+     *
+     * If a property name contains a dot `.` or a backlslash `\`, then that name
+     * must be escaped.
+     * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The property. + */ + public java.lang.String getProperty() { + java.lang.Object ref = property_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + property_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Optional. The name of the property.
+     *
+     * Property paths (a list of property names separated by dots (`.`)) may be
+     * used to refer to properties inside entity values. For example `foo.bar`
+     * means the property `bar` inside the entity property `foo`.
+     *
+     * If a property name contains a dot `.` or a backlslash `\`, then that name
+     * must be escaped.
+     * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for property. + */ + public com.google.protobuf.ByteString getPropertyBytes() { + java.lang.Object ref = property_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + property_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Optional. The name of the property.
+     *
+     * Property paths (a list of property names separated by dots (`.`)) may be
+     * used to refer to properties inside entity values. For example `foo.bar`
+     * means the property `bar` inside the entity property `foo`.
+     *
+     * If a property name contains a dot `.` or a backlslash `\`, then that name
+     * must be escaped.
+     * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The property to set. + * @return This builder for chaining. + */ + public Builder setProperty(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + property_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. The name of the property.
+     *
+     * Property paths (a list of property names separated by dots (`.`)) may be
+     * used to refer to properties inside entity values. For example `foo.bar`
+     * means the property `bar` inside the entity property `foo`.
+     *
+     * If a property name contains a dot `.` or a backlslash `\`, then that name
+     * must be escaped.
+     * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return This builder for chaining. + */ + public Builder clearProperty() { + property_ = getDefaultInstance().getProperty(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. The name of the property.
+     *
+     * Property paths (a list of property names separated by dots (`.`)) may be
+     * used to refer to properties inside entity values. For example `foo.bar`
+     * means the property `bar` inside the entity property `foo`.
+     *
+     * If a property name contains a dot `.` or a backlslash `\`, then that name
+     * must be escaped.
+     * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @param value The bytes for property to set. + * @return This builder for chaining. + */ + public Builder setPropertyBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + property_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+     * Sets the property to the given server value.
+     * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return Whether the setToServerValue field is set. + */ + @java.lang.Override + public boolean hasSetToServerValue() { + return transformTypeCase_ == 2; + } + /** + * + * + *
+     * Sets the property to the given server value.
+     * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return The enum numeric value on the wire for setToServerValue. + */ + @java.lang.Override + public int getSetToServerValueValue() { + if (transformTypeCase_ == 2) { + return ((java.lang.Integer) transformType_).intValue(); + } + return 0; + } + /** + * + * + *
+     * Sets the property to the given server value.
+     * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @param value The enum numeric value on the wire for setToServerValue to set. + * @return This builder for chaining. + */ + public Builder setSetToServerValueValue(int value) { + transformTypeCase_ = 2; + transformType_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Sets the property to the given server value.
+     * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return The setToServerValue. + */ + @java.lang.Override + public com.google.datastore.v1.PropertyTransform.ServerValue getSetToServerValue() { + if (transformTypeCase_ == 2) { + com.google.datastore.v1.PropertyTransform.ServerValue result = + com.google.datastore.v1.PropertyTransform.ServerValue.forNumber( + (java.lang.Integer) transformType_); + return result == null + ? com.google.datastore.v1.PropertyTransform.ServerValue.UNRECOGNIZED + : result; + } + return com.google.datastore.v1.PropertyTransform.ServerValue.SERVER_VALUE_UNSPECIFIED; + } + /** + * + * + *
+     * Sets the property to the given server value.
+     * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @param value The setToServerValue to set. + * @return This builder for chaining. + */ + public Builder setSetToServerValue( + com.google.datastore.v1.PropertyTransform.ServerValue value) { + if (value == null) { + throw new NullPointerException(); + } + transformTypeCase_ = 2; + transformType_ = value.getNumber(); + onChanged(); + return this; + } + /** + * + * + *
+     * Sets the property to the given server value.
+     * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return This builder for chaining. + */ + public Builder clearSetToServerValue() { + if (transformTypeCase_ == 2) { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + } + return this; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + incrementBuilder_; + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + * + * @return Whether the increment field is set. + */ + @java.lang.Override + public boolean hasIncrement() { + return transformTypeCase_ == 3; + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + * + * @return The increment. + */ + @java.lang.Override + public com.google.datastore.v1.Value getIncrement() { + if (incrementBuilder_ == null) { + if (transformTypeCase_ == 3) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } else { + if (transformTypeCase_ == 3) { + return incrementBuilder_.getMessage(); + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + public Builder setIncrement(com.google.datastore.v1.Value value) { + if (incrementBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + transformType_ = value; + onChanged(); + } else { + incrementBuilder_.setMessage(value); + } + transformTypeCase_ = 3; + return this; + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + public Builder setIncrement(com.google.datastore.v1.Value.Builder builderForValue) { + if (incrementBuilder_ == null) { + transformType_ = builderForValue.build(); + onChanged(); + } else { + incrementBuilder_.setMessage(builderForValue.build()); + } + transformTypeCase_ = 3; + return this; + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + public Builder mergeIncrement(com.google.datastore.v1.Value value) { + if (incrementBuilder_ == null) { + if (transformTypeCase_ == 3 + && transformType_ != com.google.datastore.v1.Value.getDefaultInstance()) { + transformType_ = + com.google.datastore.v1.Value.newBuilder( + (com.google.datastore.v1.Value) transformType_) + .mergeFrom(value) + .buildPartial(); + } else { + transformType_ = value; + } + onChanged(); + } else { + if (transformTypeCase_ == 3) { + incrementBuilder_.mergeFrom(value); + } else { + incrementBuilder_.setMessage(value); + } + } + transformTypeCase_ = 3; + return this; + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + public Builder clearIncrement() { + if (incrementBuilder_ == null) { + if (transformTypeCase_ == 3) { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + } + } else { + if (transformTypeCase_ == 3) { + transformTypeCase_ = 0; + transformType_ = null; + } + incrementBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + public com.google.datastore.v1.Value.Builder getIncrementBuilder() { + return getIncrementFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getIncrementOrBuilder() { + if ((transformTypeCase_ == 3) && (incrementBuilder_ != null)) { + return incrementBuilder_.getMessageOrBuilder(); + } else { + if (transformTypeCase_ == 3) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + } + /** + * + * + *
+     * Adds the given value to the property's current value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If either of the given value or the current property value are doubles,
+     * both values will be interpreted as doubles. Double arithmetic and
+     * representation of double values follows IEEE 754 semantics.
+     * If there is positive/negative integer overflow, the property is resolved
+     * to the largest magnitude positive/negative integer.
+     * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + getIncrementFieldBuilder() { + if (incrementBuilder_ == null) { + if (!(transformTypeCase_ == 3)) { + transformType_ = com.google.datastore.v1.Value.getDefaultInstance(); + } + incrementBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder>( + (com.google.datastore.v1.Value) transformType_, getParentForChildren(), isClean()); + transformType_ = null; + } + transformTypeCase_ = 3; + onChanged(); + return incrementBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + maximumBuilder_; + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + * + * @return Whether the maximum field is set. + */ + @java.lang.Override + public boolean hasMaximum() { + return transformTypeCase_ == 4; + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + * + * @return The maximum. + */ + @java.lang.Override + public com.google.datastore.v1.Value getMaximum() { + if (maximumBuilder_ == null) { + if (transformTypeCase_ == 4) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } else { + if (transformTypeCase_ == 4) { + return maximumBuilder_.getMessage(); + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + public Builder setMaximum(com.google.datastore.v1.Value value) { + if (maximumBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + transformType_ = value; + onChanged(); + } else { + maximumBuilder_.setMessage(value); + } + transformTypeCase_ = 4; + return this; + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + public Builder setMaximum(com.google.datastore.v1.Value.Builder builderForValue) { + if (maximumBuilder_ == null) { + transformType_ = builderForValue.build(); + onChanged(); + } else { + maximumBuilder_.setMessage(builderForValue.build()); + } + transformTypeCase_ = 4; + return this; + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + public Builder mergeMaximum(com.google.datastore.v1.Value value) { + if (maximumBuilder_ == null) { + if (transformTypeCase_ == 4 + && transformType_ != com.google.datastore.v1.Value.getDefaultInstance()) { + transformType_ = + com.google.datastore.v1.Value.newBuilder( + (com.google.datastore.v1.Value) transformType_) + .mergeFrom(value) + .buildPartial(); + } else { + transformType_ = value; + } + onChanged(); + } else { + if (transformTypeCase_ == 4) { + maximumBuilder_.mergeFrom(value); + } else { + maximumBuilder_.setMessage(value); + } + } + transformTypeCase_ = 4; + return this; + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + public Builder clearMaximum() { + if (maximumBuilder_ == null) { + if (transformTypeCase_ == 4) { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + } + } else { + if (transformTypeCase_ == 4) { + transformTypeCase_ = 0; + transformType_ = null; + } + maximumBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + public com.google.datastore.v1.Value.Builder getMaximumBuilder() { + return getMaximumFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getMaximumOrBuilder() { + if ((transformTypeCase_ == 4) && (maximumBuilder_ != null)) { + return maximumBuilder_.getMessageOrBuilder(); + } else { + if (transformTypeCase_ == 4) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + } + /** + * + * + *
+     * Sets the property to the maximum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the given value.
+     * If a maximum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the larger operand. If the operands are
+     * equivalent (e.g. 3 and 3.0), the property does not change.
+     * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+     * zero input value is always the stored value.
+     * The maximum of any numeric value x and NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + getMaximumFieldBuilder() { + if (maximumBuilder_ == null) { + if (!(transformTypeCase_ == 4)) { + transformType_ = com.google.datastore.v1.Value.getDefaultInstance(); + } + maximumBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder>( + (com.google.datastore.v1.Value) transformType_, getParentForChildren(), isClean()); + transformType_ = null; + } + transformTypeCase_ = 4; + onChanged(); + return maximumBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + minimumBuilder_; + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + * + * @return Whether the minimum field is set. + */ + @java.lang.Override + public boolean hasMinimum() { + return transformTypeCase_ == 5; + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + * + * @return The minimum. + */ + @java.lang.Override + public com.google.datastore.v1.Value getMinimum() { + if (minimumBuilder_ == null) { + if (transformTypeCase_ == 5) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } else { + if (transformTypeCase_ == 5) { + return minimumBuilder_.getMessage(); + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + public Builder setMinimum(com.google.datastore.v1.Value value) { + if (minimumBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + transformType_ = value; + onChanged(); + } else { + minimumBuilder_.setMessage(value); + } + transformTypeCase_ = 5; + return this; + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + public Builder setMinimum(com.google.datastore.v1.Value.Builder builderForValue) { + if (minimumBuilder_ == null) { + transformType_ = builderForValue.build(); + onChanged(); + } else { + minimumBuilder_.setMessage(builderForValue.build()); + } + transformTypeCase_ = 5; + return this; + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + public Builder mergeMinimum(com.google.datastore.v1.Value value) { + if (minimumBuilder_ == null) { + if (transformTypeCase_ == 5 + && transformType_ != com.google.datastore.v1.Value.getDefaultInstance()) { + transformType_ = + com.google.datastore.v1.Value.newBuilder( + (com.google.datastore.v1.Value) transformType_) + .mergeFrom(value) + .buildPartial(); + } else { + transformType_ = value; + } + onChanged(); + } else { + if (transformTypeCase_ == 5) { + minimumBuilder_.mergeFrom(value); + } else { + minimumBuilder_.setMessage(value); + } + } + transformTypeCase_ = 5; + return this; + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + public Builder clearMinimum() { + if (minimumBuilder_ == null) { + if (transformTypeCase_ == 5) { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + } + } else { + if (transformTypeCase_ == 5) { + transformTypeCase_ = 0; + transformType_ = null; + } + minimumBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + public com.google.datastore.v1.Value.Builder getMinimumBuilder() { + return getMinimumFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + @java.lang.Override + public com.google.datastore.v1.ValueOrBuilder getMinimumOrBuilder() { + if ((transformTypeCase_ == 5) && (minimumBuilder_ != null)) { + return minimumBuilder_.getMessageOrBuilder(); + } else { + if (transformTypeCase_ == 5) { + return (com.google.datastore.v1.Value) transformType_; + } + return com.google.datastore.v1.Value.getDefaultInstance(); + } + } + /** + * + * + *
+     * Sets the property to the minimum of its current value and the given
+     * value.
+     *
+     * This must be an integer or a double value.
+     * If the property is not an integer or double, or if the property does not
+     * yet exist, the transformation will set the property to the input value.
+     * If a minimum operation is applied where the property and the input value
+     * are of mixed types (that is - one is an integer and one is a double)
+     * the property takes on the type of the smaller operand. If the operands
+     * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+     * and -0.0 are all zero. The minimum of a zero stored value and zero input
+     * value is always the stored value. The minimum of any numeric value x and
+     * NaN is NaN.
+     * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder> + getMinimumFieldBuilder() { + if (minimumBuilder_ == null) { + if (!(transformTypeCase_ == 5)) { + transformType_ = com.google.datastore.v1.Value.getDefaultInstance(); + } + minimumBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.Value, + com.google.datastore.v1.Value.Builder, + com.google.datastore.v1.ValueOrBuilder>( + (com.google.datastore.v1.Value) transformType_, getParentForChildren(), isClean()); + transformType_ = null; + } + transformTypeCase_ = 5; + onChanged(); + return minimumBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.ArrayValue, + com.google.datastore.v1.ArrayValue.Builder, + com.google.datastore.v1.ArrayValueOrBuilder> + appendMissingElementsBuilder_; + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + * + * @return Whether the appendMissingElements field is set. + */ + @java.lang.Override + public boolean hasAppendMissingElements() { + return transformTypeCase_ == 6; + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + * + * @return The appendMissingElements. + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValue getAppendMissingElements() { + if (appendMissingElementsBuilder_ == null) { + if (transformTypeCase_ == 6) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } else { + if (transformTypeCase_ == 6) { + return appendMissingElementsBuilder_.getMessage(); + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + public Builder setAppendMissingElements(com.google.datastore.v1.ArrayValue value) { + if (appendMissingElementsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + transformType_ = value; + onChanged(); + } else { + appendMissingElementsBuilder_.setMessage(value); + } + transformTypeCase_ = 6; + return this; + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + public Builder setAppendMissingElements( + com.google.datastore.v1.ArrayValue.Builder builderForValue) { + if (appendMissingElementsBuilder_ == null) { + transformType_ = builderForValue.build(); + onChanged(); + } else { + appendMissingElementsBuilder_.setMessage(builderForValue.build()); + } + transformTypeCase_ = 6; + return this; + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + public Builder mergeAppendMissingElements(com.google.datastore.v1.ArrayValue value) { + if (appendMissingElementsBuilder_ == null) { + if (transformTypeCase_ == 6 + && transformType_ != com.google.datastore.v1.ArrayValue.getDefaultInstance()) { + transformType_ = + com.google.datastore.v1.ArrayValue.newBuilder( + (com.google.datastore.v1.ArrayValue) transformType_) + .mergeFrom(value) + .buildPartial(); + } else { + transformType_ = value; + } + onChanged(); + } else { + if (transformTypeCase_ == 6) { + appendMissingElementsBuilder_.mergeFrom(value); + } else { + appendMissingElementsBuilder_.setMessage(value); + } + } + transformTypeCase_ = 6; + return this; + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + public Builder clearAppendMissingElements() { + if (appendMissingElementsBuilder_ == null) { + if (transformTypeCase_ == 6) { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + } + } else { + if (transformTypeCase_ == 6) { + transformTypeCase_ = 0; + transformType_ = null; + } + appendMissingElementsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + public com.google.datastore.v1.ArrayValue.Builder getAppendMissingElementsBuilder() { + return getAppendMissingElementsFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValueOrBuilder getAppendMissingElementsOrBuilder() { + if ((transformTypeCase_ == 6) && (appendMissingElementsBuilder_ != null)) { + return appendMissingElementsBuilder_.getMessageOrBuilder(); + } else { + if (transformTypeCase_ == 6) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + } + /** + * + * + *
+     * Appends the given elements in order if they are not already present in
+     * the current property value.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is first set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when checking if a value is missing.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * If the input contains multiple equivalent values, only the first will
+     * be considered.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.ArrayValue, + com.google.datastore.v1.ArrayValue.Builder, + com.google.datastore.v1.ArrayValueOrBuilder> + getAppendMissingElementsFieldBuilder() { + if (appendMissingElementsBuilder_ == null) { + if (!(transformTypeCase_ == 6)) { + transformType_ = com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + appendMissingElementsBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.ArrayValue, + com.google.datastore.v1.ArrayValue.Builder, + com.google.datastore.v1.ArrayValueOrBuilder>( + (com.google.datastore.v1.ArrayValue) transformType_, + getParentForChildren(), + isClean()); + transformType_ = null; + } + transformTypeCase_ = 6; + onChanged(); + return appendMissingElementsBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.ArrayValue, + com.google.datastore.v1.ArrayValue.Builder, + com.google.datastore.v1.ArrayValueOrBuilder> + removeAllFromArrayBuilder_; + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + * + * @return Whether the removeAllFromArray field is set. + */ + @java.lang.Override + public boolean hasRemoveAllFromArray() { + return transformTypeCase_ == 7; + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + * + * @return The removeAllFromArray. + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValue getRemoveAllFromArray() { + if (removeAllFromArrayBuilder_ == null) { + if (transformTypeCase_ == 7) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } else { + if (transformTypeCase_ == 7) { + return removeAllFromArrayBuilder_.getMessage(); + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + public Builder setRemoveAllFromArray(com.google.datastore.v1.ArrayValue value) { + if (removeAllFromArrayBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + transformType_ = value; + onChanged(); + } else { + removeAllFromArrayBuilder_.setMessage(value); + } + transformTypeCase_ = 7; + return this; + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + public Builder setRemoveAllFromArray( + com.google.datastore.v1.ArrayValue.Builder builderForValue) { + if (removeAllFromArrayBuilder_ == null) { + transformType_ = builderForValue.build(); + onChanged(); + } else { + removeAllFromArrayBuilder_.setMessage(builderForValue.build()); + } + transformTypeCase_ = 7; + return this; + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + public Builder mergeRemoveAllFromArray(com.google.datastore.v1.ArrayValue value) { + if (removeAllFromArrayBuilder_ == null) { + if (transformTypeCase_ == 7 + && transformType_ != com.google.datastore.v1.ArrayValue.getDefaultInstance()) { + transformType_ = + com.google.datastore.v1.ArrayValue.newBuilder( + (com.google.datastore.v1.ArrayValue) transformType_) + .mergeFrom(value) + .buildPartial(); + } else { + transformType_ = value; + } + onChanged(); + } else { + if (transformTypeCase_ == 7) { + removeAllFromArrayBuilder_.mergeFrom(value); + } else { + removeAllFromArrayBuilder_.setMessage(value); + } + } + transformTypeCase_ = 7; + return this; + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + public Builder clearRemoveAllFromArray() { + if (removeAllFromArrayBuilder_ == null) { + if (transformTypeCase_ == 7) { + transformTypeCase_ = 0; + transformType_ = null; + onChanged(); + } + } else { + if (transformTypeCase_ == 7) { + transformTypeCase_ = 0; + transformType_ = null; + } + removeAllFromArrayBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + public com.google.datastore.v1.ArrayValue.Builder getRemoveAllFromArrayBuilder() { + return getRemoveAllFromArrayFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + @java.lang.Override + public com.google.datastore.v1.ArrayValueOrBuilder getRemoveAllFromArrayOrBuilder() { + if ((transformTypeCase_ == 7) && (removeAllFromArrayBuilder_ != null)) { + return removeAllFromArrayBuilder_.getMessageOrBuilder(); + } else { + if (transformTypeCase_ == 7) { + return (com.google.datastore.v1.ArrayValue) transformType_; + } + return com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + } + /** + * + * + *
+     * Removes all of the given elements from the array in the property.
+     * If the property is not an array, or if the property does not yet exist,
+     * it is set to the empty array.
+     *
+     * Equivalent numbers of different types (e.g. 3L and 3.0) are
+     * considered equal when deciding whether an element should be removed.
+     * NaN is equal to NaN, and the null value is equal to the null value.
+     * This will remove all equivalent values if there are duplicates.
+     *
+     * The corresponding transform result will be the null value.
+     * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.ArrayValue, + com.google.datastore.v1.ArrayValue.Builder, + com.google.datastore.v1.ArrayValueOrBuilder> + getRemoveAllFromArrayFieldBuilder() { + if (removeAllFromArrayBuilder_ == null) { + if (!(transformTypeCase_ == 7)) { + transformType_ = com.google.datastore.v1.ArrayValue.getDefaultInstance(); + } + removeAllFromArrayBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.datastore.v1.ArrayValue, + com.google.datastore.v1.ArrayValue.Builder, + com.google.datastore.v1.ArrayValueOrBuilder>( + (com.google.datastore.v1.ArrayValue) transformType_, + getParentForChildren(), + isClean()); + transformType_ = null; + } + transformTypeCase_ = 7; + onChanged(); + return removeAllFromArrayBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.datastore.v1.PropertyTransform) + } + + // @@protoc_insertion_point(class_scope:google.datastore.v1.PropertyTransform) + private static final com.google.datastore.v1.PropertyTransform DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.datastore.v1.PropertyTransform(); + } + + public static com.google.datastore.v1.PropertyTransform getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PropertyTransform parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.datastore.v1.PropertyTransform getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransformOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransformOrBuilder.java new file mode 100644 index 000000000..34782a859 --- /dev/null +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/PropertyTransformOrBuilder.java @@ -0,0 +1,438 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/datastore/v1/datastore.proto + +// Protobuf Java Version: 3.25.5 +package com.google.datastore.v1; + +public interface PropertyTransformOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.datastore.v1.PropertyTransform) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Optional. The name of the property.
+   *
+   * Property paths (a list of property names separated by dots (`.`)) may be
+   * used to refer to properties inside entity values. For example `foo.bar`
+   * means the property `bar` inside the entity property `foo`.
+   *
+   * If a property name contains a dot `.` or a backlslash `\`, then that name
+   * must be escaped.
+   * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The property. + */ + java.lang.String getProperty(); + /** + * + * + *
+   * Optional. The name of the property.
+   *
+   * Property paths (a list of property names separated by dots (`.`)) may be
+   * used to refer to properties inside entity values. For example `foo.bar`
+   * means the property `bar` inside the entity property `foo`.
+   *
+   * If a property name contains a dot `.` or a backlslash `\`, then that name
+   * must be escaped.
+   * 
+ * + * string property = 1 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The bytes for property. + */ + com.google.protobuf.ByteString getPropertyBytes(); + + /** + * + * + *
+   * Sets the property to the given server value.
+   * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return Whether the setToServerValue field is set. + */ + boolean hasSetToServerValue(); + /** + * + * + *
+   * Sets the property to the given server value.
+   * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return The enum numeric value on the wire for setToServerValue. + */ + int getSetToServerValueValue(); + /** + * + * + *
+   * Sets the property to the given server value.
+   * 
+ * + * .google.datastore.v1.PropertyTransform.ServerValue set_to_server_value = 2; + * + * @return The setToServerValue. + */ + com.google.datastore.v1.PropertyTransform.ServerValue getSetToServerValue(); + + /** + * + * + *
+   * Adds the given value to the property's current value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If either of the given value or the current property value are doubles,
+   * both values will be interpreted as doubles. Double arithmetic and
+   * representation of double values follows IEEE 754 semantics.
+   * If there is positive/negative integer overflow, the property is resolved
+   * to the largest magnitude positive/negative integer.
+   * 
+ * + * .google.datastore.v1.Value increment = 3; + * + * @return Whether the increment field is set. + */ + boolean hasIncrement(); + /** + * + * + *
+   * Adds the given value to the property's current value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If either of the given value or the current property value are doubles,
+   * both values will be interpreted as doubles. Double arithmetic and
+   * representation of double values follows IEEE 754 semantics.
+   * If there is positive/negative integer overflow, the property is resolved
+   * to the largest magnitude positive/negative integer.
+   * 
+ * + * .google.datastore.v1.Value increment = 3; + * + * @return The increment. + */ + com.google.datastore.v1.Value getIncrement(); + /** + * + * + *
+   * Adds the given value to the property's current value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If either of the given value or the current property value are doubles,
+   * both values will be interpreted as doubles. Double arithmetic and
+   * representation of double values follows IEEE 754 semantics.
+   * If there is positive/negative integer overflow, the property is resolved
+   * to the largest magnitude positive/negative integer.
+   * 
+ * + * .google.datastore.v1.Value increment = 3; + */ + com.google.datastore.v1.ValueOrBuilder getIncrementOrBuilder(); + + /** + * + * + *
+   * Sets the property to the maximum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If a maximum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the larger operand. If the operands are
+   * equivalent (e.g. 3 and 3.0), the property does not change.
+   * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+   * zero input value is always the stored value.
+   * The maximum of any numeric value x and NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value maximum = 4; + * + * @return Whether the maximum field is set. + */ + boolean hasMaximum(); + /** + * + * + *
+   * Sets the property to the maximum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If a maximum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the larger operand. If the operands are
+   * equivalent (e.g. 3 and 3.0), the property does not change.
+   * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+   * zero input value is always the stored value.
+   * The maximum of any numeric value x and NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value maximum = 4; + * + * @return The maximum. + */ + com.google.datastore.v1.Value getMaximum(); + /** + * + * + *
+   * Sets the property to the maximum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the given value.
+   * If a maximum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the larger operand. If the operands are
+   * equivalent (e.g. 3 and 3.0), the property does not change.
+   * 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
+   * zero input value is always the stored value.
+   * The maximum of any numeric value x and NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value maximum = 4; + */ + com.google.datastore.v1.ValueOrBuilder getMaximumOrBuilder(); + + /** + * + * + *
+   * Sets the property to the minimum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the input value.
+   * If a minimum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the smaller operand. If the operands
+   * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+   * and -0.0 are all zero. The minimum of a zero stored value and zero input
+   * value is always the stored value. The minimum of any numeric value x and
+   * NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value minimum = 5; + * + * @return Whether the minimum field is set. + */ + boolean hasMinimum(); + /** + * + * + *
+   * Sets the property to the minimum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the input value.
+   * If a minimum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the smaller operand. If the operands
+   * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+   * and -0.0 are all zero. The minimum of a zero stored value and zero input
+   * value is always the stored value. The minimum of any numeric value x and
+   * NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value minimum = 5; + * + * @return The minimum. + */ + com.google.datastore.v1.Value getMinimum(); + /** + * + * + *
+   * Sets the property to the minimum of its current value and the given
+   * value.
+   *
+   * This must be an integer or a double value.
+   * If the property is not an integer or double, or if the property does not
+   * yet exist, the transformation will set the property to the input value.
+   * If a minimum operation is applied where the property and the input value
+   * are of mixed types (that is - one is an integer and one is a double)
+   * the property takes on the type of the smaller operand. If the operands
+   * are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
+   * and -0.0 are all zero. The minimum of a zero stored value and zero input
+   * value is always the stored value. The minimum of any numeric value x and
+   * NaN is NaN.
+   * 
+ * + * .google.datastore.v1.Value minimum = 5; + */ + com.google.datastore.v1.ValueOrBuilder getMinimumOrBuilder(); + + /** + * + * + *
+   * Appends the given elements in order if they are not already present in
+   * the current property value.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is first set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when checking if a value is missing.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * If the input contains multiple equivalent values, only the first will
+   * be considered.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + * + * @return Whether the appendMissingElements field is set. + */ + boolean hasAppendMissingElements(); + /** + * + * + *
+   * Appends the given elements in order if they are not already present in
+   * the current property value.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is first set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when checking if a value is missing.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * If the input contains multiple equivalent values, only the first will
+   * be considered.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + * + * @return The appendMissingElements. + */ + com.google.datastore.v1.ArrayValue getAppendMissingElements(); + /** + * + * + *
+   * Appends the given elements in order if they are not already present in
+   * the current property value.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is first set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when checking if a value is missing.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * If the input contains multiple equivalent values, only the first will
+   * be considered.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue append_missing_elements = 6; + */ + com.google.datastore.v1.ArrayValueOrBuilder getAppendMissingElementsOrBuilder(); + + /** + * + * + *
+   * Removes all of the given elements from the array in the property.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when deciding whether an element should be removed.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * This will remove all equivalent values if there are duplicates.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + * + * @return Whether the removeAllFromArray field is set. + */ + boolean hasRemoveAllFromArray(); + /** + * + * + *
+   * Removes all of the given elements from the array in the property.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when deciding whether an element should be removed.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * This will remove all equivalent values if there are duplicates.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + * + * @return The removeAllFromArray. + */ + com.google.datastore.v1.ArrayValue getRemoveAllFromArray(); + /** + * + * + *
+   * Removes all of the given elements from the array in the property.
+   * If the property is not an array, or if the property does not yet exist,
+   * it is set to the empty array.
+   *
+   * Equivalent numbers of different types (e.g. 3L and 3.0) are
+   * considered equal when deciding whether an element should be removed.
+   * NaN is equal to NaN, and the null value is equal to the null value.
+   * This will remove all equivalent values if there are duplicates.
+   *
+   * The corresponding transform result will be the null value.
+   * 
+ * + * .google.datastore.v1.ArrayValue remove_all_from_array = 7; + */ + com.google.datastore.v1.ArrayValueOrBuilder getRemoveAllFromArrayOrBuilder(); + + com.google.datastore.v1.PropertyTransform.TransformTypeCase getTransformTypeCase(); +} diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto index 9c44501af..c0683b9ba 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto @@ -501,6 +501,18 @@ message ReserveIdsResponse {} // A mutation to apply to an entity. message Mutation { + // The possible ways to resolve a conflict detected in a mutation. + enum ConflictResolutionStrategy { + // Unspecified. Defaults to `SERVER_VALUE`. + STRATEGY_UNSPECIFIED = 0; + + // The server entity is kept. + SERVER_VALUE = 1; + + // The whole commit request fails. + FAIL = 3; + } + // The mutation operation. // // For `insert`, `update`, and `upsert`: @@ -542,6 +554,11 @@ message Mutation { google.protobuf.Timestamp update_time = 11; } + // The strategy to use when a conflict is detected. Defaults to + // `SERVER_VALUE`. + // If this is set, then `conflict_detection_strategy` must also be set. + ConflictResolutionStrategy conflict_resolution_strategy = 10; + // The properties to write in this mutation. // None of the properties in the mask may have a reserved name, except for // `__key__`. @@ -551,6 +568,112 @@ message Mutation { // updated, others are left untouched. // Properties referenced in the mask but not in the entity are deleted. PropertyMask property_mask = 9; + + // Optional. The transforms to perform on the entity. + // + // This field can be set only when the operation is `insert`, `update`, + // or `upsert`. If present, the transforms are be applied to the entity + // regardless of the property mask, in order, after the operation. + repeated PropertyTransform property_transforms = 12 + [(google.api.field_behavior) = OPTIONAL]; +} + +// A transformation of an entity property. +message PropertyTransform { + // A value that is calculated by the server. + enum ServerValue { + // Unspecified. This value must not be used. + SERVER_VALUE_UNSPECIFIED = 0; + + // The time at which the server processed the request, with millisecond + // precision. If used on multiple properties (same or different entities) + // in a transaction, all the properties will get the same server timestamp. + REQUEST_TIME = 1; + } + + // Optional. The name of the property. + // + // Property paths (a list of property names separated by dots (`.`)) may be + // used to refer to properties inside entity values. For example `foo.bar` + // means the property `bar` inside the entity property `foo`. + // + // If a property name contains a dot `.` or a backlslash `\`, then that name + // must be escaped. + string property = 1 [(google.api.field_behavior) = OPTIONAL]; + + // The transformation to apply to the property. + oneof transform_type { + // Sets the property to the given server value. + ServerValue set_to_server_value = 2; + + // Adds the given value to the property's current value. + // + // This must be an integer or a double value. + // If the property is not an integer or double, or if the property does not + // yet exist, the transformation will set the property to the given value. + // If either of the given value or the current property value are doubles, + // both values will be interpreted as doubles. Double arithmetic and + // representation of double values follows IEEE 754 semantics. + // If there is positive/negative integer overflow, the property is resolved + // to the largest magnitude positive/negative integer. + Value increment = 3; + + // Sets the property to the maximum of its current value and the given + // value. + // + // This must be an integer or a double value. + // If the property is not an integer or double, or if the property does not + // yet exist, the transformation will set the property to the given value. + // If a maximum operation is applied where the property and the input value + // are of mixed types (that is - one is an integer and one is a double) + // the property takes on the type of the larger operand. If the operands are + // equivalent (e.g. 3 and 3.0), the property does not change. + // 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and + // zero input value is always the stored value. + // The maximum of any numeric value x and NaN is NaN. + Value maximum = 4; + + // Sets the property to the minimum of its current value and the given + // value. + // + // This must be an integer or a double value. + // If the property is not an integer or double, or if the property does not + // yet exist, the transformation will set the property to the input value. + // If a minimum operation is applied where the property and the input value + // are of mixed types (that is - one is an integer and one is a double) + // the property takes on the type of the smaller operand. If the operands + // are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0, + // and -0.0 are all zero. The minimum of a zero stored value and zero input + // value is always the stored value. The minimum of any numeric value x and + // NaN is NaN. + Value minimum = 5; + + // Appends the given elements in order if they are not already present in + // the current property value. + // If the property is not an array, or if the property does not yet exist, + // it is first set to the empty array. + // + // Equivalent numbers of different types (e.g. 3L and 3.0) are + // considered equal when checking if a value is missing. + // NaN is equal to NaN, and the null value is equal to the null value. + // If the input contains multiple equivalent values, only the first will + // be considered. + // + // The corresponding transform result will be the null value. + ArrayValue append_missing_elements = 6; + + // Removes all of the given elements from the array in the property. + // If the property is not an array, or if the property does not yet exist, + // it is set to the empty array. + // + // Equivalent numbers of different types (e.g. 3L and 3.0) are + // considered equal when deciding whether an element should be removed. + // NaN is equal to NaN, and the null value is equal to the null value. + // This will remove all equivalent values if there are duplicates. + // + // The corresponding transform result will be the null value. + ArrayValue remove_all_from_array = 7; + } } // The result of applying a mutation. @@ -578,6 +701,11 @@ message MutationResult { // Whether a conflict was detected for this mutation. Always false when a // conflict detection strategy field is not set in the mutation. bool conflict_detected = 5; + + // The results of applying each + // [PropertyTransform][google.datastore.v1.PropertyTransform], in the same + // order of the request. + repeated Value transform_results = 8; } // The set of arbitrarily nested property paths used to restrict an operation to @@ -611,16 +739,13 @@ message ReadOptions { EVENTUAL = 2; } - // For Cloud Datastore, if read_consistency is not specified, then lookups and - // ancestor queries default to `read_consistency`=`STRONG`, global queries - // default to `read_consistency`=`EVENTUAL`. - // - // For Cloud Firestore in Datastore mode, if read_consistency is not specified - // then lookups and all queries default to `read_consistency`=`STRONG`. + // For Cloud Firestore in Datastore mode, if you don't specify + // read_consistency then all lookups and queries default to + // `read_consistency`=`STRONG`. Note that, in Cloud Datastore, global queries + // defaulted to `read_consistency`=`EVENTUAL`. // // Explicitly setting `read_consistency`=`EVENTUAL` will result in eventually - // consistent lookups & queries in both Cloud Datastore & Cloud Firestore in - // Datastore mode. + // consistent lookups and queries. oneof consistency_type { // The non-transactional read consistency to use. ReadConsistency read_consistency = 1; diff --git a/renovate.json b/renovate.json index 586208852..b3314f4b2 100644 --- a/renovate.json +++ b/renovate.json @@ -41,6 +41,16 @@ ], "depNameTemplate": "com.google.cloud:sdk-platform-java-config", "datasourceTemplate": "maven" + }, + { + "fileMatch": [ + "^.github/workflows/hermetic_library_generation.yaml$" + ], + "matchStrings": [ + "uses: googleapis/sdk-platform-java/.github/scripts@v(?.+?)\\n" + ], + "depNameTemplate": "com.google.api:gapic-generator-java", + "datasourceTemplate": "maven" } ], "packageRules": [ @@ -101,6 +111,13 @@ "^com.fasterxml.jackson.core" ], "groupName": "jackson dependencies" + }, + { + "matchPackagePatterns": [ + "^com.google.api:gapic-generator-java", + "^com.google.cloud:sdk-platform-java-config" + ], + "groupName": "SDK platform Java dependencies" } ], "semanticCommits": true, From 0d59482f1e1680fe245c39923d1c0d97a4a0f7a5 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Thu, 10 Oct 2024 16:08:52 -0700 Subject: [PATCH 096/102] refactor: Merging from main --- .github/.OwlBot-hermetic.yaml | 4 + .github/dependabot.yml | 12 - .github/sync-repo-settings.yaml | 17 + .gitignore | 2 +- CHANGELOG.md | 36 + README.md | 2 +- datastore-v1-proto-client/pom.xml | 4 +- google-cloud-datastore-bom/pom.xml | 10 +- .../clirr-ignored-differences.xml | 59 +- google-cloud-datastore/pom.xml | 12 +- .../com/google/cloud/datastore/Batch.java | 2 + .../com/google/cloud/datastore/Datastore.java | 32 +- .../cloud/datastore/DatastoreBatchWriter.java | 2 + .../cloud/datastore/DatastoreException.java | 83 +- .../cloud/datastore/DatastoreFactory.java | 2 + .../google/cloud/datastore/DatastoreImpl.java | 18 + .../cloud/datastore/DatastoreOptions.java | 109 +- .../cloud/datastore/DatastoreReader.java | 10 +- .../datastore/DatastoreReaderWriter.java | 3 + .../cloud/datastore/DatastoreUtils.java | 57 + .../cloud/datastore/DatastoreWriter.java | 2 + .../GrpcToDatastoreCodeTranslation.java | 93 + .../google/cloud/datastore/QueryResults.java | 6 +- .../RetryAndTraceDatastoreRpcDecorator.java | 10 + .../cloud/datastore/StructuredQuery.java | 2 + .../google/cloud/datastore/Transaction.java | 6 +- .../google/cloud/datastore/ValueBuilder.java | 2 + .../aggregation/AggregationBuilder.java | 3 + .../datastore/spi/DatastoreRpcFactory.java | 2 + .../cloud/datastore/spi/v1/DatastoreRpc.java | 26 +- .../datastore/spi/v1/GrpcDatastoreRpc.java | 191 ++ .../datastore/spi/v1/HttpDatastoreRpc.java | 13 + .../cloud/datastore/spi/v1/RpcUtils.java | 34 + .../testing/LocalDatastoreHelper.java | 13 +- .../cloud/datastore/v1/DatastoreClient.java | 947 +++++++ .../cloud/datastore/v1/DatastoreSettings.java | 294 +++ .../cloud/datastore/v1/gapic_metadata.json | 42 + .../cloud/datastore/v1/package-info.java | 49 + .../datastore/v1/stub/DatastoreStub.java | 84 + .../v1/stub/DatastoreStubSettings.java | 518 ++++ .../v1/stub/GrpcDatastoreCallableFactory.java | 113 + .../datastore/v1/stub/GrpcDatastoreStub.java | 429 ++++ .../HttpJsonDatastoreCallableFactory.java | 105 + .../v1/stub/HttpJsonDatastoreStub.java | 678 +++++ .../reflect-config.json | 2198 +++++++++++++++++ ...reTest.java => AbstractDatastoreTest.java} | 28 +- .../datastore/DatastoreExceptionTest.java | 2 +- .../cloud/datastore/DatastoreOptionsTest.java | 124 +- .../cloud/datastore/DatastoreTestGrpc.java | 61 + .../cloud/datastore/DatastoreTestHttp.java | 57 + .../cloud/datastore/DatastoreUtilsTest.java | 43 + .../GrpcToDatastoreCodeTranslationTest.java | 53 + ...Test.java => AbstractITDatastoreTest.java} | 158 +- .../datastore/it/ITDatastoreConceptsTest.java | 15 +- .../datastore/it/ITDatastoreTestGrpc.java | 64 + .../datastore/it/ITDatastoreTestHttp.java | 58 + .../datastore/it/MultipleAttemptsRule.java | 2 +- .../cloud/datastore/it/StatementExecutor.java | 7 +- .../cloud/datastore/spi/v1/RpcUtilsTest.java | 57 + .../testing/ITLocalDatastoreHelperTest.java | 23 +- .../testing/RemoteDatastoreHelper.java | 32 +- .../v1/DatastoreClientHttpJsonTest.java | 538 ++++ .../datastore/v1/DatastoreClientTest.java | 514 ++++ .../cloud/datastore/v1/MockDatastore.java | 59 + .../cloud/datastore/v1/MockDatastoreImpl.java | 241 ++ grpc-google-cloud-datastore-admin-v1/pom.xml | 4 +- grpc-google-cloud-datastore-v1/pom.xml | 72 + .../google/datastore/v1/DatastoreGrpc.java | 1194 +++++++++ pom.xml | 18 +- proto-google-cloud-datastore-admin-v1/pom.xml | 4 +- proto-google-cloud-datastore-v1/pom.xml | 4 +- .../com/google/datastore/v1/Mutation.java | 1 - .../proto/google/datastore/v1/datastore.proto | 12 - pull-gapic-grpc.sh | 42 + samples/pom.xml | 1 + samples/snapshot/pom.xml | 2 +- versions.txt | 13 +- 77 files changed, 9571 insertions(+), 268 deletions(-) create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreUtils.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslation.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreClient.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreSettings.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/gapic_metadata.json create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/package-info.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStub.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStubSettings.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreCallableFactory.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreStub.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreCallableFactory.java create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreStub.java create mode 100644 google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.v1/reflect-config.json rename google-cloud-datastore/src/test/java/com/google/cloud/datastore/{DatastoreTest.java => AbstractDatastoreTest.java} (98%) create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreUtilsTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslationTest.java rename google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/{ITDatastoreTest.java => AbstractITDatastoreTest.java} (96%) create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestGrpc.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestHttp.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientHttpJsonTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientTest.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastore.java create mode 100644 google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastoreImpl.java create mode 100644 grpc-google-cloud-datastore-v1/pom.xml create mode 100644 grpc-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreGrpc.java create mode 100644 pull-gapic-grpc.sh diff --git a/.github/.OwlBot-hermetic.yaml b/.github/.OwlBot-hermetic.yaml index 02f0dd37b..ef1c310b3 100644 --- a/.github/.OwlBot-hermetic.yaml +++ b/.github/.OwlBot-hermetic.yaml @@ -22,8 +22,12 @@ deep-copy-regex: dest: "/owl-bot-staging/$1/proto-google-cloud-datastore-$1/src" - source: "/google/datastore/admin/(v.*)/.*-java/proto-google-.*/src" dest: "/owl-bot-staging/$1/proto-google-cloud-datastore-admin-$1/src" +- source: "/google/datastore/(v.*)/.*-java/grpc-google-.*/src" + dest: "/owl-bot-staging/$1/grpc-google-cloud-datastore-$1/src" - source: "/google/datastore/admin/(v.*)/.*-java/grpc-google-.*/src" dest: "/owl-bot-staging/$1/grpc-google-cloud-datastore-admin-$1/src" # Admin & Data APIs share the same wrapper library. +- source: "/google/datastore/(v.*)/.*-java/gapic-google-.*/src" + dest: "/owl-bot-staging/$1/google-cloud-datastore/src" - source: "/google/datastore/admin/(v.*)/.*-java/gapic-google-.*/src" dest: "/owl-bot-staging/$1/google-cloud-datastore/src" diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3a7c9a454..203f9eacc 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,5 +1,4 @@ version: 2 - updates: - package-ecosystem: "maven" directory: "/" @@ -18,14 +17,3 @@ updates: # it via template in the synthtool repository. ignore: - dependency-name: "*" - - # rules for the `V3-experimental` branch - - package-ecosystem: maven - directory: "/" - schedule: - interval: daily - commit-message: - # Prefix all commit messages with "deps: " - prefix: "deps" - open-pull-requests-limit: 10 - target-branch: "V3-experimental" diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index fce568dc2..11b08a104 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -186,6 +186,23 @@ branchProtectionRules: - 'Kokoro - Test: Java GraalVM Native Image' - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc + - pattern: grpc-experimental + isAdminEnforced: true + requiredApprovingReviewCount: 1 + requiresCodeOwnerReviews: true + requiresStrictStatusChecks: false + requiredStatusCheckContexts: + - dependencies (17) + - lint + - clirr + - units (8) + - units (11) + - 'Kokoro - Test: Integration' + - cla/google + - OwlBot Post Processor + - 'Kokoro - Test: Java GraalVM Native Image' + - 'Kokoro - Test: Java 17 GraalVM Native Image' + - javadoc permissionRules: - team: yoshi-admins permission: admin diff --git a/.gitignore b/.gitignore index 6f5e4424d..241f84417 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ target/ *.iml __pycache__/ -.flattened-pom.xml \ No newline at end of file +.flattened-pom.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index e2670cb02..56a38be55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,42 @@ * **deps:** Update the Java code generator (gapic-generator-java) to 2.39.0 ([#1406](https://github.com/googleapis/java-datastore/issues/1406)) ([b265fb3](https://github.com/googleapis/java-datastore/commit/b265fb3c3b8ebc972edbe5a7beae816379846dac)) +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 ([#1426](https://github.com/googleapis/java-datastore/issues/1426)) ([ac3a1c1](https://github.com/googleapis/java-datastore/commit/ac3a1c10f64c8338346f8fb39f4857f47e8fc639)) +* Update dependency com.google.errorprone:error_prone_core to v2.27.0 ([#1411](https://github.com/googleapis/java-datastore/issues/1411)) ([a3f5a2c](https://github.com/googleapis/java-datastore/commit/a3f5a2c24bff408479541e08278e888cf3166727)) +* Update dependency com.google.errorprone:error_prone_core to v2.27.1 ([#1421](https://github.com/googleapis/java-datastore/issues/1421)) ([48d7daf](https://github.com/googleapis/java-datastore/commit/48d7dafc0c7a49e95bf41d29865ac872b0de0faf)) +* Update dependency com.google.guava:guava-testlib to v33.2.0-jre ([#1422](https://github.com/googleapis/java-datastore/issues/1422)) ([5a5dfdf](https://github.com/googleapis/java-datastore/commit/5a5dfdfb0855cf485b875ab071b79979d24f98dd)) + +## [2.20.0](https://github.com/googleapis/java-datastore/compare/v2.19.3...v2.20.0) (2024-05-27) + + +### Features + +* New PropertyMask field which allows partial commits, lookups, and query results ([#1455](https://github.com/googleapis/java-datastore/issues/1455)) ([ff5e397](https://github.com/googleapis/java-datastore/commit/ff5e39775446216b4806f55f14dacb7fc8e8854b)) + + +### Bug Fixes + +* Migrate off TextPrinter's deprecated methods ([#1452](https://github.com/googleapis/java-datastore/issues/1452)) ([c3c1317](https://github.com/googleapis/java-datastore/commit/c3c131735863d71971110e2ac7ac0244ce16ee92)) +* Set the correct database id on the key parent when calling Key#getParent ([#1457](https://github.com/googleapis/java-datastore/issues/1457)) ([992815d](https://github.com/googleapis/java-datastore/commit/992815d9989d04f7b371dfa320ed17894626a07f)) + +## [2.19.3](https://github.com/googleapis/java-datastore/compare/v2.19.2...v2.19.3) (2024-05-16) + + +### Dependencies + +* Update actions/checkout action to v4 ([#1390](https://github.com/googleapis/java-datastore/issues/1390)) ([80dbca1](https://github.com/googleapis/java-datastore/commit/80dbca1246facf21b08d33e5c6a09b9708b6ce63)) +* Update dependency com.google.cloud:sdk-platform-java-config to v3.30.1 ([#1443](https://github.com/googleapis/java-datastore/issues/1443)) ([79f6c46](https://github.com/googleapis/java-datastore/commit/79f6c46bdbabc66082f23e9562ee9541e0fdeac9)) + +## [2.19.2](https://github.com/googleapis/java-datastore/compare/v2.19.1...v2.19.2) (2024-05-03) + + +### Bug Fixes + +* **deps:** Update the Java code generator (gapic-generator-java) to 2.39.0 ([#1406](https://github.com/googleapis/java-datastore/issues/1406)) ([b265fb3](https://github.com/googleapis/java-datastore/commit/b265fb3c3b8ebc972edbe5a7beae816379846dac)) + + ### Dependencies * Update dependency com.google.cloud:sdk-platform-java-config to v3.30.0 ([#1426](https://github.com/googleapis/java-datastore/issues/1426)) ([ac3a1c1](https://github.com/googleapis/java-datastore/commit/ac3a1c10f64c8338346f8fb39f4857f47e8fc639)) diff --git a/README.md b/README.md index d5e61c715..ec71bc23e 100644 --- a/README.md +++ b/README.md @@ -481,7 +481,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.22.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-datastore/2.19.1 [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/datastore-v1-proto-client/pom.xml b/datastore-v1-proto-client/pom.xml index 34c4d9475..0fa158205 100644 --- a/datastore-v1-proto-client/pom.xml +++ b/datastore-v1-proto-client/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud.datastore datastore-v1-proto-client - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.cloud google-cloud-datastore-parent - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT jar diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 4c3ab17bb..3977edc78 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT pom com.google.cloud @@ -52,22 +52,22 @@ com.google.cloud google-cloud-datastore - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.113.0 + 0.113.0-grpc-experimental-1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT
diff --git a/google-cloud-datastore/clirr-ignored-differences.xml b/google-cloud-datastore/clirr-ignored-differences.xml index 6275f05c6..d1e3a4ff4 100644 --- a/google-cloud-datastore/clirr-ignored-differences.xml +++ b/google-cloud-datastore/clirr-ignored-differences.xml @@ -1,7 +1,50 @@ - + + + com/google/cloud/datastore/ReadOption$QueryAndReadOptions + * + 8001 + + + com/google/cloud/datastore/execution/request/AggregationQueryRequestProtoPreparer + *QueryAndReadOptions* + *QueryConfig* + 7005 + + + + com/google/cloud/datastore/DatastoreException + 5000 + com/google/cloud/grpc/BaseGrpcServiceException + + + + com/google/cloud/datastore/DatastoreException + 5001 + com/google/cloud/http/BaseHttpServiceException + + + com/google/cloud/datastore/Datastore + void close() + 7012 + + + com/google/cloud/datastore/spi/v1/DatastoreRpc + void close() + 7012 + + + com/google/cloud/datastore/Datastore + boolean isClosed() + 7012 + + + com/google/cloud/datastore/spi/v1/DatastoreRpc + boolean isClosed() + 7012 + com/google/cloud/datastore/Datastore com.google.cloud.datastore.QueryResults run(com.google.cloud.datastore.Query, com.google.cloud.datastore.models.ExplainOptions, com.google.cloud.datastore.ReadOption[]) @@ -14,7 +57,7 @@ com/google/cloud/datastore/DatastoreReader - com.google.cloud.datastore.AggregationResults runAggregation(com.google.cloud.datastore.AggregationQuery, com.google.cloud.datastore.models.ExplainOptions) + com.google.cloud.datastore.AggregationResults runAggregation(com.google.cloud.datastore.AggregationQuery, com.google.cloud.datastore.models.ExplainOptions) 7012 @@ -28,18 +71,6 @@ 7012 - - - com/google/cloud/datastore/ReadOption$QueryConfig - com.google.cloud.datastore.ReadOption$QueryConfig create(com.google.cloud.datastore.Query, java.util.List) - *com.google.datastore.v1.ExplainOptions* - 7005 - - - com/google/cloud/datastore/ReadOption$QueryConfig - com.google.cloud.datastore.ReadOption$QueryConfig create(com.google.cloud.datastore.Query) - 7004 - com/google/cloud/datastore/execution/AggregationQueryExecutor com.google.cloud.datastore.AggregationResults execute(com.google.cloud.datastore.AggregationQuery, com.google.cloud.datastore.ReadOption[]) diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 9e91f9ca5..2d54a7a37 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT google-cloud-datastore @@ -31,6 +31,10 @@
+ + com.google.api.grpc + grpc-google-cloud-datastore-v1 + com.google.api.grpc grpc-google-cloud-datastore-admin-v1 @@ -39,6 +43,10 @@ com.google.cloud google-cloud-core-http + + com.google.cloud + google-cloud-core-grpc + com.google.api.grpc proto-google-cloud-datastore-v1 diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Batch.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Batch.java index eb4abd854..c9a01673d 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Batch.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Batch.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore; +import com.google.api.core.InternalExtensionOnly; import java.util.List; import javax.annotation.concurrent.NotThreadSafe; @@ -42,6 +43,7 @@ * This class too should not be treated as a thread safe class. */ @NotThreadSafe +@InternalExtensionOnly public interface Batch extends DatastoreBatchWriter { interface Response { diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Datastore.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Datastore.java index 5bd8384a3..791446de5 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Datastore.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Datastore.java @@ -17,6 +17,7 @@ package com.google.cloud.datastore; import com.google.api.core.BetaApi; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.Service; import com.google.cloud.datastore.models.ExplainOptions; import com.google.datastore.v1.TransactionOptions; @@ -24,7 +25,8 @@ import java.util.List; /** An interface for Google Cloud Datastore. */ -public interface Datastore extends Service, DatastoreReaderWriter { +@InternalExtensionOnly +public interface Datastore extends Service, DatastoreReaderWriter, AutoCloseable { /** * Returns a new Datastore transaction. @@ -51,9 +53,9 @@ public interface Datastore extends Service, DatastoreReaderWri * @param the type of the return value */ interface TransactionCallable { + T run(DatastoreReaderWriter readerWriter) throws Exception; } - /** * Invokes the callback's {@link Datastore.TransactionCallable#run} method with a {@link * DatastoreReaderWriter} that is associated with a new transaction. The transaction will be @@ -481,10 +483,7 @@ interface TransactionCallable { * @throws DatastoreException upon failure */ @BetaApi - default QueryResults run( - Query query, ExplainOptions explainOptions, ReadOption... options) { - throw new UnsupportedOperationException("Not implemented."); - } + QueryResults run(Query query, ExplainOptions explainOptions, ReadOption... options); /** * Submits a {@link AggregationQuery} and returns {@link AggregationResults}. {@link ReadOption}s @@ -529,9 +528,7 @@ default QueryResults run( * @throws DatastoreException upon failure * @return {@link AggregationResults} */ - default AggregationResults runAggregation(AggregationQuery query, ReadOption... options) { - throw new UnsupportedOperationException("Not implemented."); - } + AggregationResults runAggregation(AggregationQuery query, ReadOption... options); /** * Submits a {@link AggregationQuery} with specified {@link @@ -557,8 +554,17 @@ default AggregationResults runAggregation(AggregationQuery query, ReadOption... * @return {@link AggregationResults} */ @BetaApi - default AggregationResults runAggregation( - AggregationQuery query, ExplainOptions explainOptions, ReadOption... options) { - throw new UnsupportedOperationException("Not implemented."); - } + AggregationResults runAggregation( + AggregationQuery query, ExplainOptions explainOptions, ReadOption... options); + + /** + * Closes the gRPC channels associated with this instance and frees up their resources. This + * method blocks until all channels are closed. Once this method is called, this Datastore client + * is no longer usable. + */ + @Override + void close() throws Exception; + + /** Returns true if this background resource has been shut down. */ + boolean isClosed(); } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreBatchWriter.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreBatchWriter.java index db4bd3179..28d2569b6 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreBatchWriter.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreBatchWriter.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore; +import com.google.api.core.InternalExtensionOnly; import java.util.List; import javax.annotation.concurrent.NotThreadSafe; @@ -31,6 +32,7 @@ * This class too should not be treated as a thread safe class. */ @NotThreadSafe +@InternalExtensionOnly public interface DatastoreBatchWriter extends DatastoreWriter { /** diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreException.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreException.java index 512d0a3dc..44bde2c10 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreException.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreException.java @@ -16,10 +16,16 @@ package com.google.cloud.datastore; +import com.google.api.gax.grpc.GrpcStatusCode; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.StatusCode; import com.google.cloud.BaseServiceException; import com.google.cloud.RetryHelper.RetryHelperException; import com.google.cloud.http.BaseHttpServiceException; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableSet; +import io.grpc.StatusException; +import io.grpc.StatusRuntimeException; import java.io.IOException; import java.util.Set; @@ -31,7 +37,7 @@ */ public final class DatastoreException extends BaseHttpServiceException { - // see https://cloud.google.com/datastore/docs/concepts/errors#Error_Codes" + // see https://cloud.google.com/datastore/docs/concepts/errors#Error_Codes private static final Set RETRYABLE_ERRORS = ImmutableSet.of( new Error(10, "ABORTED", false), @@ -43,6 +49,10 @@ public DatastoreException(int code, String message, String reason) { this(code, message, reason, true, null); } + public DatastoreException(int code, String message, Throwable cause) { + super(code, message, null, true, RETRYABLE_ERRORS, cause); + } + public DatastoreException(int code, String message, String reason, Throwable cause) { super(code, message, reason, true, RETRYABLE_ERRORS, cause); } @@ -64,7 +74,76 @@ public DatastoreException(IOException exception) { */ static DatastoreException translateAndThrow(RetryHelperException ex) { BaseServiceException.translate(ex); - throw new DatastoreException(UNKNOWN_CODE, ex.getMessage(), null, ex.getCause()); + throw transformThrowable(ex); + } + + static BaseServiceException transformThrowable(Throwable t) { + if (t instanceof BaseServiceException) { + return (BaseServiceException) t; + } + if (t.getCause() instanceof BaseServiceException) { + return (BaseServiceException) t.getCause(); + } + if (t instanceof ApiException) { + return asDatastoreException((ApiException) t); + } + if (t.getCause() instanceof ApiException) { + return asDatastoreException((ApiException) t.getCause()); + } + return getDatastoreException(t); + } + + private static DatastoreException getDatastoreException(Throwable t) { + // unwrap a RetryHelperException if that is what is being translated + if (t instanceof RetryHelperException) { + return new DatastoreException(UNKNOWN_CODE, t.getMessage(), null, t.getCause()); + } + return new DatastoreException(UNKNOWN_CODE, t.getMessage(), t); + } + + static DatastoreException asDatastoreException(ApiException apiEx) { + int datastoreStatusCode = 0; + StatusCode statusCode = apiEx.getStatusCode(); + if (statusCode instanceof GrpcStatusCode) { + GrpcStatusCode gsc = (GrpcStatusCode) statusCode; + datastoreStatusCode = + GrpcToDatastoreCodeTranslation.grpcCodeToDatastoreStatusCode(gsc.getTransportCode()); + } + + // If there is a gRPC exception in our cause, pull its error message up to be our + // message otherwise, create a generic error message with the status code. + String statusCodeName = statusCode.getCode().name(); + String statusExceptionMessage = getStatusExceptionMessage(apiEx); + + String message; + if (statusExceptionMessage != null) { + message = statusCodeName + ": " + statusExceptionMessage; + } else { + message = "Error: " + statusCodeName; + } + + String reason = ""; + if (Strings.isNullOrEmpty(apiEx.getReason())) { + if (apiEx.getStatusCode() != null) { + reason = apiEx.getStatusCode().getCode().name(); + } + } + // It'd be better to use ExceptionData and BaseServiceException#(ExceptionData) but, + // BaseHttpServiceException does not pass that through so we're stuck using this for now. + // TODO: When we can break the coupling to BaseHttpServiceException replace this + return new DatastoreException(datastoreStatusCode, message, reason, apiEx); + } + + private static String getStatusExceptionMessage(Exception apiEx) { + if (apiEx.getMessage() != null) { + return apiEx.getMessage(); + } else { + Throwable cause = apiEx.getCause(); + if (cause instanceof StatusRuntimeException || cause instanceof StatusException) { + return cause.getMessage(); + } + return null; + } } /** diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreFactory.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreFactory.java index 1b443066d..54274e7bb 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreFactory.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreFactory.java @@ -16,7 +16,9 @@ package com.google.cloud.datastore; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.ServiceFactory; /** An interface for Datastore factories. */ +@InternalExtensionOnly public interface DatastoreFactory extends ServiceFactory {} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java index 2bf8389fd..a71ebb16f 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java @@ -73,10 +73,13 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.annotation.Nullable; final class DatastoreImpl extends BaseService implements Datastore { + Logger logger = Logger.getLogger(Datastore.class.getName()); private final DatastoreRpc datastoreRpc; private final RetrySettings retrySettings; private static final ExceptionHandler TRANSACTION_EXCEPTION_HANDLER = @@ -180,7 +183,22 @@ public T call() throws DatastoreException { } } + @Override + public void close() throws Exception { + try { + datastoreRpc.close(); + } catch (Exception e) { + logger.log(Level.WARNING, "Failed to close channels", e); + } + } + + @Override + public boolean isClosed() { + return datastoreRpc.isClosed(); + } + static class ReadWriteTransactionCallable implements Callable { + private final Datastore datastore; private final TransactionCallable callable; private volatile TransactionOptions options; 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 cef40eedd..7dda76f76 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 @@ -19,16 +19,22 @@ import static com.google.cloud.datastore.Validator.validateNamespace; import com.google.api.core.BetaApi; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.rpc.TransportChannelProvider; import com.google.cloud.ServiceDefaults; import com.google.cloud.ServiceOptions; import com.google.cloud.ServiceRpc; import com.google.cloud.TransportOptions; import com.google.cloud.datastore.spi.DatastoreRpcFactory; import com.google.cloud.datastore.spi.v1.DatastoreRpc; +import com.google.cloud.datastore.spi.v1.GrpcDatastoreRpc; import com.google.cloud.datastore.spi.v1.HttpDatastoreRpc; +import com.google.cloud.datastore.v1.DatastoreSettings; +import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.http.HttpTransportOptions; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableSet; +import java.io.IOException; import java.lang.reflect.Method; import java.util.Objects; import java.util.Set; @@ -42,6 +48,10 @@ public class DatastoreOptions extends ServiceOptions SCOPES = ImmutableSet.of(DATASTORE_SCOPE); private static final String DEFAULT_DATABASE_ID = ""; + public static final String PROJECT_ID_ENV_VAR = "DATASTORE_PROJECT_ID"; + public static final String LOCAL_HOST_ENV_VAR = "DATASTORE_EMULATOR_HOST"; + + private transient TransportChannelProvider channelProvider = null; private final String namespace; private final String databaseId; @@ -65,7 +75,15 @@ public static class DefaultDatastoreRpcFactory implements DatastoreRpcFactory { @Override public ServiceRpc create(DatastoreOptions options) { - return new HttpDatastoreRpc(options); + try { + if (options.getTransportOptions() instanceof GrpcTransportOptions) { + return new GrpcDatastoreRpc(options); + } else { + return new HttpDatastoreRpc(options); + } + } catch (IOException e) { + throw new RuntimeException(e); + } } } @@ -84,6 +102,9 @@ public static class Builder extends ServiceOptions.BuilderThis is only compatible with clients using a gRPC transport (see {@code + * DatastoreOptions#setTransportOptions(GrpcTransportOptions)} for more details). + * + *

This functionality is experimental and subject to change. + * + * @param channelProvider A InstantiatingGrpcChannelProvider object that defines the transport + * provider for this client. + */ + @BetaApi + public Builder setChannelProvider(TransportChannelProvider channelProvider) { + this.channelProvider = validateChannelProvider(channelProvider); + return this; + } + @Override public DatastoreOptions build() { + if (this.host == null && this.transportOptions instanceof GrpcTransportOptions) { + this.setHost(DatastoreSettings.getDefaultEndpoint()); + } return new DatastoreOptions(this); } @@ -135,6 +193,15 @@ public Builder setOpenTelemetryOptions( } } + private static TransportChannelProvider validateChannelProvider( + TransportChannelProvider channelProvider) { + if (channelProvider != null && !(channelProvider instanceof InstantiatingGrpcChannelProvider)) { + throw new IllegalArgumentException( + "Only GRPC channels are allowed for " + API_SHORT_NAME + "."); + } + return channelProvider; + } + private DatastoreOptions(Builder builder) { super(DatastoreFactory.class, DatastoreRpcFactory.class, builder, new DatastoreDefaults()); @@ -146,27 +213,37 @@ private DatastoreOptions(Builder builder) { namespace = MoreObjects.firstNonNull(builder.namespace, defaultNamespace()); databaseId = MoreObjects.firstNonNull(builder.databaseId, DEFAULT_DATABASE_ID); + + if (getTransportOptions() instanceof HttpTransportOptions && builder.channelProvider != null) { + throw new IllegalArgumentException( + "Only gRPC transport allows setting of channel provider or credentials provider"); + } else if (getTransportOptions() instanceof GrpcTransportOptions) { + this.channelProvider = + builder.channelProvider != null + ? builder.channelProvider + : GrpcTransportOptions.setUpChannelProvider( + DatastoreSettings.defaultGrpcTransportProviderBuilder(), this); + } + } + + public TransportChannelProvider getTransportChannelProvider() { + return channelProvider; } @Override protected String getDefaultHost() { - String host = - System.getProperty( - com.google.datastore.v1.client.DatastoreHelper.LOCAL_HOST_ENV_VAR, - System.getenv(com.google.datastore.v1.client.DatastoreHelper.LOCAL_HOST_ENV_VAR)); + String host = System.getProperty(LOCAL_HOST_ENV_VAR, System.getenv(LOCAL_HOST_ENV_VAR)); return host != null ? host : com.google.datastore.v1.client.DatastoreFactory.DEFAULT_HOST; } @Override protected String getDefaultProject() { - String projectId = - System.getProperty( - com.google.datastore.v1.client.DatastoreHelper.PROJECT_ID_ENV_VAR, - System.getenv(com.google.datastore.v1.client.DatastoreHelper.PROJECT_ID_ENV_VAR)); + String projectId = System.getProperty(PROJECT_ID_ENV_VAR, System.getenv(PROJECT_ID_ENV_VAR)); return projectId != null ? projectId : super.getDefaultProject(); } private static class DatastoreDefaults implements ServiceDefaults { + private final TransportOptions TRANSPORT_OPTIONS = getDefaultTransportOptionsBuilder().build(); @Override public DatastoreFactory getDefaultServiceFactory() { @@ -180,7 +257,11 @@ public DatastoreRpcFactory getDefaultRpcFactory() { @Override public TransportOptions getDefaultTransportOptions() { - return getDefaultHttpTransportOptions(); + return TRANSPORT_OPTIONS; + } + + public static HttpTransportOptions.Builder getDefaultTransportOptionsBuilder() { + return HttpTransportOptions.newBuilder(); } } @@ -188,6 +269,10 @@ public static HttpTransportOptions getDefaultHttpTransportOptions() { return HttpTransportOptions.newBuilder().build(); } + public static GrpcTransportOptions getDefaultGrpcTransportOptions() { + return GrpcTransportOptions.newBuilder().build(); + } + /** Returns the default namespace to be used by the datastore service. */ public String getNamespace() { return namespace; diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReader.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReader.java index 8aef7f5c0..c3137a9a7 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReader.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReader.java @@ -17,11 +17,13 @@ package com.google.cloud.datastore; import com.google.api.core.BetaApi; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.datastore.models.ExplainOptions; import java.util.Iterator; import java.util.List; /** An interface to represent Google Cloud Datastore read operations. */ +@InternalExtensionOnly public interface DatastoreReader { /** @@ -61,9 +63,7 @@ public interface DatastoreReader { * * @throws DatastoreException upon failure */ - default AggregationResults runAggregation(AggregationQuery query) { - throw new UnsupportedOperationException("Not implemented."); - } + AggregationResults runAggregation(AggregationQuery query); /** * Submits a {@link AggregationQuery} with a specified {@link @@ -72,7 +72,5 @@ default AggregationResults runAggregation(AggregationQuery query) { * @throws DatastoreException upon failure */ @BetaApi - default AggregationResults runAggregation(AggregationQuery query, ExplainOptions explainOptions) { - throw new UnsupportedOperationException("Not implemented."); - } + AggregationResults runAggregation(AggregationQuery query, ExplainOptions explainOptions); } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReaderWriter.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReaderWriter.java index a51a5aa77..bc8700c70 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReaderWriter.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreReaderWriter.java @@ -16,5 +16,8 @@ package com.google.cloud.datastore; +import com.google.api.core.InternalExtensionOnly; + /** An interface that combines both Google Cloud Datastore read and write operations. */ +@InternalExtensionOnly public interface DatastoreReaderWriter extends DatastoreReader, DatastoreWriter {} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreUtils.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreUtils.java new file mode 100644 index 000000000..e991fd51d --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreUtils.java @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore; + +import com.google.api.core.InternalApi; +import com.google.cloud.NoCredentials; +import com.google.common.base.Strings; +import java.net.InetAddress; +import java.net.URL; + +@InternalApi +public class DatastoreUtils { + + public static boolean isEmulator(DatastoreOptions datastoreOptions) { + return isLocalHost(datastoreOptions.getHost()) + || NoCredentials.getInstance().equals(datastoreOptions.getCredentials()); + } + + public static boolean isLocalHost(String host) { + if (Strings.isNullOrEmpty(host)) { + return false; + } + try { + String normalizedHost = "http://" + removeScheme(host); + InetAddress hostAddr = InetAddress.getByName(new URL(normalizedHost).getHost()); + return hostAddr.isAnyLocalAddress() || hostAddr.isLoopbackAddress(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static String removeScheme(String url) { + if (url != null) { + url = url.toLowerCase(); + if (url.startsWith("https://")) { + return url.substring("https://".length()); + } else if (url.startsWith("http://")) { + return url.substring("http://".length()); + } + } + return url; + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreWriter.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreWriter.java index 6c1d6fdbc..b414995e6 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreWriter.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreWriter.java @@ -16,9 +16,11 @@ package com.google.cloud.datastore; +import com.google.api.core.InternalExtensionOnly; import java.util.List; /** An interface to represent Google Cloud Datastore write operations. */ +@InternalExtensionOnly public interface DatastoreWriter { /** diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslation.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslation.java new file mode 100644 index 000000000..1d63fb19a --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslation.java @@ -0,0 +1,93 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore; + +import com.google.api.gax.grpc.GrpcStatusCode; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.rpc.Code; +import io.grpc.Status; +import java.util.Map; +import java.util.function.Function; + +final class GrpcToDatastoreCodeTranslation { + /** Mappings between gRPC status codes and their corresponding code numbers. */ + private static final ImmutableList STATUS_CODE_MAPPINGS = + ImmutableList.of( + StatusCodeMapping.of(Code.OK.getNumber(), Status.Code.OK), + StatusCodeMapping.of(Code.DATA_LOSS.getNumber(), Status.Code.DATA_LOSS), + StatusCodeMapping.of(Code.INVALID_ARGUMENT.getNumber(), Status.Code.INVALID_ARGUMENT), + StatusCodeMapping.of(Code.OUT_OF_RANGE.getNumber(), Status.Code.OUT_OF_RANGE), + StatusCodeMapping.of(Code.UNAUTHENTICATED.getNumber(), Status.Code.UNAUTHENTICATED), + StatusCodeMapping.of(Code.PERMISSION_DENIED.getNumber(), Status.Code.PERMISSION_DENIED), + StatusCodeMapping.of(Code.NOT_FOUND.getNumber(), Status.Code.NOT_FOUND), + StatusCodeMapping.of(Code.ALREADY_EXISTS.getNumber(), Status.Code.ALREADY_EXISTS), + StatusCodeMapping.of( + Code.FAILED_PRECONDITION.getNumber(), Status.Code.FAILED_PRECONDITION), + StatusCodeMapping.of(Code.RESOURCE_EXHAUSTED.getNumber(), Status.Code.RESOURCE_EXHAUSTED), + StatusCodeMapping.of(Code.INTERNAL.getNumber(), Status.Code.INTERNAL), + StatusCodeMapping.of(Code.UNIMPLEMENTED.getNumber(), Status.Code.UNIMPLEMENTED), + StatusCodeMapping.of(Code.UNAVAILABLE.getNumber(), Status.Code.UNAVAILABLE), + StatusCodeMapping.of(Code.DEADLINE_EXCEEDED.getNumber(), Status.Code.DEADLINE_EXCEEDED), + StatusCodeMapping.of(Code.ABORTED.getNumber(), Status.Code.ABORTED), + StatusCodeMapping.of(Code.CANCELLED.getNumber(), Status.Code.CANCELLED), + StatusCodeMapping.of(Code.UNKNOWN.getNumber(), Status.Code.UNKNOWN)); + + /** Index our {@link StatusCodeMapping} for constant time lookup by {@link Status.Code} */ + private static final Map GRPC_CODE_INDEX = + STATUS_CODE_MAPPINGS.stream() + .collect( + ImmutableMap.toImmutableMap(StatusCodeMapping::getGrpcCode, Function.identity())); + + static int grpcCodeToDatastoreStatusCode(Status.Code code) { + StatusCodeMapping found = GRPC_CODE_INDEX.get(code); + // theoretically it's possible for gRPC to add a new code we haven't mapped here, if this + // happens fall through to our default of 0 + if (found != null) { + return found.getDatastoreCode(); + } else { + return 0; + } + } + + /** + * Simple tuple class to bind together our corresponding http status code and {@link Status.Code} + * while providing easy access to the correct {@link GrpcStatusCode} where necessary. + */ + private static final class StatusCodeMapping { + + private final int datastoreCode; + + private final Status.Code grpcCode; + + private StatusCodeMapping(int datastoreCode, Status.Code grpcCode) { + this.datastoreCode = datastoreCode; + this.grpcCode = grpcCode; + } + + public int getDatastoreCode() { + return datastoreCode; + } + + public Status.Code getGrpcCode() { + return grpcCode; + } + + static StatusCodeMapping of(int datastoreCode, Status.Code grpcCode) { + return new StatusCodeMapping(datastoreCode, grpcCode); + } + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java index 50433a6a9..ca5b240ad 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java @@ -17,6 +17,7 @@ package com.google.cloud.datastore; import com.google.api.core.BetaApi; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.datastore.models.ExplainMetrics; import com.google.datastore.v1.QueryResultBatch; import java.util.Iterator; @@ -31,6 +32,7 @@ * * @param the type of the results value. */ +@InternalExtensionOnly public interface QueryResults extends Iterator { /** Returns the actual class of the result's values. */ @@ -75,7 +77,5 @@ public interface QueryResults extends Iterator { QueryResultBatch.MoreResultsType getMoreResults(); @BetaApi - default Optional getExplainMetrics() { - throw new UnsupportedOperationException("Not implemented."); - } + Optional getExplainMetrics(); } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java index e1ea6e8dd..630ddd225 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/RetryAndTraceDatastoreRpcDecorator.java @@ -113,6 +113,16 @@ public RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryReques return invokeRpc(() -> datastoreRpc.runAggregationQuery(request), spanName); } + @Override + public void close() throws Exception { + datastoreRpc.close(); + } + + @Override + public boolean isClosed() { + return datastoreRpc.isClosed(); + } + public O invokeRpc(Callable block, String startSpan) { com.google.cloud.datastore.telemetry.TraceUtil.Span span = otelTraceUtil.startSpan(startSpan); try (com.google.cloud.datastore.telemetry.TraceUtil.Scope ignored = span.makeCurrent()) { diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/StructuredQuery.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/StructuredQuery.java index 30cd05759..5bde80ed6 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/StructuredQuery.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/StructuredQuery.java @@ -27,6 +27,7 @@ import com.google.api.core.ApiFunction; import com.google.api.core.InternalApi; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.StringEnumType; import com.google.cloud.StringEnumValue; import com.google.cloud.Timestamp; @@ -700,6 +701,7 @@ public String toString() { * * @param the type of result the query returns. */ + @InternalExtensionOnly public interface Builder { /** Sets the namespace for the query. */ diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transaction.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transaction.java index 7b6a67a2d..697e7a6ff 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transaction.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Transaction.java @@ -17,6 +17,7 @@ package com.google.cloud.datastore; import com.google.api.core.BetaApi; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.datastore.models.ExplainOptions; import com.google.protobuf.ByteString; import java.util.Iterator; @@ -63,6 +64,7 @@ * This class too should not be treated as a thread safe class. */ @NotThreadSafe +@InternalExtensionOnly public interface Transaction extends DatastoreBatchWriter, DatastoreReaderWriter { interface Response { @@ -179,9 +181,7 @@ interface Response { QueryResults run(Query query); @BetaApi - default QueryResults run(Query query, ExplainOptions explainOptions) { - throw new UnsupportedOperationException("Not implemented."); - } + QueryResults run(Query query, ExplainOptions explainOptions); /** * Datastore add operation. This method will also allocate id for any entity with an incomplete diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/ValueBuilder.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/ValueBuilder.java index 3c60ef409..315728147 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/ValueBuilder.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/ValueBuilder.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.GcpLaunchStage; /** @@ -25,6 +26,7 @@ * @param

the value type. * @param the value type's associated builder. */ +@InternalExtensionOnly public interface ValueBuilder, B extends ValueBuilder> { ValueType getValueType(); diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/aggregation/AggregationBuilder.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/aggregation/AggregationBuilder.java index ce23edcf0..632f44393 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/aggregation/AggregationBuilder.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/aggregation/AggregationBuilder.java @@ -16,6 +16,8 @@ package com.google.cloud.datastore.aggregation; +import com.google.api.core.InternalExtensionOnly; + /** * An interface to represent the builders which build and customize {@link Aggregation} for {@link * com.google.cloud.datastore.AggregationQuery}. @@ -23,6 +25,7 @@ *

Used by {@link * com.google.cloud.datastore.AggregationQuery.Builder#addAggregation(AggregationBuilder)}. */ +@InternalExtensionOnly public interface AggregationBuilder { A build(); } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/DatastoreRpcFactory.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/DatastoreRpcFactory.java index 0b7f9094b..acb85a61d 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/DatastoreRpcFactory.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/DatastoreRpcFactory.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore.spi; +import com.google.api.core.InternalExtensionOnly; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.spi.ServiceRpcFactory; @@ -23,4 +24,5 @@ * An interface for Datastore RPC factory. Implementation will be loaded via {@link * java.util.ServiceLoader}. */ +@InternalExtensionOnly public interface DatastoreRpcFactory extends ServiceRpcFactory {} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java index 33b8e11ea..518bea983 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/DatastoreRpc.java @@ -16,8 +16,11 @@ package com.google.cloud.datastore.spi.v1; +import com.google.api.core.InternalExtensionOnly; +import com.google.api.gax.rpc.HeaderProvider; import com.google.cloud.ServiceRpc; import com.google.cloud.datastore.DatastoreException; +import com.google.cloud.datastore.v1.DatastoreSettings; import com.google.datastore.v1.AllocateIdsRequest; import com.google.datastore.v1.AllocateIdsResponse; import com.google.datastore.v1.BeginTransactionRequest; @@ -36,7 +39,8 @@ import com.google.datastore.v1.RunQueryResponse; /** Provides access to the remote Datastore service. */ -public interface DatastoreRpc extends ServiceRpc { +@InternalExtensionOnly +public interface DatastoreRpc extends ServiceRpc, AutoCloseable { /** * Sends an allocate IDs request. @@ -93,7 +97,23 @@ BeginTransactionResponse beginTransaction(BeginTransactionRequest request) * * @throws DatastoreException upon failure */ - default RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryRequest request) { - throw new UnsupportedOperationException("Not implemented."); + RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryRequest request); + + @Override + void close() throws Exception; + /** Returns true if this background resource has been shut down. */ + boolean isClosed(); + + // This class is needed solely to get access to protected method setInternalHeaderProvider() + class DatastoreSettingsBuilder extends DatastoreSettings.Builder { + DatastoreSettingsBuilder(DatastoreSettings settings) { + super(settings); + } + + @Override + protected DatastoreSettings.Builder setInternalHeaderProvider( + HeaderProvider internalHeaderProvider) { + return super.setInternalHeaderProvider(internalHeaderProvider); + } } } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java new file mode 100644 index 000000000..e8e113736 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/GrpcDatastoreRpc.java @@ -0,0 +1,191 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.spi.v1; + +import static com.google.cloud.datastore.DatastoreUtils.isEmulator; +import static com.google.cloud.datastore.DatastoreUtils.removeScheme; +import static com.google.cloud.datastore.spi.v1.RpcUtils.retrySettingSetter; +import static java.util.concurrent.TimeUnit.SECONDS; + +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.GaxProperties; +import com.google.api.gax.grpc.GrpcCallContext; +import com.google.api.gax.grpc.GrpcTransportChannel; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.HeaderProvider; +import com.google.api.gax.rpc.NoHeaderProvider; +import com.google.api.gax.rpc.TransportChannel; +import com.google.cloud.ServiceOptions; +import com.google.cloud.datastore.DatastoreException; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.v1.DatastoreSettings; +import com.google.cloud.datastore.v1.stub.DatastoreStubSettings; +import com.google.cloud.datastore.v1.stub.GrpcDatastoreStub; +import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.common.base.Strings; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import io.grpc.CallOptions; +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; +import java.io.IOException; +import java.util.Collections; + +@InternalApi +public class GrpcDatastoreRpc implements DatastoreRpc { + + private final GrpcDatastoreStub datastoreStub; + private final ClientContext clientContext; + private boolean closed; + + public GrpcDatastoreRpc(DatastoreOptions datastoreOptions) throws IOException { + try { + clientContext = + isEmulator(datastoreOptions) + ? getClientContextForEmulator(datastoreOptions) + : getClientContext(datastoreOptions); + + DatastoreStubSettings datastoreStubSettings = + DatastoreStubSettings.newBuilder(clientContext) + .applyToAllUnaryMethods(retrySettingSetter(datastoreOptions)) + .build(); + datastoreStub = GrpcDatastoreStub.create(datastoreStubSettings); + } catch (IOException e) { + throw new IOException(e); + } + } + + @Override + public void close() throws Exception { + if (!closed) { + datastoreStub.close(); + for (BackgroundResource resource : clientContext.getBackgroundResources()) { + resource.close(); + } + closed = true; + } + for (BackgroundResource resource : clientContext.getBackgroundResources()) { + resource.awaitTermination(1, SECONDS); + } + } + + @Override + public AllocateIdsResponse allocateIds(AllocateIdsRequest request) { + return datastoreStub.allocateIdsCallable().call(request); + } + + @Override + public BeginTransactionResponse beginTransaction(BeginTransactionRequest request) + throws DatastoreException { + return datastoreStub.beginTransactionCallable().call(request); + } + + @Override + public CommitResponse commit(CommitRequest request) { + return datastoreStub.commitCallable().call(request); + } + + @Override + public LookupResponse lookup(LookupRequest request) { + return datastoreStub.lookupCallable().call(request); + } + + @Override + public ReserveIdsResponse reserveIds(ReserveIdsRequest request) { + return datastoreStub.reserveIdsCallable().call(request); + } + + @Override + public RollbackResponse rollback(RollbackRequest request) { + return datastoreStub.rollbackCallable().call(request); + } + + @Override + public RunQueryResponse runQuery(RunQueryRequest request) { + return datastoreStub.runQueryCallable().call(request); + } + + @Override + public RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryRequest request) { + return datastoreStub.runAggregationQueryCallable().call(request); + } + + @Override + public boolean isClosed() { + return closed && datastoreStub.isShutdown(); + } + + private ClientContext getClientContextForEmulator(DatastoreOptions datastoreOptions) + throws IOException { + ManagedChannel managedChannel = + ManagedChannelBuilder.forTarget(removeScheme(datastoreOptions.getHost())) + .usePlaintext() + .build(); + TransportChannel transportChannel = GrpcTransportChannel.create(managedChannel); + return ClientContext.newBuilder() + .setCredentials(null) + .setTransportChannel(transportChannel) + .setDefaultCallContext(GrpcCallContext.of(managedChannel, CallOptions.DEFAULT)) + .setBackgroundResources(Collections.singletonList(transportChannel)) + .build(); + } + + private ClientContext getClientContext(DatastoreOptions datastoreOptions) throws IOException { + HeaderProvider internalHeaderProvider = + DatastoreSettings.defaultApiClientHeaderProviderBuilder() + .setClientLibToken( + ServiceOptions.getGoogApiClientLibName(), + GaxProperties.getLibraryVersion(datastoreOptions.getClass())) + .setResourceToken(getResourceToken(datastoreOptions)) + .build(); + + DatastoreSettingsBuilder settingsBuilder = + new DatastoreSettingsBuilder(DatastoreSettings.newBuilder().build()); + settingsBuilder.setCredentialsProvider( + GrpcTransportOptions.setUpCredentialsProvider(datastoreOptions)); + settingsBuilder.setTransportChannelProvider(datastoreOptions.getTransportChannelProvider()); + settingsBuilder.setInternalHeaderProvider(internalHeaderProvider); + settingsBuilder.setHeaderProvider( + datastoreOptions.getMergedHeaderProvider(new NoHeaderProvider())); + return ClientContext.create(settingsBuilder.build()); + } + + private String getResourceToken(DatastoreOptions datastoreOptions) { + StringBuilder builder = new StringBuilder("project_id="); + builder.append(datastoreOptions.getProjectId()); + if (!Strings.isNullOrEmpty(datastoreOptions.getDatabaseId())) { + builder.append("&database_id="); + builder.append(datastoreOptions.getDatabaseId()); + } + return builder.toString(); + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index d927a2d7f..ac39ad5ba 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -19,6 +19,7 @@ import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.HttpTransport; +import com.google.api.core.InternalApi; import com.google.cloud.datastore.DatastoreException; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.http.CensusHttpModule; @@ -44,6 +45,7 @@ import java.net.InetAddress; import java.net.URL; +@InternalApi public class HttpDatastoreRpc implements DatastoreRpc { private final com.google.datastore.v1.client.Datastore client; @@ -58,6 +60,7 @@ public HttpDatastoreRpc(DatastoreOptions options) { .initializer(getHttpRequestInitializer(options, httpTransportOptions)) .transport(transport); String normalizedHost = options.getHost() != null ? options.getHost().toLowerCase() : ""; + if (isLocalHost(normalizedHost)) { clientBuilder = clientBuilder.localHost(removeScheme(normalizedHost)); } else if (!removeScheme(com.google.datastore.v1.client.DatastoreFactory.DEFAULT_HOST) @@ -210,4 +213,14 @@ public RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryReques throw translate(ex); } } + + @Override + public void close() throws Exception { + throw new UnsupportedOperationException("Not implemented."); + } + + @Override + public boolean isClosed() { + throw new UnsupportedOperationException("Not implemented."); + } } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java new file mode 100644 index 000000000..dee8d6920 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/RpcUtils.java @@ -0,0 +1,34 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.spi.v1; + +import com.google.api.core.ApiFunction; +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.cloud.datastore.DatastoreOptions; + +@InternalApi +public class RpcUtils { + @InternalApi + static ApiFunction, Void> retrySettingSetter( + DatastoreOptions datastoreOptions) { + return builder -> { + builder.setRetrySettings(datastoreOptions.getRetrySettings()); + return null; + }; + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java index 2723325ee..4dcf2c953 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import com.google.cloud.NoCredentials; import com.google.cloud.ServiceOptions; import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.testing.BaseEmulatorHelper; import com.google.common.collect.ImmutableList; import java.io.IOException; @@ -57,7 +58,7 @@ public class LocalDatastoreHelper extends BaseEmulatorHelper { private static final String GCLOUD_CMD_TEXT = "gcloud beta emulators datastore start"; private static final String GCLOUD_CMD_PORT_FLAG = "--host-port="; private static final String VERSION_PREFIX = "cloud-datastore-emulator "; - private static final String MIN_VERSION = "2.0.2"; + private static final String MIN_VERSION = "2.0.2"; // latest version compatible with java 8 // Downloadable emulator settings private static final String BIN_NAME = "cloud-datastore-emulator/cloud_datastore_emulator"; @@ -215,6 +216,14 @@ public DatastoreOptions getOptions(String namespace) { return optionsBuilder.setNamespace(namespace).build(); } + /** + * Returns a {@link DatastoreOptions} instance that sets the host to use the Datastore emulator on + * localhost. The transportOptions is set to {@code grpcTransportOptions}. + */ + public DatastoreOptions getGrpcTransportOptions(GrpcTransportOptions grpcTransportOptions) { + return optionsBuilder.setTransportOptions(grpcTransportOptions).build(); + } + public DatastoreOptions.Builder setNamespace(String namespace) { return optionsBuilder.setNamespace(namespace); } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreClient.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreClient.java new file mode 100644 index 000000000..ad988b32d --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreClient.java @@ -0,0 +1,947 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.datastore.v1.stub.DatastoreStub; +import com.google.cloud.datastore.v1.stub.DatastoreStubSettings; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.Key; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.Mutation; +import com.google.datastore.v1.ReadOptions; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import com.google.protobuf.ByteString; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Service Description: Each RPC normalizes the partition IDs of the keys in its input entities, and + * always returns entities with keys with normalized partition IDs. This applies to all keys and + * entities, including those in values, except keys with both an empty path and an empty or unset + * partition ID. Normalization of input keys sets the project ID (if not already set) to the project + * ID from the request. + * + *

This class provides the ability to make remote calls to the backing service through method + * calls that map to API methods. Sample code to get started: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+ *   String projectId = "projectId-894832108";
+ *   ReadOptions readOptions = ReadOptions.newBuilder().build();
+ *   List keys = new ArrayList<>();
+ *   LookupResponse response = datastoreClient.lookup(projectId, readOptions, keys);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the DatastoreClient object to clean up resources such as + * threads. In the example above, try-with-resources is used, which automatically calls close(). + * + *

The surface of this class includes several types of Java methods for each of the API's + * methods: + * + *

    + *
  1. A "flattened" method. With this type of method, the fields of the request type have been + * converted into function parameters. It may be the case that not all fields are available as + * parameters, and not every API method will have a flattened method entry point. + *
  2. A "request object" method. This type of method only takes one parameter, a request object, + * which must be constructed before the call. Not every API method will have a request object + * method. + *
  3. A "callable" method. This type of method takes no parameters and returns an immutable API + * callable object, which can be used to initiate calls to the service. + *
+ * + *

See the individual methods for example code. + * + *

Many parameters require resource names to be formatted in a particular way. To assist with + * these names, this class includes a format method for each type of name, and additionally a parse + * method to extract the individual identifiers contained within names that are returned. + * + *

This class can be customized by passing in a custom instance of DatastoreSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreSettings datastoreSettings =
+ *     DatastoreSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * DatastoreClient datastoreClient = DatastoreClient.create(datastoreSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreSettings datastoreSettings =
+ *     DatastoreSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * DatastoreClient datastoreClient = DatastoreClient.create(datastoreSettings);
+ * }
+ * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreSettings datastoreSettings = DatastoreSettings.newHttpJsonBuilder().build();
+ * DatastoreClient datastoreClient = DatastoreClient.create(datastoreSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@Generated("by gapic-generator-java") +public class DatastoreClient implements BackgroundResource { + private final DatastoreSettings settings; + private final DatastoreStub stub; + + /** Constructs an instance of DatastoreClient with default settings. */ + public static final DatastoreClient create() throws IOException { + return create(DatastoreSettings.newBuilder().build()); + } + + /** + * Constructs an instance of DatastoreClient, using the given settings. The channels are created + * based on the settings passed in, or defaults for any settings that are not set. + */ + public static final DatastoreClient create(DatastoreSettings settings) throws IOException { + return new DatastoreClient(settings); + } + + /** + * Constructs an instance of DatastoreClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(DatastoreSettings). + */ + public static final DatastoreClient create(DatastoreStub stub) { + return new DatastoreClient(stub); + } + + /** + * Constructs an instance of DatastoreClient, using the given settings. This is protected so that + * it is easy to make a subclass, but otherwise, the static factory methods should be preferred. + */ + protected DatastoreClient(DatastoreSettings settings) throws IOException { + this.settings = settings; + this.stub = ((DatastoreStubSettings) settings.getStubSettings()).createStub(); + } + + protected DatastoreClient(DatastoreStub stub) { + this.settings = null; + this.stub = stub; + } + + public final DatastoreSettings getSettings() { + return settings; + } + + public DatastoreStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Looks up entities by key. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   ReadOptions readOptions = ReadOptions.newBuilder().build();
+   *   List keys = new ArrayList<>();
+   *   LookupResponse response = datastoreClient.lookup(projectId, readOptions, keys);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @param readOptions The options for this lookup request. + * @param keys Required. Keys of entities to look up. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final LookupResponse lookup(String projectId, ReadOptions readOptions, List keys) { + LookupRequest request = + LookupRequest.newBuilder() + .setProjectId(projectId) + .setReadOptions(readOptions) + .addAllKeys(keys) + .build(); + return lookup(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Looks up entities by key. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   LookupRequest request =
+   *       LookupRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setReadOptions(ReadOptions.newBuilder().build())
+   *           .addAllKeys(new ArrayList())
+   *           .build();
+   *   LookupResponse response = datastoreClient.lookup(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final LookupResponse lookup(LookupRequest request) { + return lookupCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Looks up entities by key. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   LookupRequest request =
+   *       LookupRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setReadOptions(ReadOptions.newBuilder().build())
+   *           .addAllKeys(new ArrayList())
+   *           .build();
+   *   ApiFuture future = datastoreClient.lookupCallable().futureCall(request);
+   *   // Do something.
+   *   LookupResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable lookupCallable() { + return stub.lookupCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Queries for entities. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   RunQueryRequest request =
+   *       RunQueryRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setPartitionId(PartitionId.newBuilder().build())
+   *           .setReadOptions(ReadOptions.newBuilder().build())
+   *           .build();
+   *   RunQueryResponse response = datastoreClient.runQuery(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final RunQueryResponse runQuery(RunQueryRequest request) { + return runQueryCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Queries for entities. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   RunQueryRequest request =
+   *       RunQueryRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setPartitionId(PartitionId.newBuilder().build())
+   *           .setReadOptions(ReadOptions.newBuilder().build())
+   *           .build();
+   *   ApiFuture future = datastoreClient.runQueryCallable().futureCall(request);
+   *   // Do something.
+   *   RunQueryResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable runQueryCallable() { + return stub.runQueryCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Runs an aggregation query. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   RunAggregationQueryRequest request =
+   *       RunAggregationQueryRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setPartitionId(PartitionId.newBuilder().build())
+   *           .setReadOptions(ReadOptions.newBuilder().build())
+   *           .build();
+   *   RunAggregationQueryResponse response = datastoreClient.runAggregationQuery(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final RunAggregationQueryResponse runAggregationQuery(RunAggregationQueryRequest request) { + return runAggregationQueryCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Runs an aggregation query. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   RunAggregationQueryRequest request =
+   *       RunAggregationQueryRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setPartitionId(PartitionId.newBuilder().build())
+   *           .setReadOptions(ReadOptions.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       datastoreClient.runAggregationQueryCallable().futureCall(request);
+   *   // Do something.
+   *   RunAggregationQueryResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + runAggregationQueryCallable() { + return stub.runAggregationQueryCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Begins a new transaction. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   BeginTransactionResponse response = datastoreClient.beginTransaction(projectId);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final BeginTransactionResponse beginTransaction(String projectId) { + BeginTransactionRequest request = + BeginTransactionRequest.newBuilder().setProjectId(projectId).build(); + return beginTransaction(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Begins a new transaction. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   BeginTransactionRequest request =
+   *       BeginTransactionRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setTransactionOptions(TransactionOptions.newBuilder().build())
+   *           .build();
+   *   BeginTransactionResponse response = datastoreClient.beginTransaction(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final BeginTransactionResponse beginTransaction(BeginTransactionRequest request) { + return beginTransactionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Begins a new transaction. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   BeginTransactionRequest request =
+   *       BeginTransactionRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setTransactionOptions(TransactionOptions.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       datastoreClient.beginTransactionCallable().futureCall(request);
+   *   // Do something.
+   *   BeginTransactionResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + beginTransactionCallable() { + return stub.beginTransactionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Commits a transaction, optionally creating, deleting or modifying some entities. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0);
+   *   List mutations = new ArrayList<>();
+   *   CommitResponse response = datastoreClient.commit(projectId, mode, mutations);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @param mode The type of commit to perform. Defaults to `TRANSACTIONAL`. + * @param mutations The mutations to perform. + *

When mode is `TRANSACTIONAL`, mutations affecting a single entity are applied in order. + * The following sequences of mutations affecting a single entity are not permitted in a + * single `Commit` request: + *

- `insert` followed by `insert` - `update` followed by `insert` - `upsert` followed by + * `insert` - `delete` followed by `update` + *

When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single entity. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CommitResponse commit( + String projectId, CommitRequest.Mode mode, List mutations) { + CommitRequest request = + CommitRequest.newBuilder() + .setProjectId(projectId) + .setMode(mode) + .addAllMutations(mutations) + .build(); + return commit(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Commits a transaction, optionally creating, deleting or modifying some entities. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0);
+   *   ByteString transaction = ByteString.EMPTY;
+   *   List mutations = new ArrayList<>();
+   *   CommitResponse response = datastoreClient.commit(projectId, mode, transaction, mutations);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @param mode The type of commit to perform. Defaults to `TRANSACTIONAL`. + * @param transaction The identifier of the transaction associated with the commit. A transaction + * identifier is returned by a call to + * [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + * @param mutations The mutations to perform. + *

When mode is `TRANSACTIONAL`, mutations affecting a single entity are applied in order. + * The following sequences of mutations affecting a single entity are not permitted in a + * single `Commit` request: + *

- `insert` followed by `insert` - `update` followed by `insert` - `upsert` followed by + * `insert` - `delete` followed by `update` + *

When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single entity. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CommitResponse commit( + String projectId, CommitRequest.Mode mode, ByteString transaction, List mutations) { + CommitRequest request = + CommitRequest.newBuilder() + .setProjectId(projectId) + .setMode(mode) + .setTransaction(transaction) + .addAllMutations(mutations) + .build(); + return commit(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Commits a transaction, optionally creating, deleting or modifying some entities. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   CommitRequest request =
+   *       CommitRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .addAllMutations(new ArrayList())
+   *           .build();
+   *   CommitResponse response = datastoreClient.commit(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CommitResponse commit(CommitRequest request) { + return commitCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Commits a transaction, optionally creating, deleting or modifying some entities. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   CommitRequest request =
+   *       CommitRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .addAllMutations(new ArrayList())
+   *           .build();
+   *   ApiFuture future = datastoreClient.commitCallable().futureCall(request);
+   *   // Do something.
+   *   CommitResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable commitCallable() { + return stub.commitCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Rolls back a transaction. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   ByteString transaction = ByteString.EMPTY;
+   *   RollbackResponse response = datastoreClient.rollback(projectId, transaction);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @param transaction Required. The transaction identifier, returned by a call to + * [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final RollbackResponse rollback(String projectId, ByteString transaction) { + RollbackRequest request = + RollbackRequest.newBuilder().setProjectId(projectId).setTransaction(transaction).build(); + return rollback(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Rolls back a transaction. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   RollbackRequest request =
+   *       RollbackRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setTransaction(ByteString.EMPTY)
+   *           .build();
+   *   RollbackResponse response = datastoreClient.rollback(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final RollbackResponse rollback(RollbackRequest request) { + return rollbackCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Rolls back a transaction. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   RollbackRequest request =
+   *       RollbackRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .setTransaction(ByteString.EMPTY)
+   *           .build();
+   *   ApiFuture future = datastoreClient.rollbackCallable().futureCall(request);
+   *   // Do something.
+   *   RollbackResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable rollbackCallable() { + return stub.rollbackCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Allocates IDs for the given keys, which is useful for referencing an entity before it is + * inserted. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   List keys = new ArrayList<>();
+   *   AllocateIdsResponse response = datastoreClient.allocateIds(projectId, keys);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @param keys Required. A list of keys with incomplete key paths for which to allocate IDs. No + * key may be reserved/read-only. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AllocateIdsResponse allocateIds(String projectId, List keys) { + AllocateIdsRequest request = + AllocateIdsRequest.newBuilder().setProjectId(projectId).addAllKeys(keys).build(); + return allocateIds(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Allocates IDs for the given keys, which is useful for referencing an entity before it is + * inserted. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   AllocateIdsRequest request =
+   *       AllocateIdsRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .addAllKeys(new ArrayList())
+   *           .build();
+   *   AllocateIdsResponse response = datastoreClient.allocateIds(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AllocateIdsResponse allocateIds(AllocateIdsRequest request) { + return allocateIdsCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Allocates IDs for the given keys, which is useful for referencing an entity before it is + * inserted. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   AllocateIdsRequest request =
+   *       AllocateIdsRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .addAllKeys(new ArrayList())
+   *           .build();
+   *   ApiFuture future =
+   *       datastoreClient.allocateIdsCallable().futureCall(request);
+   *   // Do something.
+   *   AllocateIdsResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable allocateIdsCallable() { + return stub.allocateIdsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Prevents the supplied keys' IDs from being auto-allocated by Cloud Datastore. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   String projectId = "projectId-894832108";
+   *   List keys = new ArrayList<>();
+   *   ReserveIdsResponse response = datastoreClient.reserveIds(projectId, keys);
+   * }
+   * }
+ * + * @param projectId Required. The ID of the project against which to make the request. + * @param keys Required. A list of keys with complete key paths whose numeric IDs should not be + * auto-allocated. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ReserveIdsResponse reserveIds(String projectId, List keys) { + ReserveIdsRequest request = + ReserveIdsRequest.newBuilder().setProjectId(projectId).addAllKeys(keys).build(); + return reserveIds(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Prevents the supplied keys' IDs from being auto-allocated by Cloud Datastore. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   ReserveIdsRequest request =
+   *       ReserveIdsRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .addAllKeys(new ArrayList())
+   *           .build();
+   *   ReserveIdsResponse response = datastoreClient.reserveIds(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ReserveIdsResponse reserveIds(ReserveIdsRequest request) { + return reserveIdsCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Prevents the supplied keys' IDs from being auto-allocated by Cloud Datastore. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+   *   ReserveIdsRequest request =
+   *       ReserveIdsRequest.newBuilder()
+   *           .setProjectId("projectId-894832108")
+   *           .setDatabaseId("databaseId1688905718")
+   *           .addAllKeys(new ArrayList())
+   *           .build();
+   *   ApiFuture future =
+   *       datastoreClient.reserveIdsCallable().futureCall(request);
+   *   // Do something.
+   *   ReserveIdsResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable reserveIdsCallable() { + return stub.reserveIdsCallable(); + } + + @Override + public final void close() { + stub.close(); + } + + @Override + public void shutdown() { + stub.shutdown(); + } + + @Override + public boolean isShutdown() { + return stub.isShutdown(); + } + + @Override + public boolean isTerminated() { + return stub.isTerminated(); + } + + @Override + public void shutdownNow() { + stub.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return stub.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreSettings.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreSettings.java new file mode 100644 index 000000000..22feacdce --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/DatastoreSettings.java @@ -0,0 +1,294 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1; + +import com.google.api.core.ApiFunction; +import com.google.api.core.BetaApi; +import com.google.api.gax.core.GoogleCredentialsProvider; +import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.cloud.datastore.v1.stub.DatastoreStubSettings; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import java.io.IOException; +import java.util.List; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Settings class to configure an instance of {@link DatastoreClient}. + * + *

The default instance has everything set to sensible defaults: + * + *

    + *
  • The default service address (datastore.googleapis.com) and default port (443) are used. + *
  • Credentials are acquired automatically through Application Default Credentials. + *
  • Retries are configured for idempotent methods but not for non-idempotent methods. + *
+ * + *

The builder of this class is recursive, so contained classes are themselves builders. When + * build() is called, the tree of builders is called to create the complete settings object. + * + *

For example, to set the total timeout of lookup to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreSettings.Builder datastoreSettingsBuilder = DatastoreSettings.newBuilder();
+ * datastoreSettingsBuilder
+ *     .lookupSettings()
+ *     .setRetrySettings(
+ *         datastoreSettingsBuilder
+ *             .lookupSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * DatastoreSettings datastoreSettings = datastoreSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class DatastoreSettings extends ClientSettings { + + /** Returns the object with the settings used for calls to lookup. */ + public UnaryCallSettings lookupSettings() { + return ((DatastoreStubSettings) getStubSettings()).lookupSettings(); + } + + /** Returns the object with the settings used for calls to runQuery. */ + public UnaryCallSettings runQuerySettings() { + return ((DatastoreStubSettings) getStubSettings()).runQuerySettings(); + } + + /** Returns the object with the settings used for calls to runAggregationQuery. */ + public UnaryCallSettings + runAggregationQuerySettings() { + return ((DatastoreStubSettings) getStubSettings()).runAggregationQuerySettings(); + } + + /** Returns the object with the settings used for calls to beginTransaction. */ + public UnaryCallSettings + beginTransactionSettings() { + return ((DatastoreStubSettings) getStubSettings()).beginTransactionSettings(); + } + + /** Returns the object with the settings used for calls to commit. */ + public UnaryCallSettings commitSettings() { + return ((DatastoreStubSettings) getStubSettings()).commitSettings(); + } + + /** Returns the object with the settings used for calls to rollback. */ + public UnaryCallSettings rollbackSettings() { + return ((DatastoreStubSettings) getStubSettings()).rollbackSettings(); + } + + /** Returns the object with the settings used for calls to allocateIds. */ + public UnaryCallSettings allocateIdsSettings() { + return ((DatastoreStubSettings) getStubSettings()).allocateIdsSettings(); + } + + /** Returns the object with the settings used for calls to reserveIds. */ + public UnaryCallSettings reserveIdsSettings() { + return ((DatastoreStubSettings) getStubSettings()).reserveIdsSettings(); + } + + public static final DatastoreSettings create(DatastoreStubSettings stub) throws IOException { + return new DatastoreSettings.Builder(stub.toBuilder()).build(); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return DatastoreStubSettings.defaultExecutorProviderBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return DatastoreStubSettings.getDefaultEndpoint(); + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return DatastoreStubSettings.getDefaultServiceScopes(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return DatastoreStubSettings.defaultCredentialsProviderBuilder(); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return DatastoreStubSettings.defaultGrpcTransportProviderBuilder(); + } + + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return DatastoreStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return DatastoreStubSettings.defaultTransportChannelProvider(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return DatastoreStubSettings.defaultApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ + public static Builder newBuilder() { + return Builder.createDefault(); + } + + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder(ClientContext clientContext) { + return new Builder(clientContext); + } + + /** Returns a builder containing all the values of this settings class. */ + public Builder toBuilder() { + return new Builder(this); + } + + protected DatastoreSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + /** Builder for DatastoreSettings. */ + public static class Builder extends ClientSettings.Builder { + + protected Builder() throws IOException { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(DatastoreStubSettings.newBuilder(clientContext)); + } + + protected Builder(DatastoreSettings settings) { + super(settings.getStubSettings().toBuilder()); + } + + protected Builder(DatastoreStubSettings.Builder stubSettings) { + super(stubSettings); + } + + private static Builder createDefault() { + return new Builder(DatastoreStubSettings.newBuilder()); + } + + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(DatastoreStubSettings.newHttpJsonBuilder()); + } + + public DatastoreStubSettings.Builder getStubSettingsBuilder() { + return ((DatastoreStubSettings.Builder) getStubSettings()); + } + + /** + * Applies the given settings updater function to all of the unary API methods in this service. + * + *

Note: This method does not support applying settings to streaming methods. + */ + public Builder applyToAllUnaryMethods( + ApiFunction, Void> settingsUpdater) { + super.applyToAllUnaryMethods( + getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); + return this; + } + + /** Returns the builder for the settings used for calls to lookup. */ + public UnaryCallSettings.Builder lookupSettings() { + return getStubSettingsBuilder().lookupSettings(); + } + + /** Returns the builder for the settings used for calls to runQuery. */ + public UnaryCallSettings.Builder runQuerySettings() { + return getStubSettingsBuilder().runQuerySettings(); + } + + /** Returns the builder for the settings used for calls to runAggregationQuery. */ + public UnaryCallSettings.Builder + runAggregationQuerySettings() { + return getStubSettingsBuilder().runAggregationQuerySettings(); + } + + /** Returns the builder for the settings used for calls to beginTransaction. */ + public UnaryCallSettings.Builder + beginTransactionSettings() { + return getStubSettingsBuilder().beginTransactionSettings(); + } + + /** Returns the builder for the settings used for calls to commit. */ + public UnaryCallSettings.Builder commitSettings() { + return getStubSettingsBuilder().commitSettings(); + } + + /** Returns the builder for the settings used for calls to rollback. */ + public UnaryCallSettings.Builder rollbackSettings() { + return getStubSettingsBuilder().rollbackSettings(); + } + + /** Returns the builder for the settings used for calls to allocateIds. */ + public UnaryCallSettings.Builder + allocateIdsSettings() { + return getStubSettingsBuilder().allocateIdsSettings(); + } + + /** Returns the builder for the settings used for calls to reserveIds. */ + public UnaryCallSettings.Builder reserveIdsSettings() { + return getStubSettingsBuilder().reserveIdsSettings(); + } + + @Override + public DatastoreSettings build() throws IOException { + return new DatastoreSettings(this); + } + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/gapic_metadata.json b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/gapic_metadata.json new file mode 100644 index 000000000..02196d36e --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/gapic_metadata.json @@ -0,0 +1,42 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods", + "language": "java", + "protoPackage": "google.datastore.v1", + "libraryPackage": "com.google.cloud.datastore.v1", + "services": { + "Datastore": { + "clients": { + "grpc": { + "libraryClient": "DatastoreClient", + "rpcs": { + "AllocateIds": { + "methods": ["allocateIds", "allocateIds", "allocateIdsCallable"] + }, + "BeginTransaction": { + "methods": ["beginTransaction", "beginTransaction", "beginTransactionCallable"] + }, + "Commit": { + "methods": ["commit", "commit", "commit", "commitCallable"] + }, + "Lookup": { + "methods": ["lookup", "lookup", "lookupCallable"] + }, + "ReserveIds": { + "methods": ["reserveIds", "reserveIds", "reserveIdsCallable"] + }, + "Rollback": { + "methods": ["rollback", "rollback", "rollbackCallable"] + }, + "RunAggregationQuery": { + "methods": ["runAggregationQuery", "runAggregationQueryCallable"] + }, + "RunQuery": { + "methods": ["runQuery", "runQueryCallable"] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/package-info.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/package-info.java new file mode 100644 index 000000000..2227971ca --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/package-info.java @@ -0,0 +1,49 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A client to Cloud Datastore API + * + *

The interfaces provided are listed below, along with usage samples. + * + *

======================= DatastoreClient ======================= + * + *

Service Description: Each RPC normalizes the partition IDs of the keys in its input entities, + * and always returns entities with keys with normalized partition IDs. This applies to all keys and + * entities, including those in values, except keys with both an empty path and an empty or unset + * partition ID. Normalization of input keys sets the project ID (if not already set) to the project + * ID from the request. + * + *

Sample for DatastoreClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (DatastoreClient datastoreClient = DatastoreClient.create()) {
+ *   String projectId = "projectId-894832108";
+ *   ReadOptions readOptions = ReadOptions.newBuilder().build();
+ *   List keys = new ArrayList<>();
+ *   LookupResponse response = datastoreClient.lookup(projectId, readOptions, keys);
+ * }
+ * }
+ */ +@Generated("by gapic-generator-java") +package com.google.cloud.datastore.v1; + +import javax.annotation.Generated; diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStub.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStub.java new file mode 100644 index 000000000..3b2b170bd --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStub.java @@ -0,0 +1,84 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1.stub; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Base stub class for the Datastore service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public abstract class DatastoreStub implements BackgroundResource { + + public UnaryCallable lookupCallable() { + throw new UnsupportedOperationException("Not implemented: lookupCallable()"); + } + + public UnaryCallable runQueryCallable() { + throw new UnsupportedOperationException("Not implemented: runQueryCallable()"); + } + + public UnaryCallable + runAggregationQueryCallable() { + throw new UnsupportedOperationException("Not implemented: runAggregationQueryCallable()"); + } + + public UnaryCallable + beginTransactionCallable() { + throw new UnsupportedOperationException("Not implemented: beginTransactionCallable()"); + } + + public UnaryCallable commitCallable() { + throw new UnsupportedOperationException("Not implemented: commitCallable()"); + } + + public UnaryCallable rollbackCallable() { + throw new UnsupportedOperationException("Not implemented: rollbackCallable()"); + } + + public UnaryCallable allocateIdsCallable() { + throw new UnsupportedOperationException("Not implemented: allocateIdsCallable()"); + } + + public UnaryCallable reserveIdsCallable() { + throw new UnsupportedOperationException("Not implemented: reserveIdsCallable()"); + } + + @Override + public abstract void close(); +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStubSettings.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStubSettings.java new file mode 100644 index 000000000..bfc622726 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/DatastoreStubSettings.java @@ -0,0 +1,518 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1.stub; + +import com.google.api.core.ApiFunction; +import com.google.api.core.BetaApi; +import com.google.api.gax.core.GaxProperties; +import com.google.api.gax.core.GoogleCredentialsProvider; +import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.grpc.GaxGrpcProperties; +import com.google.api.gax.grpc.GrpcTransportChannel; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; +import com.google.api.gax.retrying.RetrySettings; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import java.io.IOException; +import java.util.List; +import javax.annotation.Generated; +import org.threeten.bp.Duration; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Settings class to configure an instance of {@link DatastoreStub}. + * + *

The default instance has everything set to sensible defaults: + * + *

    + *
  • The default service address (datastore.googleapis.com) and default port (443) are used. + *
  • Credentials are acquired automatically through Application Default Credentials. + *
  • Retries are configured for idempotent methods but not for non-idempotent methods. + *
+ * + *

The builder of this class is recursive, so contained classes are themselves builders. When + * build() is called, the tree of builders is called to create the complete settings object. + * + *

For example, to set the total timeout of lookup to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * DatastoreStubSettings.Builder datastoreSettingsBuilder = DatastoreStubSettings.newBuilder();
+ * datastoreSettingsBuilder
+ *     .lookupSettings()
+ *     .setRetrySettings(
+ *         datastoreSettingsBuilder
+ *             .lookupSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * DatastoreStubSettings datastoreSettings = datastoreSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class DatastoreStubSettings extends StubSettings { + /** The default scopes of the service. */ + private static final ImmutableList DEFAULT_SERVICE_SCOPES = + ImmutableList.builder() + .add("https://www.googleapis.com/auth/cloud-platform") + .add("https://www.googleapis.com/auth/datastore") + .build(); + + private final UnaryCallSettings lookupSettings; + private final UnaryCallSettings runQuerySettings; + private final UnaryCallSettings + runAggregationQuerySettings; + private final UnaryCallSettings + beginTransactionSettings; + private final UnaryCallSettings commitSettings; + private final UnaryCallSettings rollbackSettings; + private final UnaryCallSettings allocateIdsSettings; + private final UnaryCallSettings reserveIdsSettings; + + /** Returns the object with the settings used for calls to lookup. */ + public UnaryCallSettings lookupSettings() { + return lookupSettings; + } + + /** Returns the object with the settings used for calls to runQuery. */ + public UnaryCallSettings runQuerySettings() { + return runQuerySettings; + } + + /** Returns the object with the settings used for calls to runAggregationQuery. */ + public UnaryCallSettings + runAggregationQuerySettings() { + return runAggregationQuerySettings; + } + + /** Returns the object with the settings used for calls to beginTransaction. */ + public UnaryCallSettings + beginTransactionSettings() { + return beginTransactionSettings; + } + + /** Returns the object with the settings used for calls to commit. */ + public UnaryCallSettings commitSettings() { + return commitSettings; + } + + /** Returns the object with the settings used for calls to rollback. */ + public UnaryCallSettings rollbackSettings() { + return rollbackSettings; + } + + /** Returns the object with the settings used for calls to allocateIds. */ + public UnaryCallSettings allocateIdsSettings() { + return allocateIdsSettings; + } + + /** Returns the object with the settings used for calls to reserveIds. */ + public UnaryCallSettings reserveIdsSettings() { + return reserveIdsSettings; + } + + public DatastoreStub createStub() throws IOException { + if (getTransportChannelProvider() + .getTransportName() + .equals(GrpcTransportChannel.getGrpcTransportName())) { + return GrpcDatastoreStub.create(this); + } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonDatastoreStub.create(this); + } + throw new UnsupportedOperationException( + String.format( + "Transport not supported: %s", getTransportChannelProvider().getTransportName())); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return InstantiatingExecutorProvider.newBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return "datastore.googleapis.com:443"; + } + + /** Returns the default mTLS service endpoint. */ + public static String getDefaultMtlsEndpoint() { + return "datastore.mtls.googleapis.com:443"; + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return DEFAULT_SERVICE_SCOPES; + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return GoogleCredentialsProvider.newBuilder() + .setScopesToApply(DEFAULT_SERVICE_SCOPES) + .setUseJwtAccessWithScope(true); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return InstantiatingGrpcChannelProvider.newBuilder() + .setMaxInboundMessageSize(Integer.MAX_VALUE); + } + + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return defaultGrpcTransportProviderBuilder().build(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(DatastoreStubSettings.class)) + .setTransportToken( + GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(DatastoreStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return DatastoreStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ + public static Builder newBuilder() { + return Builder.createDefault(); + } + + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder(ClientContext clientContext) { + return new Builder(clientContext); + } + + /** Returns a builder containing all the values of this settings class. */ + public Builder toBuilder() { + return new Builder(this); + } + + protected DatastoreStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + + lookupSettings = settingsBuilder.lookupSettings().build(); + runQuerySettings = settingsBuilder.runQuerySettings().build(); + runAggregationQuerySettings = settingsBuilder.runAggregationQuerySettings().build(); + beginTransactionSettings = settingsBuilder.beginTransactionSettings().build(); + commitSettings = settingsBuilder.commitSettings().build(); + rollbackSettings = settingsBuilder.rollbackSettings().build(); + allocateIdsSettings = settingsBuilder.allocateIdsSettings().build(); + reserveIdsSettings = settingsBuilder.reserveIdsSettings().build(); + } + + /** Builder for DatastoreStubSettings. */ + public static class Builder extends StubSettings.Builder { + private final ImmutableList> unaryMethodSettingsBuilders; + private final UnaryCallSettings.Builder lookupSettings; + private final UnaryCallSettings.Builder runQuerySettings; + private final UnaryCallSettings.Builder + runAggregationQuerySettings; + private final UnaryCallSettings.Builder + beginTransactionSettings; + private final UnaryCallSettings.Builder commitSettings; + private final UnaryCallSettings.Builder rollbackSettings; + private final UnaryCallSettings.Builder + allocateIdsSettings; + private final UnaryCallSettings.Builder + reserveIdsSettings; + private static final ImmutableMap> + RETRYABLE_CODE_DEFINITIONS; + + static { + ImmutableMap.Builder> definitions = + ImmutableMap.builder(); + definitions.put( + "retry_policy_0_codes", + ImmutableSet.copyOf( + Lists.newArrayList( + StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED))); + definitions.put( + "no_retry_1_codes", ImmutableSet.copyOf(Lists.newArrayList())); + RETRYABLE_CODE_DEFINITIONS = definitions.build(); + } + + private static final ImmutableMap RETRY_PARAM_DEFINITIONS; + + static { + ImmutableMap.Builder definitions = ImmutableMap.builder(); + RetrySettings settings = null; + settings = + RetrySettings.newBuilder() + .setInitialRetryDelay(Duration.ofMillis(100L)) + .setRetryDelayMultiplier(1.3) + .setMaxRetryDelay(Duration.ofMillis(60000L)) + .setInitialRpcTimeout(Duration.ofMillis(60000L)) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeout(Duration.ofMillis(60000L)) + .setTotalTimeout(Duration.ofMillis(60000L)) + .build(); + definitions.put("retry_policy_0_params", settings); + settings = + RetrySettings.newBuilder() + .setInitialRpcTimeout(Duration.ofMillis(60000L)) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeout(Duration.ofMillis(60000L)) + .setTotalTimeout(Duration.ofMillis(60000L)) + .build(); + definitions.put("no_retry_1_params", settings); + RETRY_PARAM_DEFINITIONS = definitions.build(); + } + + protected Builder() { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + + lookupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + runQuerySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + runAggregationQuerySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + beginTransactionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + commitSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + rollbackSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + allocateIdsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + reserveIdsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of( + lookupSettings, + runQuerySettings, + runAggregationQuerySettings, + beginTransactionSettings, + commitSettings, + rollbackSettings, + allocateIdsSettings, + reserveIdsSettings); + initDefaults(this); + } + + protected Builder(DatastoreStubSettings settings) { + super(settings); + + lookupSettings = settings.lookupSettings.toBuilder(); + runQuerySettings = settings.runQuerySettings.toBuilder(); + runAggregationQuerySettings = settings.runAggregationQuerySettings.toBuilder(); + beginTransactionSettings = settings.beginTransactionSettings.toBuilder(); + commitSettings = settings.commitSettings.toBuilder(); + rollbackSettings = settings.rollbackSettings.toBuilder(); + allocateIdsSettings = settings.allocateIdsSettings.toBuilder(); + reserveIdsSettings = settings.reserveIdsSettings.toBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of( + lookupSettings, + runQuerySettings, + runAggregationQuerySettings, + beginTransactionSettings, + commitSettings, + rollbackSettings, + allocateIdsSettings, + reserveIdsSettings); + } + + private static Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder initDefaults(Builder builder) { + builder + .lookupSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + + builder + .runQuerySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + + builder + .runAggregationQuerySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + + builder + .beginTransactionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); + + builder + .commitSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); + + builder + .rollbackSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); + + builder + .allocateIdsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params")); + + builder + .reserveIdsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + + return builder; + } + + /** + * Applies the given settings updater function to all of the unary API methods in this service. + * + *

Note: This method does not support applying settings to streaming methods. + */ + public Builder applyToAllUnaryMethods( + ApiFunction, Void> settingsUpdater) { + super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); + return this; + } + + public ImmutableList> unaryMethodSettingsBuilders() { + return unaryMethodSettingsBuilders; + } + + /** Returns the builder for the settings used for calls to lookup. */ + public UnaryCallSettings.Builder lookupSettings() { + return lookupSettings; + } + + /** Returns the builder for the settings used for calls to runQuery. */ + public UnaryCallSettings.Builder runQuerySettings() { + return runQuerySettings; + } + + /** Returns the builder for the settings used for calls to runAggregationQuery. */ + public UnaryCallSettings.Builder + runAggregationQuerySettings() { + return runAggregationQuerySettings; + } + + /** Returns the builder for the settings used for calls to beginTransaction. */ + public UnaryCallSettings.Builder + beginTransactionSettings() { + return beginTransactionSettings; + } + + /** Returns the builder for the settings used for calls to commit. */ + public UnaryCallSettings.Builder commitSettings() { + return commitSettings; + } + + /** Returns the builder for the settings used for calls to rollback. */ + public UnaryCallSettings.Builder rollbackSettings() { + return rollbackSettings; + } + + /** Returns the builder for the settings used for calls to allocateIds. */ + public UnaryCallSettings.Builder + allocateIdsSettings() { + return allocateIdsSettings; + } + + /** Returns the builder for the settings used for calls to reserveIds. */ + public UnaryCallSettings.Builder reserveIdsSettings() { + return reserveIdsSettings; + } + + @Override + public DatastoreStubSettings build() throws IOException { + return new DatastoreStubSettings(this); + } + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreCallableFactory.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreCallableFactory.java new file mode 100644 index 000000000..4e640ead2 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreCallableFactory.java @@ -0,0 +1,113 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1.stub; + +import com.google.api.gax.grpc.GrpcCallSettings; +import com.google.api.gax.grpc.GrpcCallableFactory; +import com.google.api.gax.grpc.GrpcStubCallableFactory; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.StreamingCallSettings; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import com.google.longrunning.stub.OperationsStub; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * gRPC callable factory implementation for the Datastore service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +public class GrpcDatastoreCallableFactory implements GrpcStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + GrpcCallSettings grpcCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createUnaryCallable(grpcCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + GrpcCallSettings grpcCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createPagedCallable(grpcCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + GrpcCallSettings grpcCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createBatchingCallable( + grpcCallSettings, callSettings, clientContext); + } + + @Override + public + OperationCallable createOperationCallable( + GrpcCallSettings grpcCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + return GrpcCallableFactory.createOperationCallable( + grpcCallSettings, callSettings, clientContext, operationsStub); + } + + @Override + public + BidiStreamingCallable createBidiStreamingCallable( + GrpcCallSettings grpcCallSettings, + StreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createBidiStreamingCallable( + grpcCallSettings, callSettings, clientContext); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + GrpcCallSettings grpcCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createServerStreamingCallable( + grpcCallSettings, callSettings, clientContext); + } + + @Override + public + ClientStreamingCallable createClientStreamingCallable( + GrpcCallSettings grpcCallSettings, + StreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createClientStreamingCallable( + grpcCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreStub.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreStub.java new file mode 100644 index 000000000..f68e8996b --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/GrpcDatastoreStub.java @@ -0,0 +1,429 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1.stub; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.grpc.GrpcCallSettings; +import com.google.api.gax.grpc.GrpcStubCallableFactory; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.RequestParamsBuilder; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.api.pathtemplate.PathTemplate; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import com.google.longrunning.stub.GrpcOperationsStub; +import io.grpc.MethodDescriptor; +import io.grpc.protobuf.ProtoUtils; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * gRPC stub implementation for the Datastore service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public class GrpcDatastoreStub extends DatastoreStub { + private static final MethodDescriptor lookupMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/Lookup") + .setRequestMarshaller(ProtoUtils.marshaller(LookupRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(LookupResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + runQueryMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/RunQuery") + .setRequestMarshaller(ProtoUtils.marshaller(RunQueryRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(RunQueryResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + runAggregationQueryMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/RunAggregationQuery") + .setRequestMarshaller( + ProtoUtils.marshaller(RunAggregationQueryRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(RunAggregationQueryResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + beginTransactionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/BeginTransaction") + .setRequestMarshaller( + ProtoUtils.marshaller(BeginTransactionRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(BeginTransactionResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor commitMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/Commit") + .setRequestMarshaller(ProtoUtils.marshaller(CommitRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CommitResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + rollbackMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/Rollback") + .setRequestMarshaller(ProtoUtils.marshaller(RollbackRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(RollbackResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + allocateIdsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/AllocateIds") + .setRequestMarshaller(ProtoUtils.marshaller(AllocateIdsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(AllocateIdsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + reserveIdsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.datastore.v1.Datastore/ReserveIds") + .setRequestMarshaller(ProtoUtils.marshaller(ReserveIdsRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(ReserveIdsResponse.getDefaultInstance())) + .build(); + + private final UnaryCallable lookupCallable; + private final UnaryCallable runQueryCallable; + private final UnaryCallable + runAggregationQueryCallable; + private final UnaryCallable + beginTransactionCallable; + private final UnaryCallable commitCallable; + private final UnaryCallable rollbackCallable; + private final UnaryCallable allocateIdsCallable; + private final UnaryCallable reserveIdsCallable; + + private final BackgroundResource backgroundResources; + private final GrpcOperationsStub operationsStub; + private final GrpcStubCallableFactory callableFactory; + + private static final PathTemplate LOOKUP_0_PATH_TEMPLATE = PathTemplate.create("{project_id=**}"); + private static final PathTemplate LOOKUP_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate RUN_QUERY_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate RUN_QUERY_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate RUN_AGGREGATION_QUERY_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate RUN_AGGREGATION_QUERY_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate BEGIN_TRANSACTION_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate BEGIN_TRANSACTION_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate COMMIT_0_PATH_TEMPLATE = PathTemplate.create("{project_id=**}"); + private static final PathTemplate COMMIT_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate ROLLBACK_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate ROLLBACK_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate ALLOCATE_IDS_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate ALLOCATE_IDS_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate RESERVE_IDS_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate RESERVE_IDS_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + + public static final GrpcDatastoreStub create(DatastoreStubSettings settings) throws IOException { + return new GrpcDatastoreStub(settings, ClientContext.create(settings)); + } + + public static final GrpcDatastoreStub create(ClientContext clientContext) throws IOException { + return new GrpcDatastoreStub(DatastoreStubSettings.newBuilder().build(), clientContext); + } + + public static final GrpcDatastoreStub create( + ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { + return new GrpcDatastoreStub( + DatastoreStubSettings.newBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of GrpcDatastoreStub, using the given settings. This is protected so + * that it is easy to make a subclass, but otherwise, the static factory methods should be + * preferred. + */ + protected GrpcDatastoreStub(DatastoreStubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new GrpcDatastoreCallableFactory()); + } + + /** + * Constructs an instance of GrpcDatastoreStub, using the given settings. This is protected so + * that it is easy to make a subclass, but otherwise, the static factory methods should be + * preferred. + */ + protected GrpcDatastoreStub( + DatastoreStubSettings settings, + ClientContext clientContext, + GrpcStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + + GrpcCallSettings lookupTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(lookupMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", LOOKUP_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", LOOKUP_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings runQueryTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(runQueryMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", RUN_QUERY_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", RUN_QUERY_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings + runAggregationQueryTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(runAggregationQueryMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( + request.getProjectId(), + "project_id", + RUN_AGGREGATION_QUERY_0_PATH_TEMPLATE); + builder.add( + request.getDatabaseId(), + "database_id", + RUN_AGGREGATION_QUERY_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings + beginTransactionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(beginTransactionMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( + request.getProjectId(), "project_id", BEGIN_TRANSACTION_0_PATH_TEMPLATE); + builder.add( + request.getDatabaseId(), + "database_id", + BEGIN_TRANSACTION_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings commitTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(commitMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", COMMIT_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", COMMIT_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings rollbackTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(rollbackMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", ROLLBACK_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", ROLLBACK_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings allocateIdsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(allocateIdsMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", ALLOCATE_IDS_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", ALLOCATE_IDS_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + GrpcCallSettings reserveIdsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(reserveIdsMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", RESERVE_IDS_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", RESERVE_IDS_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + + this.lookupCallable = + callableFactory.createUnaryCallable( + lookupTransportSettings, settings.lookupSettings(), clientContext); + this.runQueryCallable = + callableFactory.createUnaryCallable( + runQueryTransportSettings, settings.runQuerySettings(), clientContext); + this.runAggregationQueryCallable = + callableFactory.createUnaryCallable( + runAggregationQueryTransportSettings, + settings.runAggregationQuerySettings(), + clientContext); + this.beginTransactionCallable = + callableFactory.createUnaryCallable( + beginTransactionTransportSettings, settings.beginTransactionSettings(), clientContext); + this.commitCallable = + callableFactory.createUnaryCallable( + commitTransportSettings, settings.commitSettings(), clientContext); + this.rollbackCallable = + callableFactory.createUnaryCallable( + rollbackTransportSettings, settings.rollbackSettings(), clientContext); + this.allocateIdsCallable = + callableFactory.createUnaryCallable( + allocateIdsTransportSettings, settings.allocateIdsSettings(), clientContext); + this.reserveIdsCallable = + callableFactory.createUnaryCallable( + reserveIdsTransportSettings, settings.reserveIdsSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + public GrpcOperationsStub getOperationsStub() { + return operationsStub; + } + + @Override + public UnaryCallable lookupCallable() { + return lookupCallable; + } + + @Override + public UnaryCallable runQueryCallable() { + return runQueryCallable; + } + + @Override + public UnaryCallable + runAggregationQueryCallable() { + return runAggregationQueryCallable; + } + + @Override + public UnaryCallable + beginTransactionCallable() { + return beginTransactionCallable; + } + + @Override + public UnaryCallable commitCallable() { + return commitCallable; + } + + @Override + public UnaryCallable rollbackCallable() { + return rollbackCallable; + } + + @Override + public UnaryCallable allocateIdsCallable() { + return allocateIdsCallable; + } + + @Override + public UnaryCallable reserveIdsCallable() { + return reserveIdsCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreCallableFactory.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreCallableFactory.java new file mode 100644 index 000000000..8639433a7 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the Datastore service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonDatastoreCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreStub.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreStub.java new file mode 100644 index 000000000..c0f1c7766 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/v1/stub/HttpJsonDatastoreStub.java @@ -0,0 +1,678 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1.stub; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.RequestParamsBuilder; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.api.pathtemplate.PathTemplate; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the Datastore service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonDatastoreStub extends DatastoreStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor lookupMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/Lookup") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:lookup", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(LookupResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + runQueryMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/RunQuery") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:runQuery", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RunQueryResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + runAggregationQueryMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/RunAggregationQuery") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:runAggregationQuery", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RunAggregationQueryResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + beginTransactionMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/BeginTransaction") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:beginTransaction", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(BeginTransactionResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor commitMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/Commit") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:commit", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(CommitResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + rollbackMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/Rollback") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:rollback", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(RollbackResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + allocateIdsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/AllocateIds") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:allocateIds", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(AllocateIdsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + reserveIdsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.datastore.v1.Datastore/ReserveIds") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/projects/{projectId}:reserveIds", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearProjectId().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ReserveIdsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable lookupCallable; + private final UnaryCallable runQueryCallable; + private final UnaryCallable + runAggregationQueryCallable; + private final UnaryCallable + beginTransactionCallable; + private final UnaryCallable commitCallable; + private final UnaryCallable rollbackCallable; + private final UnaryCallable allocateIdsCallable; + private final UnaryCallable reserveIdsCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + private static final PathTemplate LOOKUP_0_PATH_TEMPLATE = PathTemplate.create("{project_id=**}"); + private static final PathTemplate LOOKUP_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate RUN_QUERY_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate RUN_QUERY_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate RUN_AGGREGATION_QUERY_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate RUN_AGGREGATION_QUERY_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate BEGIN_TRANSACTION_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate BEGIN_TRANSACTION_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate COMMIT_0_PATH_TEMPLATE = PathTemplate.create("{project_id=**}"); + private static final PathTemplate COMMIT_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate ROLLBACK_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate ROLLBACK_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate ALLOCATE_IDS_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate ALLOCATE_IDS_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + private static final PathTemplate RESERVE_IDS_0_PATH_TEMPLATE = + PathTemplate.create("{project_id=**}"); + private static final PathTemplate RESERVE_IDS_1_PATH_TEMPLATE = + PathTemplate.create("{database_id=**}"); + + public static final HttpJsonDatastoreStub create(DatastoreStubSettings settings) + throws IOException { + return new HttpJsonDatastoreStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonDatastoreStub create(ClientContext clientContext) throws IOException { + return new HttpJsonDatastoreStub( + DatastoreStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonDatastoreStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonDatastoreStub( + DatastoreStubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonDatastoreStub, using the given settings. This is protected so + * that it is easy to make a subclass, but otherwise, the static factory methods should be + * preferred. + */ + protected HttpJsonDatastoreStub(DatastoreStubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new HttpJsonDatastoreCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonDatastoreStub, using the given settings. This is protected so + * that it is easy to make a subclass, but otherwise, the static factory methods should be + * preferred. + */ + protected HttpJsonDatastoreStub( + DatastoreStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings lookupTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(lookupMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", LOOKUP_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", LOOKUP_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings runQueryTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(runQueryMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", RUN_QUERY_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", RUN_QUERY_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings + runAggregationQueryTransportSettings = + HttpJsonCallSettings + .newBuilder() + .setMethodDescriptor(runAggregationQueryMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( + request.getProjectId(), + "project_id", + RUN_AGGREGATION_QUERY_0_PATH_TEMPLATE); + builder.add( + request.getDatabaseId(), + "database_id", + RUN_AGGREGATION_QUERY_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings + beginTransactionTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(beginTransactionMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( + request.getProjectId(), "project_id", BEGIN_TRANSACTION_0_PATH_TEMPLATE); + builder.add( + request.getDatabaseId(), + "database_id", + BEGIN_TRANSACTION_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings commitTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(commitMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", COMMIT_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", COMMIT_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings rollbackTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(rollbackMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", ROLLBACK_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", ROLLBACK_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings allocateIdsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(allocateIdsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", ALLOCATE_IDS_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", ALLOCATE_IDS_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + HttpJsonCallSettings reserveIdsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(reserveIdsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add(request.getProjectId(), "project_id", RESERVE_IDS_0_PATH_TEMPLATE); + builder.add(request.getDatabaseId(), "database_id", RESERVE_IDS_1_PATH_TEMPLATE); + return builder.build(); + }) + .build(); + + this.lookupCallable = + callableFactory.createUnaryCallable( + lookupTransportSettings, settings.lookupSettings(), clientContext); + this.runQueryCallable = + callableFactory.createUnaryCallable( + runQueryTransportSettings, settings.runQuerySettings(), clientContext); + this.runAggregationQueryCallable = + callableFactory.createUnaryCallable( + runAggregationQueryTransportSettings, + settings.runAggregationQuerySettings(), + clientContext); + this.beginTransactionCallable = + callableFactory.createUnaryCallable( + beginTransactionTransportSettings, settings.beginTransactionSettings(), clientContext); + this.commitCallable = + callableFactory.createUnaryCallable( + commitTransportSettings, settings.commitSettings(), clientContext); + this.rollbackCallable = + callableFactory.createUnaryCallable( + rollbackTransportSettings, settings.rollbackSettings(), clientContext); + this.allocateIdsCallable = + callableFactory.createUnaryCallable( + allocateIdsTransportSettings, settings.allocateIdsSettings(), clientContext); + this.reserveIdsCallable = + callableFactory.createUnaryCallable( + reserveIdsTransportSettings, settings.reserveIdsSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(lookupMethodDescriptor); + methodDescriptors.add(runQueryMethodDescriptor); + methodDescriptors.add(runAggregationQueryMethodDescriptor); + methodDescriptors.add(beginTransactionMethodDescriptor); + methodDescriptors.add(commitMethodDescriptor); + methodDescriptors.add(rollbackMethodDescriptor); + methodDescriptors.add(allocateIdsMethodDescriptor); + methodDescriptors.add(reserveIdsMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable lookupCallable() { + return lookupCallable; + } + + @Override + public UnaryCallable runQueryCallable() { + return runQueryCallable; + } + + @Override + public UnaryCallable + runAggregationQueryCallable() { + return runAggregationQueryCallable; + } + + @Override + public UnaryCallable + beginTransactionCallable() { + return beginTransactionCallable; + } + + @Override + public UnaryCallable commitCallable() { + return commitCallable; + } + + @Override + public UnaryCallable rollbackCallable() { + return rollbackCallable; + } + + @Override + public UnaryCallable allocateIdsCallable() { + return allocateIdsCallable; + } + + @Override + public UnaryCallable reserveIdsCallable() { + return reserveIdsCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.v1/reflect-config.json b/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.v1/reflect-config.json new file mode 100644 index 000000000..b0a64366e --- /dev/null +++ b/google-cloud-datastore/src/main/resources/META-INF/native-image/com.google.cloud.datastore.v1/reflect-config.json @@ -0,0 +1,2198 @@ +[ + { + "name": "com.google.api.ClientLibraryDestination", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibraryOrganization", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ClientLibrarySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CommonLanguageSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CppSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.CustomHttpPattern$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.DotnetSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.FieldBehavior", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.GoSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Http$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.HttpRule$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.JavaSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.LaunchStage", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.MethodSettings$LongRunning$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.NodeSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PhpSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.Publishing$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.PythonSettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$History", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceDescriptor$Style", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.ResourceReference$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RoutingParameter", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RoutingParameter$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RoutingRule", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RoutingRule$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.api.RubySettings$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Avg", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Avg$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Count", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Count$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Sum", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Aggregation$Sum$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationQuery$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationResult", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationResult$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationResultBatch", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AggregationResultBatch$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AllocateIdsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AllocateIdsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AllocateIdsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.AllocateIdsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ArrayValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ArrayValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.BeginTransactionRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.BeginTransactionRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.BeginTransactionResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.BeginTransactionResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CommitRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CommitRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CommitRequest$Mode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CommitResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CommitResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CompositeFilter", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CompositeFilter$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.CompositeFilter$Operator", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Entity", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Entity$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.EntityResult", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.EntityResult$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.EntityResult$ResultType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Filter", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Filter$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.GqlQuery", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.GqlQuery$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.GqlQueryParameter", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.GqlQueryParameter$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Key", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Key$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Key$PathElement", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Key$PathElement$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.KindExpression", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.KindExpression$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.LookupRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.LookupRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.LookupResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.LookupResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Mutation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Mutation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.MutationResult", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.MutationResult$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PartitionId", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PartitionId$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Projection", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Projection$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyFilter", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyFilter$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyFilter$Operator", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyOrder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyOrder$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyOrder$Direction", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyReference", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.PropertyReference$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Query", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Query$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.QueryResultBatch", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.QueryResultBatch$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.QueryResultBatch$MoreResultsType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReadOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReadOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReadOptions$ReadConsistency", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReserveIdsRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReserveIdsRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReserveIdsResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.ReserveIdsResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RollbackRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RollbackRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RollbackResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RollbackResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunAggregationQueryRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunAggregationQueryRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunAggregationQueryResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunAggregationQueryResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunQueryRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunQueryRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunQueryResponse", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.RunQueryResponse$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.TransactionOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.TransactionOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.TransactionOptions$ReadOnly", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.TransactionOptions$ReadOnly$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.TransactionOptions$ReadWrite", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.TransactionOptions$ReadWrite$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.datastore.v1.Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.BoolValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.BoolValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.BytesValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.BytesValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ExtensionRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$DescriptorProto$ReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumDescriptorProto$EnumReservedRange$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$EnumValueOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$Declaration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ExtensionRangeOptions$VerificationState", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Label", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldDescriptorProto$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$CType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$JSType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionRetention", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FieldOptions$OptionTargetType", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileDescriptorSet$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$FileOptions$OptimizeMode", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Annotation$Semantic", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$GeneratedCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MessageOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$MethodOptions$IdempotencyLevel", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$OneofOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceDescriptorProto$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$ServiceOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$SourceCodeInfo$Location$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DescriptorProtos$UninterpretedOption$NamePart$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DoubleValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.DoubleValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Duration$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.FloatValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.FloatValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Int32Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Int32Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Int64Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Int64Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.ListValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.ListValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.NullValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.StringValue", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.StringValue$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Struct", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Struct$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Timestamp$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.UInt32Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.UInt32Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.UInt64Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.UInt64Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Value", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.protobuf.Value$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.LatLng", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.type.LatLng$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } +] \ No newline at end of file diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java similarity index 98% rename from google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java rename to google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java index d88e1d1ec..831a7b59d 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/AbstractDatastoreTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,7 +67,6 @@ import com.google.datastore.v1.RunQueryResponse; import com.google.datastore.v1.TransactionOptions; import com.google.protobuf.ByteString; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -77,24 +76,20 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.TimeoutException; import java.util.function.Predicate; import org.easymock.EasyMock; -import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import org.threeten.bp.Duration; @RunWith(JUnit4.class) -public class DatastoreTest { +public abstract class AbstractDatastoreTest { - private static LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0); - private static final DatastoreOptions options = helper.getOptions(); - private static final Datastore datastore = options.getService(); + private static final LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0, 9090); + protected static DatastoreOptions options = helper.getOptions(); + protected static Datastore datastore; private static final String PROJECT_ID = options.getProjectId(); private static final String KIND1 = "kind1"; private static final String KIND2 = "kind2"; @@ -167,9 +162,9 @@ public class DatastoreTest { private DatastoreRpcFactory rpcFactoryMock; private DatastoreRpc rpcMock; - @BeforeClass - public static void beforeClass() throws IOException, InterruptedException { - helper.start(); + public AbstractDatastoreTest(DatastoreOptions options, Datastore datastore) { + this.options = options; + this.datastore = datastore; } @Before @@ -191,11 +186,6 @@ public void setUp() { datastore.add(ENTITY1, ENTITY2); } - @AfterClass - public static void afterClass() throws IOException, InterruptedException, TimeoutException { - helper.stop(Duration.ofMinutes(1)); - } - @Test public void testGetOptions() { assertSame(options, datastore.getOptions()); @@ -650,6 +640,7 @@ private List buildResponsesForQueryPagination() { List responses = new ArrayList<>(); RecordQuery query = Query.newKeyQueryBuilder().build(); RunQueryRequest.Builder requestPb = RunQueryRequest.newBuilder(); + requestPb.setProjectId(PROJECT_ID); query.populatePb(requestPb); QueryResultBatch queryResultBatchPb = RunQueryResponse.newBuilder() @@ -759,6 +750,7 @@ private List buildResponsesForQueryPaginationWithLimit() { List responses = new ArrayList<>(); RecordQuery query = Query.newEntityQueryBuilder().build(); RunQueryRequest.Builder requestPb = RunQueryRequest.newBuilder(); + requestPb.setProjectId(PROJECT_ID); query.populatePb(requestPb); QueryResultBatch queryResultBatchPb = RunQueryResponse.newBuilder() diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreExceptionTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreExceptionTest.java index 12b99c966..8c52b5519 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreExceptionTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreExceptionTest.java @@ -97,7 +97,7 @@ public void testTranslateAndThrow() { cause = new IllegalArgumentException("message"); exceptionMock = createMock(RetryHelper.RetryHelperException.class); expect(exceptionMock.getMessage()).andReturn("message").times(1); - expect(exceptionMock.getCause()).andReturn(cause).times(2); + expect(exceptionMock.getCause()).andReturn(cause).times(4); replay(exceptionMock); try { DatastoreException.translateAndThrow(exceptionMock); diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java index 85703f739..aff771383 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreOptionsTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,15 +16,21 @@ package com.google.cloud.datastore; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import com.google.cloud.TransportOptions; +import com.google.api.gax.grpc.ChannelPoolSettings; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.cloud.NoCredentials; import com.google.cloud.datastore.spi.DatastoreRpcFactory; import com.google.cloud.datastore.spi.v1.DatastoreRpc; +import com.google.cloud.datastore.v1.DatastoreSettings; +import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.cloud.http.HttpTransportOptions; +import com.google.datastore.v1.client.DatastoreFactory; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Before; @@ -48,7 +54,9 @@ public void setUp() { .setServiceRpcFactory(datastoreRpcFactory) .setProjectId(PROJECT_ID) .setDatabaseId(DATABASE_ID) + .setCredentials(NoCredentials.getInstance()) .setHost("http://localhost:" + PORT); + EasyMock.expect(datastoreRpcFactory.create(EasyMock.anyObject(DatastoreOptions.class))) .andReturn(datastoreRpc) .anyTimes(); @@ -95,12 +103,111 @@ public void testDatastore() { assertSame(datastoreRpc, options.build().getRpc()); } + @Test + public void testCustomChannelAndCredentials() { + InstantiatingGrpcChannelProvider channelProvider = + DatastoreSettings.defaultGrpcTransportProviderBuilder() + .setChannelPoolSettings( + ChannelPoolSettings.builder() + .setInitialChannelCount(10) + .setMaxChannelCount(20) + .build()) + .build(); + DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder() + .setServiceRpcFactory(datastoreRpcFactory) + .setProjectId(PROJECT_ID) + .setDatabaseId(DATABASE_ID) + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .setChannelProvider(channelProvider) + .setCredentials(NoCredentials.getInstance()) + .setHost("http://localhost:" + PORT) + .build(); + assertEquals(datastoreOptions.getTransportChannelProvider(), channelProvider); + } + + @Test + public void testInvalidConfigForHttp() { + DatastoreOptions.Builder options = + DatastoreOptions.newBuilder() + .setServiceRpcFactory(datastoreRpcFactory) + .setProjectId(PROJECT_ID) + .setDatabaseId(DATABASE_ID) + .setTransportOptions(HttpTransportOptions.newBuilder().build()) + .setChannelProvider( + DatastoreSettings.defaultGrpcTransportProviderBuilder() + .setChannelPoolSettings( + ChannelPoolSettings.builder() + .setInitialChannelCount(10) + .setMaxChannelCount(20) + .build()) + .build()) + .setCredentials(NoCredentials.getInstance()) + .setHost("http://localhost:" + PORT); + Assert.assertThrows(IllegalArgumentException.class, options::build); + } + + @Test + public void testTransport() { + // default http transport + assertThat(options.build().getTransportOptions()).isInstanceOf(HttpTransportOptions.class); + + // custom grpc transport + DatastoreOptions grpcTransportOptions = + DatastoreOptions.newBuilder() + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .setProjectId(PROJECT_ID) + .setCredentials(NoCredentials.getInstance()) + .build(); + assertThat(grpcTransportOptions.getTransportOptions()).isInstanceOf(GrpcTransportOptions.class); + assertThat(grpcTransportOptions.getTransportChannelProvider()) + .isInstanceOf(InstantiatingGrpcChannelProvider.class); + } + + @Test + public void testHostWithGrpcAndHttp() { + DatastoreOptions grpcTransportOptions = + DatastoreOptions.newBuilder() + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .setProjectId(PROJECT_ID) + .setCredentials(NoCredentials.getInstance()) + .build(); + assertThat(grpcTransportOptions.getHost()).isEqualTo(DatastoreSettings.getDefaultEndpoint()); + assertThat(grpcTransportOptions.getHost()).isEqualTo("datastore.googleapis.com:443"); + + String customHost = "http://localhost:" + PORT; + DatastoreOptions grpcTransportOptionsCustomHost = + DatastoreOptions.newBuilder() + .setTransportOptions(GrpcTransportOptions.newBuilder().build()) + .setHost(customHost) + .setProjectId(PROJECT_ID) + .setCredentials(NoCredentials.getInstance()) + .build(); + assertThat(grpcTransportOptionsCustomHost.getHost()).isEqualTo(customHost); + + DatastoreOptions httpTransportOptions = + DatastoreOptions.newBuilder() + .setProjectId(PROJECT_ID) + .setCredentials(NoCredentials.getInstance()) + .build(); + assertThat(httpTransportOptions.getHost()).isEqualTo(DatastoreFactory.DEFAULT_HOST); + + DatastoreOptions httpTransportOptionsCustomHost = + DatastoreOptions.newBuilder() + .setHost(customHost) + .setProjectId(PROJECT_ID) + .setCredentials(NoCredentials.getInstance()) + .build(); + assertThat(httpTransportOptionsCustomHost.getHost()).isEqualTo(customHost); + } + @Test public void testToBuilder() { DatastoreOptions original = options.setNamespace("ns1").build(); DatastoreOptions copy = original.toBuilder().build(); assertEquals(original.getProjectId(), copy.getProjectId()); assertEquals(original.getNamespace(), copy.getNamespace()); + assertEquals(original.getDatabaseId(), copy.getDatabaseId()); assertEquals(original.getHost(), copy.getHost()); assertEquals(original.getRetrySettings(), copy.getRetrySettings()); assertEquals(original.getCredentials(), copy.getCredentials()); @@ -111,15 +218,4 @@ public void testToBuilder() { assertNotEquals(original, newOptions); assertNotEquals(original.hashCode(), newOptions.hashCode()); } - - @Test - public void testInvalidTransport() { - try { - DatastoreOptions.newBuilder() - .setTransportOptions(EasyMock.createMock(TransportOptions.class)); - Assert.fail(); - } catch (IllegalArgumentException ex) { - assertNotNull(ex.getMessage()); - } - } } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java new file mode 100644 index 000000000..1f421d875 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestGrpc.java @@ -0,0 +1,61 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore; + +import com.google.cloud.datastore.testing.LocalDatastoreHelper; +import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.common.truth.Truth; +import java.io.IOException; +import java.util.Arrays; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.threeten.bp.Duration; + +@RunWith(Parameterized.class) +public class DatastoreTestGrpc extends AbstractDatastoreTest { + + private static final LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0, 9090); + + private static DatastoreOptions options = + helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + private static Datastore datastore = options.getService(); + + public DatastoreTestGrpc(DatastoreOptions options, Datastore datastore) { + super(options, datastore); + } + + @Parameterized.Parameters(name = "data options: {0}") + public static Iterable data() { + return Arrays.asList(new Object[][] {{options, datastore}}); + } + + @BeforeClass + public static void beforeClass() throws IOException, InterruptedException { + helper.start(); + options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + datastore = options.getService(); + } + + @AfterClass + public static void afterClass() throws Exception { + datastore.close(); + Truth.assertThat(datastore.isClosed()).isTrue(); + helper.stop(Duration.ofMinutes(1)); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java new file mode 100644 index 000000000..245f68a1b --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTestHttp.java @@ -0,0 +1,57 @@ +/* + * Copyright 2015 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore; + +import com.google.cloud.datastore.testing.LocalDatastoreHelper; +import com.google.cloud.grpc.GrpcTransportOptions; +import java.io.IOException; +import java.util.Arrays; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.threeten.bp.Duration; + +@RunWith(Parameterized.class) +public class DatastoreTestHttp extends AbstractDatastoreTest { + + private static final LocalDatastoreHelper helper = LocalDatastoreHelper.create(1.0, 9090); + + private static DatastoreOptions options = helper.getOptions(); + private static Datastore datastore = options.getService(); + + public DatastoreTestHttp(DatastoreOptions options, Datastore datastore) { + super(options, datastore); + } + + @Parameterized.Parameters(name = "data options: {0}") + public static Iterable data() { + return Arrays.asList(new Object[][] {{options, datastore}}); + } + + @BeforeClass + public static void beforeClass() throws IOException, InterruptedException { + helper.start(); + options = helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + datastore = options.getService(); + } + + @AfterClass + public static void afterClass() throws Exception { + helper.stop(Duration.ofMinutes(1)); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreUtilsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreUtilsTest.java new file mode 100644 index 000000000..74d7e9d28 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreUtilsTest.java @@ -0,0 +1,43 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore; + +import static com.google.cloud.datastore.DatastoreUtils.isLocalHost; +import static com.google.cloud.datastore.DatastoreUtils.removeScheme; +import static com.google.common.truth.Truth.assertThat; + +import org.junit.Test; + +public class DatastoreUtilsTest { + + @Test + public void testIsLocalHost() { + assertThat(isLocalHost(null)).isFalse(); + assertThat(isLocalHost("")).isFalse(); + assertThat(isLocalHost("http://localhost:9090")).isTrue(); + assertThat(isLocalHost("https://localhost:9090")).isTrue(); + assertThat(isLocalHost("10.10.10.10:9090")).isFalse(); + } + + @Test + public void testRemoveScheme() { + assertThat(removeScheme("http://localhost:9090")).isEqualTo("localhost:9090"); + assertThat(removeScheme("https://localhost:9090")).isEqualTo("localhost:9090"); + assertThat(removeScheme("https://localhost:9090")).isEqualTo("localhost:9090"); + assertThat(removeScheme("Https://localhost:9090")).isEqualTo("localhost:9090"); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslationTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslationTest.java new file mode 100644 index 000000000..3f297989f --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/GrpcToDatastoreCodeTranslationTest.java @@ -0,0 +1,53 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore; + +import static com.google.common.truth.Truth.assertThat; + +import io.grpc.Status.Code; +import java.util.EnumMap; +import org.junit.Test; + +public class GrpcToDatastoreCodeTranslationTest { + @Test + public void grpcCodeToDatastoreCode_expectedMapping() { + EnumMap expected = new EnumMap<>(Code.class); + expected.put(Code.OK, com.google.rpc.Code.OK.getNumber()); + expected.put(Code.INVALID_ARGUMENT, com.google.rpc.Code.INVALID_ARGUMENT.getNumber()); + expected.put(Code.OUT_OF_RANGE, com.google.rpc.Code.OUT_OF_RANGE.getNumber()); + expected.put(Code.UNAUTHENTICATED, com.google.rpc.Code.UNAUTHENTICATED.getNumber()); + expected.put(Code.PERMISSION_DENIED, com.google.rpc.Code.PERMISSION_DENIED.getNumber()); + expected.put(Code.NOT_FOUND, com.google.rpc.Code.NOT_FOUND.getNumber()); + expected.put(Code.FAILED_PRECONDITION, com.google.rpc.Code.FAILED_PRECONDITION.getNumber()); + expected.put(Code.ALREADY_EXISTS, com.google.rpc.Code.ALREADY_EXISTS.getNumber()); + expected.put(Code.RESOURCE_EXHAUSTED, com.google.rpc.Code.RESOURCE_EXHAUSTED.getNumber()); + expected.put(Code.INTERNAL, com.google.rpc.Code.INTERNAL.getNumber()); + expected.put(Code.UNIMPLEMENTED, com.google.rpc.Code.UNIMPLEMENTED.getNumber()); + expected.put(Code.UNAVAILABLE, com.google.rpc.Code.UNAVAILABLE.getNumber()); + expected.put(Code.ABORTED, com.google.rpc.Code.ABORTED.getNumber()); + expected.put(Code.CANCELLED, com.google.rpc.Code.CANCELLED.getNumber()); + expected.put(Code.UNKNOWN, com.google.rpc.Code.UNKNOWN.getNumber()); + expected.put(Code.DEADLINE_EXCEEDED, com.google.rpc.Code.DEADLINE_EXCEEDED.getNumber()); + expected.put(Code.DATA_LOSS, com.google.rpc.Code.DATA_LOSS.getNumber()); + + EnumMap actual = new EnumMap<>(Code.class); + for (Code c : Code.values()) { + actual.put(c, GrpcToDatastoreCodeTranslation.grpcCodeToDatastoreStatusCode(c)); + } + + assertThat(actual).isEqualTo(expected); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java similarity index 96% rename from google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java rename to google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java index c012d28c9..66822bd9a 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/AbstractITDatastoreTest.java @@ -16,6 +16,11 @@ package com.google.cloud.datastore.it; +import static com.google.api.gax.rpc.StatusCode.Code.ALREADY_EXISTS; +import static com.google.api.gax.rpc.StatusCode.Code.DEADLINE_EXCEEDED; +import static com.google.api.gax.rpc.StatusCode.Code.FAILED_PRECONDITION; +import static com.google.api.gax.rpc.StatusCode.Code.INVALID_ARGUMENT; +import static com.google.api.gax.rpc.StatusCode.Code.NOT_FOUND; import static com.google.cloud.datastore.aggregation.Aggregation.avg; import static com.google.cloud.datastore.aggregation.Aggregation.count; import static com.google.cloud.datastore.aggregation.Aggregation.sum; @@ -27,8 +32,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import com.google.cloud.Timestamp; import com.google.cloud.Tuple; @@ -74,7 +79,6 @@ import com.google.cloud.datastore.models.ExplainMetrics; import com.google.cloud.datastore.models.ExplainOptions; import com.google.cloud.datastore.models.PlanSummary; -import com.google.cloud.datastore.testing.RemoteDatastoreHelper; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Range; @@ -82,7 +86,6 @@ import com.google.datastore.v1.TransactionOptions; import com.google.datastore.v1.TransactionOptions.ReadOnly; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; @@ -96,7 +99,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import org.junit.After; -import org.junit.AfterClass; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -106,25 +108,18 @@ import org.threeten.bp.Duration; @RunWith(Parameterized.class) -public class ITDatastoreTest { +public abstract class AbstractITDatastoreTest { + protected static final String CUSTOM_DB_ID = "test-db"; - private static final RemoteDatastoreHelper HELPER = RemoteDatastoreHelper.create(); - private static final DatastoreOptions OPTIONS_1 = HELPER.getOptions(); - private static final Datastore DATASTORE_1 = OPTIONS_1.getService(); - - private static final String CUSTOM_DB_ID = "test-db"; - private static final RemoteDatastoreHelper HELPER2 = RemoteDatastoreHelper.create(CUSTOM_DB_ID); - private static final DatastoreOptions OPTIONS_2 = HELPER2.getOptions(); - private static final Datastore DATASTORE_2 = OPTIONS_2.getService(); - - private final DatastoreOptions options; - private final Datastore datastore; + protected DatastoreOptions options; + protected Datastore datastore; private static String PROJECT_ID; private static String NAMESPACE; private static final String KIND1 = "kind1"; private static final String KIND2 = "kind2"; private static final String KIND3 = "kind3"; + private static final String MARKS_KIND = "Marks"; private static final NullValue NULL_VALUE = NullValue.of(); private static final StringValue STR_VALUE = StringValue.of("str"); private static final BooleanValue BOOL_VALUE = @@ -145,7 +140,6 @@ public class ITDatastoreTest { private static Key KEY4; private static Key KEY5; private static Key KEY6; - private static final String MARKS_KIND = "Marks"; private static FullEntity PARTIAL_ENTITY1; private static FullEntity PARTIAL_ENTITY2; private static FullEntity PARTIAL_ENTITY3; @@ -161,12 +155,21 @@ public class ITDatastoreTest { @Rule public MultipleAttemptsRule multipleAttemptsRule = new MultipleAttemptsRule(3); - @AfterClass - public static void afterClass() { - HELPER.deleteNamespace(); + @Before + public void setUp() { + datastore.put(ENTITY1, ENTITY2); + } + + @After + public void tearDown() { + EntityQuery allEntitiesQuery = Query.newEntityQueryBuilder().build(); + QueryResults allEntities = datastore.run(allEntitiesQuery); + Key[] keysToDelete = + ImmutableList.copyOf(allEntities).stream().map(Entity::getKey).toArray(Key[]::new); + datastore.delete(keysToDelete); } - public ITDatastoreTest( + public AbstractITDatastoreTest( DatastoreOptions options, Datastore datastore, // databaseType is unused as a variable, but used as a parameterized label when running tests @@ -272,26 +275,6 @@ public ITDatastoreTest( .build(); } - @Before - public void setUp() { - datastore.put(ENTITY1, ENTITY2); - } - - @After - public void tearDown() { - EntityQuery allEntitiesQuery = Query.newEntityQueryBuilder().build(); - QueryResults allEntities = datastore.run(allEntitiesQuery); - Key[] keysToDelete = - ImmutableList.copyOf(allEntities).stream().map(Entity::getKey).toArray(Key[]::new); - datastore.delete(keysToDelete); - } - - @Parameterized.Parameters(name = "database: {2}") - public static Iterable data() { - return Arrays.asList( - new Object[][] {{OPTIONS_1, DATASTORE_1, "default"}, {OPTIONS_2, DATASTORE_2, "test-db"}}); - } - private Iterator getStronglyConsistentResults(Query scQuery, Query query) throws InterruptedException { // scQuery is equivalent to query, but with an ancestor filter in it @@ -496,19 +479,11 @@ public void testNewTransactionCommit() { assertEquals(ENTITY3, list.get(2)); assertEquals(3, list.size()); - try { - transaction.commit(); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "FAILED_PRECONDITION", 0); - } + DatastoreException expected = assertThrows(DatastoreException.class, transaction::commit); + assertDatastoreException(expected, FAILED_PRECONDITION.name(), 0); - try { - transaction.rollback(); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "FAILED_PRECONDITION", 0); - } + DatastoreException expected2 = assertThrows(DatastoreException.class, transaction::rollback); + assertDatastoreException(expected2, FAILED_PRECONDITION.name(), 0); } @Test @@ -699,12 +674,8 @@ public void testNewTransactionRollback() { transaction.rollback(); transaction.rollback(); // should be safe to repeat rollback calls - try { - transaction.commit(); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "FAILED_PRECONDITION", 0); - } + DatastoreException expected = assertThrows(DatastoreException.class, transaction::commit); + assertDatastoreException(expected, FAILED_PRECONDITION.name(), 0); List list = datastore.fetch(KEY1, KEY2, KEY3); assertEquals(ENTITY1, list.get(0)); @@ -751,12 +722,8 @@ public void testNewBatch() { assertEquals(PARTIAL_ENTITY3.getNames(), datastore.get(generatedKeys.get(0)).getNames()); assertEquals(PARTIAL_ENTITY3.getKey(), IncompleteKey.newBuilder(generatedKeys.get(0)).build()); - try { - batch.submit(); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "FAILED_PRECONDITION", 0); - } + DatastoreException expected = assertThrows(DatastoreException.class, batch::submit); + assertDatastoreException(expected, FAILED_PRECONDITION.name(), 0); batch = datastore.newBatch(); batch.delete(entity4.getKey(), entity5.getKey(), entity6.getKey()); @@ -1857,12 +1824,11 @@ public void testGetArrayNoDeferredResults() { assertEquals(EMPTY_LIST_VALUE, entity3.getValue("emptyList")); assertEquals(8, entity3.getNames().size()); assertFalse(entity3.contains("bla")); - try { - entity3.getString("str"); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "FAILED_PRECONDITION", 0); - } + + DatastoreException expected = + assertThrows(DatastoreException.class, () -> entity3.getString("str")); + assertDatastoreException(expected, FAILED_PRECONDITION.name(), 0); + assertFalse(result.hasNext()); datastore.delete(ENTITY3.getKey()); } @@ -1874,12 +1840,9 @@ public void testAddEntity() { assertNull(keys.get(1)); assertEquals(2, keys.size()); - try { - datastore.add(ENTITY1); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "ALREADY_EXISTS", 6); - } + DatastoreException expected = + assertThrows(DatastoreException.class, () -> datastore.add(ENTITY1)); + assertDatastoreException(expected, ALREADY_EXISTS.name(), 6); List entities = datastore.add(ENTITY3, PARTIAL_ENTITY1, PARTIAL_ENTITY2); assertEquals(ENTITY3, datastore.get(ENTITY3.getKey())); @@ -1902,12 +1865,10 @@ public void testUpdate() { assertNull(keys.get(1)); assertEquals(2, keys.size()); - try { - datastore.update(ENTITY3); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException(expected, "NOT_FOUND", 5); - } + DatastoreException expected = + assertThrows(DatastoreException.class, () -> datastore.update(ENTITY3)); + assertDatastoreException(expected, NOT_FOUND.name(), 5); + datastore.add(ENTITY3); assertEquals(ENTITY3, datastore.get(ENTITY3.getKey())); Entity entity3 = Entity.newBuilder(ENTITY3).clear().set("bla", new NullValue()).build(); @@ -1917,6 +1878,12 @@ public void testUpdate() { datastore.delete(ENTITY3.getKey()); } + private void assertDatastoreException( + DatastoreException expected, String reason, int datastoreStatusCode) { + Truth.assertThat(expected.getReason()).isEqualTo(reason); + Truth.assertThat(expected.getCode()).isEqualTo(datastoreStatusCode); + } + @Test public void testPut() { Entity updatedEntity = Entity.newBuilder(ENTITY1).set("new_property", 42L).build(); @@ -1993,12 +1960,9 @@ public Integer run(DatastoreReaderWriter transaction) { } }; - try { - datastore.runInTransaction(callable2); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException((DatastoreException) expected.getCause(), "DEADLINE_EXCEEDED", 4); - } + DatastoreException expected = + assertThrows(DatastoreException.class, () -> datastore.runInTransaction(callable2)); + assertDatastoreException((DatastoreException) expected.getCause(), DEADLINE_EXCEEDED.name(), 4); } @Test @@ -2047,12 +2011,10 @@ public Integer run(DatastoreReaderWriter transaction) { .setReadOnly(TransactionOptions.ReadOnly.getDefaultInstance()) .build(); - try { - datastore.runInTransaction(callable2, readOnlyOptions); - fail("Expecting a failure"); - } catch (DatastoreException expected) { - assertDatastoreException((DatastoreException) expected.getCause(), "INVALID_ARGUMENT", 3); - } + DatastoreException expected = + assertThrows( + DatastoreException.class, () -> datastore.runInTransaction(callable2, readOnlyOptions)); + assertDatastoreException((DatastoreException) expected.getCause(), INVALID_ARGUMENT.name(), 3); } @Test @@ -2167,10 +2129,4 @@ public void testQueryWithReadTime() throws InterruptedException { datastore.delete(entity1.getKey(), entity2.getKey(), entity3.getKey()); } } - - private void assertDatastoreException( - DatastoreException expected, String reason, int statusCode) { - assertEquals(reason, expected.getReason()); - assertEquals(statusCode, expected.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 770065778..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 @@ -68,6 +68,7 @@ import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; /* @@ -77,7 +78,7 @@ public class ITDatastoreConceptsTest { private static final RemoteDatastoreHelper HELPER = RemoteDatastoreHelper.create(); private static final DatastoreOptions OPTIONS = HELPER.getOptions(); private static final FullEntity TEST_FULL_ENTITY = FullEntity.newBuilder().build(); - private Datastore datastore; + private static Datastore datastore; private KeyFactory keyFactory; private Key taskKey; private Entity testEntity; @@ -87,13 +88,15 @@ public class ITDatastoreConceptsTest { private static final String TASK_CONCEPTS = "TaskConcepts"; - /** - * Initializes Datastore and cleans out any residual values. Also initializes global variables - * used for testing. - */ + /** Initializes Datastore for testing. */ + @BeforeClass + public static void beforeClass() throws Exception { + datastore = OPTIONS.getService(); + } + + /** Cleans out any residual values. Also initializes global variables used for testing. */ @Before public void setUp() { - datastore = OPTIONS.getService(); StructuredQuery query = Query.newKeyQueryBuilder().build(); QueryResults result = datastore.run(query); datastore.delete(Iterators.toArray(result, Key.class)); 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 new file mode 100644 index 000000000..7bb809997 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestGrpc.java @@ -0,0 +1,64 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore.it; + +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; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class ITDatastoreTestGrpc extends AbstractITDatastoreTest { + // setup for default db, grpc transport + 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, 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(); + + public ITDatastoreTestGrpc(DatastoreOptions options, Datastore datastore, String databaseType) { + super(options, datastore, databaseType); + } + + @Parameterized.Parameters(name = "database: {2}") + public static Iterable data() { + return Arrays.asList( + new Object[][] { + {OPTIONS_DEFAULT_GRPC, DATASTORE_DEFAULT_GRPC, "default"}, + {OPTIONS_CUSTOM_DB_GRPC, DATASTORE_CUSTOM_DB_GRPC, CUSTOM_DB_ID}, + }); + } + + @AfterClass + public static void afterClass() throws Exception { + HELPER_DEFAULT_GRPC.deleteNamespace(); + 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 new file mode 100644 index 000000000..3546bfcaf --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTestHttp.java @@ -0,0 +1,58 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.cloud.datastore.it; + +import com.google.cloud.datastore.Datastore; +import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.testing.RemoteDatastoreHelper; +import java.util.Arrays; +import org.junit.AfterClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class ITDatastoreTestHttp extends AbstractITDatastoreTest { + // setup for default db, http transport + 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); + 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(); + + public ITDatastoreTestHttp(DatastoreOptions options, Datastore datastore, String databaseType) { + super(options, datastore, databaseType); + } + + @Parameterized.Parameters(name = "database: {2}") + public static Iterable data() { + return Arrays.asList( + new Object[][] { + {OPTIONS_DEFAULT_HTTP, DATASTORE_DEFAULT_HTTP, "default"}, + {OPTIONS_CUSTOM_DB_HTTP, DATASTORE_CUSTOM_DB_HTTP, CUSTOM_DB_ID}, + }); + } + + @AfterClass + public static void afterClass() throws Exception { + HELPER_DEFAULT_HTTP.deleteNamespace(); + HELPER_CUSTOM_DB_HTTP.deleteNamespace(); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/MultipleAttemptsRule.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/MultipleAttemptsRule.java index 8472f3131..ce9a226a6 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/MultipleAttemptsRule.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/MultipleAttemptsRule.java @@ -37,7 +37,7 @@ public final class MultipleAttemptsRule implements TestRule { this(attemptCount, 1000L); } - MultipleAttemptsRule(int attemptCount, long initialBackoffMillis) { + public MultipleAttemptsRule(int attemptCount, long initialBackoffMillis) { checkState(attemptCount > 0, "attemptCount must be > 0"); checkState(initialBackoffMillis > 0, "initialBackoffMillis must be > 0"); this.initialBackoffMillis = initialBackoffMillis; diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/StatementExecutor.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/StatementExecutor.java index c8ded3d89..f2209be9c 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/StatementExecutor.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/StatementExecutor.java @@ -80,9 +80,10 @@ private boolean transactionConflict(Exception exception) { } return exception instanceof ExecutionException && exception.getCause().getClass() == DatastoreException.class - && exception - .getMessage() - .contains("contention"); // exception raise coz of optimistic concurrency + && (exception.getMessage().contains("contention") + || exception + .getMessage() + .contains("Conflict")); // exception raise coz of optimistic concurrency } interface Statement { diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java new file mode 100644 index 000000000..76fd00580 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/spi/v1/RpcUtilsTest.java @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.spi.v1; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.api.gax.retrying.RetrySettings; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.cloud.datastore.DatastoreOptions; +import org.junit.Test; +import org.threeten.bp.Duration; + +public class RpcUtilsTest { + + @Test + public void testRetrySettingSetter() { + UnaryCallSettings.Builder builder = + UnaryCallSettings.newUnaryCallSettingsBuilder(); + + // datastoreOptions with default retry settings + DatastoreOptions datastoreOptions = + DatastoreOptions.newBuilder().setProjectId("project-id").build(); + RpcUtils.retrySettingSetter(datastoreOptions).apply(builder); + assertThat(builder.getRetrySettings()).isEqualTo(datastoreOptions.getRetrySettings()); + + // datastoreOptions with custom retry settings + RetrySettings customRetrySettings = + RetrySettings.newBuilder() + .setTotalTimeout(Duration.ofMinutes(2)) + .setInitialRpcTimeout(Duration.ofSeconds(5)) + .setMaxRpcTimeout(Duration.ofSeconds(10)) + .setRetryDelayMultiplier(1.5) + .setMaxAttempts(5) + .build(); + DatastoreOptions datastoreOptionsWithCustomRetrySettings = + DatastoreOptions.newBuilder() + .setProjectId("project-id") + .setRetrySettings(customRetrySettings) + .build(); + RpcUtils.retrySettingSetter(datastoreOptionsWithCustomRetrySettings).apply(builder); + assertThat(builder.getRetrySettings()).isEqualTo(customRetrySettings); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java index 3ebd3ef4a..8359eb046 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package com.google.cloud.datastore.testing; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -23,12 +24,15 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.cloud.NoCredentials; import com.google.cloud.datastore.Datastore; import com.google.cloud.datastore.DatastoreException; import com.google.cloud.datastore.DatastoreOptions; import com.google.cloud.datastore.Entity; import com.google.cloud.datastore.Key; +import com.google.cloud.grpc.GrpcTransportOptions; +import com.google.cloud.http.HttpTransportOptions; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -167,6 +171,23 @@ public void testOptions() { assertEquals(NAMESPACE, options.getNamespace()); } + @Test + public void testDefaultHttpTransportOptions() { + LocalDatastoreHelper helper = LocalDatastoreHelper.create(); + DatastoreOptions options = helper.getOptions(); + assertThat(options.getTransportOptions()).isInstanceOf(HttpTransportOptions.class); + } + + @Test + public void testSetGrpcTransportOptions() { + LocalDatastoreHelper helper = LocalDatastoreHelper.create(); + DatastoreOptions options = + helper.getGrpcTransportOptions(GrpcTransportOptions.newBuilder().build()); + assertThat(options.getTransportOptions()).isInstanceOf(GrpcTransportOptions.class); + assertThat(options.getTransportChannelProvider()) + .isInstanceOf(InstantiatingGrpcChannelProvider.class); + } + @Test public void testStartStopReset() throws IOException, InterruptedException, TimeoutException { try { diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java index 6167cedca..9e00085ee 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 Google LLC + * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ import com.google.api.core.InternalApi; import com.google.api.gax.retrying.RetrySettings; +import com.google.cloud.TransportOptions; import com.google.cloud.datastore.Datastore; import com.google.cloud.datastore.DatastoreOpenTelemetryOptions; import com.google.cloud.datastore.DatastoreOptions; @@ -25,6 +26,7 @@ import com.google.cloud.datastore.Query; import com.google.cloud.datastore.QueryResults; import com.google.cloud.datastore.StructuredQuery; +import com.google.cloud.grpc.GrpcTransportOptions; import com.google.cloud.http.HttpTransportOptions; import io.opentelemetry.sdk.OpenTelemetrySdk; import java.util.UUID; @@ -77,21 +79,35 @@ public void deleteNamespace() { /** Creates a {@code RemoteStorageHelper} object. */ public static RemoteDatastoreHelper create() { - return create(""); + return create("", DatastoreOptions.getDefaultHttpTransportOptions(), /*openTelemetrySdk=*/ null); + } + + public static RemoteDatastoreHelper create(String databaseId) { + return create(databaseId, DatastoreOptions.getDefaultHttpTransportOptions(), /*openTelemetrySdk=*/ null); + } + + public static RemoteDatastoreHelper create(TransportOptions transportOptions) { + return create("", transportOptions, /*openTelemetrySdk=*/ null); + } + + public static RemoteDatastoreHelper create(String databaseId, @Nullable OpenTelemetrySdk openTelemetrySdk) { + return create(databaseId, DatastoreOptions.getDefaultHttpTransportOptions(), openTelemetrySdk); } /** Creates a {@code RemoteStorageHelper} object. */ public static RemoteDatastoreHelper create( - String databaseId, @Nullable OpenTelemetrySdk openTelemetrySdk) { - HttpTransportOptions transportOptions = DatastoreOptions.getDefaultHttpTransportOptions(); - transportOptions = - transportOptions.toBuilder().setConnectTimeout(60000).setReadTimeout(60000).build(); + String databaseId, TransportOptions transportOptions, @Nullable OpenTelemetrySdk openTelemetrySdk) { DatastoreOptions.Builder datastoreOptionBuilder = DatastoreOptions.newBuilder() .setDatabaseId(databaseId) .setNamespace(UUID.randomUUID().toString()) .setRetrySettings(retrySettings()) .setTransportOptions(transportOptions); + if (transportOptions instanceof GrpcTransportOptions) { + datastoreOptionBuilder = datastoreOptionBuilder.setTransportOptions((GrpcTransportOptions) transportOptions); + } else { + datastoreOptionBuilder = datastoreOptionBuilder.setTransportOptions(transportOptions); + } if (openTelemetrySdk != null) { datastoreOptionBuilder.setOpenTelemetryOptions( @@ -103,10 +119,6 @@ public static RemoteDatastoreHelper create( return new RemoteDatastoreHelper(datastoreOptionBuilder.build()); } - public static RemoteDatastoreHelper create(String databaseId) { - return create(databaseId, /*openTelemetrySdk=*/ null); - } - private static RetrySettings retrySettings() { return RetrySettings.newBuilder() .setMaxAttempts(10) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientHttpJsonTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientHttpJsonTest.java new file mode 100644 index 000000000..fa3a2a4e9 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientHttpJsonTest.java @@ -0,0 +1,538 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.cloud.datastore.v1.stub.HttpJsonDatastoreStub; +import com.google.datastore.v1.AggregationQuery; +import com.google.datastore.v1.AggregationResultBatch; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.EntityResult; +import com.google.datastore.v1.Key; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.Mutation; +import com.google.datastore.v1.MutationResult; +import com.google.datastore.v1.PartitionId; +import com.google.datastore.v1.Query; +import com.google.datastore.v1.QueryResultBatch; +import com.google.datastore.v1.ReadOptions; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import com.google.protobuf.ByteString; +import com.google.protobuf.Timestamp; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class DatastoreClientHttpJsonTest { + private static MockHttpService mockService; + private static DatastoreClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonDatastoreStub.getMethodDescriptors(), DatastoreSettings.getDefaultEndpoint()); + DatastoreSettings settings = + DatastoreSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + DatastoreSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = DatastoreClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void lookupTest() throws Exception { + LookupResponse expectedResponse = + LookupResponse.newBuilder() + .addAllFound(new ArrayList()) + .addAllMissing(new ArrayList()) + .addAllDeferred(new ArrayList()) + .setTransaction(ByteString.EMPTY) + .setReadTime(Timestamp.newBuilder().build()) + .build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + ReadOptions readOptions = ReadOptions.newBuilder().build(); + List keys = new ArrayList<>(); + + LookupResponse actualResponse = client.lookup(projectId, readOptions, keys); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void lookupExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + ReadOptions readOptions = ReadOptions.newBuilder().build(); + List keys = new ArrayList<>(); + client.lookup(projectId, readOptions, keys); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void runQueryTest() throws Exception { + RunQueryResponse expectedResponse = + RunQueryResponse.newBuilder() + .setBatch(QueryResultBatch.newBuilder().build()) + .setQuery(Query.newBuilder().build()) + .setTransaction(ByteString.EMPTY) + .build(); + mockService.addResponse(expectedResponse); + + RunQueryRequest request = + RunQueryRequest.newBuilder() + .setProjectId("projectId-1530") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + + RunQueryResponse actualResponse = client.runQuery(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void runQueryExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + RunQueryRequest request = + RunQueryRequest.newBuilder() + .setProjectId("projectId-1530") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + client.runQuery(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void runAggregationQueryTest() throws Exception { + RunAggregationQueryResponse expectedResponse = + RunAggregationQueryResponse.newBuilder() + .setBatch(AggregationResultBatch.newBuilder().build()) + .setQuery(AggregationQuery.newBuilder().build()) + .setTransaction(ByteString.EMPTY) + .build(); + mockService.addResponse(expectedResponse); + + RunAggregationQueryRequest request = + RunAggregationQueryRequest.newBuilder() + .setProjectId("projectId-1530") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + + RunAggregationQueryResponse actualResponse = client.runAggregationQuery(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void runAggregationQueryExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + RunAggregationQueryRequest request = + RunAggregationQueryRequest.newBuilder() + .setProjectId("projectId-1530") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + client.runAggregationQuery(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void beginTransactionTest() throws Exception { + BeginTransactionResponse expectedResponse = + BeginTransactionResponse.newBuilder().setTransaction(ByteString.EMPTY).build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + + BeginTransactionResponse actualResponse = client.beginTransaction(projectId); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void beginTransactionExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + client.beginTransaction(projectId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void commitTest() throws Exception { + CommitResponse expectedResponse = + CommitResponse.newBuilder() + .addAllMutationResults(new ArrayList()) + .setIndexUpdates(-1425228195) + .setCommitTime(Timestamp.newBuilder().build()) + .build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + List mutations = new ArrayList<>(); + + CommitResponse actualResponse = client.commit(projectId, mode, mutations); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void commitExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + List mutations = new ArrayList<>(); + client.commit(projectId, mode, mutations); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void commitTest2() throws Exception { + CommitResponse expectedResponse = + CommitResponse.newBuilder() + .addAllMutationResults(new ArrayList()) + .setIndexUpdates(-1425228195) + .setCommitTime(Timestamp.newBuilder().build()) + .build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + ByteString transaction = ByteString.EMPTY; + List mutations = new ArrayList<>(); + + CommitResponse actualResponse = client.commit(projectId, mode, transaction, mutations); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void commitExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + ByteString transaction = ByteString.EMPTY; + List mutations = new ArrayList<>(); + client.commit(projectId, mode, transaction, mutations); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void rollbackTest() throws Exception { + RollbackResponse expectedResponse = RollbackResponse.newBuilder().build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + ByteString transaction = ByteString.EMPTY; + + RollbackResponse actualResponse = client.rollback(projectId, transaction); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void rollbackExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + ByteString transaction = ByteString.EMPTY; + client.rollback(projectId, transaction); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void allocateIdsTest() throws Exception { + AllocateIdsResponse expectedResponse = + AllocateIdsResponse.newBuilder().addAllKeys(new ArrayList()).build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + List keys = new ArrayList<>(); + + AllocateIdsResponse actualResponse = client.allocateIds(projectId, keys); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void allocateIdsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + List keys = new ArrayList<>(); + client.allocateIds(projectId, keys); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void reserveIdsTest() throws Exception { + ReserveIdsResponse expectedResponse = ReserveIdsResponse.newBuilder().build(); + mockService.addResponse(expectedResponse); + + String projectId = "projectId-1530"; + List keys = new ArrayList<>(); + + ReserveIdsResponse actualResponse = client.reserveIds(projectId, keys); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void reserveIdsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String projectId = "projectId-1530"; + List keys = new ArrayList<>(); + client.reserveIds(projectId, keys); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientTest.java new file mode 100644 index 000000000..663de9fb0 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/DatastoreClientTest.java @@ -0,0 +1,514 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.grpc.GaxGrpcProperties; +import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.api.gax.grpc.testing.MockGrpcService; +import com.google.api.gax.grpc.testing.MockServiceHelper; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.datastore.v1.AggregationQuery; +import com.google.datastore.v1.AggregationResultBatch; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.EntityResult; +import com.google.datastore.v1.Key; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.Mutation; +import com.google.datastore.v1.MutationResult; +import com.google.datastore.v1.PartitionId; +import com.google.datastore.v1.Query; +import com.google.datastore.v1.QueryResultBatch; +import com.google.datastore.v1.ReadOptions; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import com.google.protobuf.AbstractMessage; +import com.google.protobuf.ByteString; +import com.google.protobuf.Timestamp; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class DatastoreClientTest { + private static MockDatastore mockDatastore; + private static MockServiceHelper mockServiceHelper; + private LocalChannelProvider channelProvider; + private DatastoreClient client; + + @BeforeClass + public static void startStaticServer() { + mockDatastore = new MockDatastore(); + mockServiceHelper = + new MockServiceHelper( + UUID.randomUUID().toString(), Arrays.asList(mockDatastore)); + mockServiceHelper.start(); + } + + @AfterClass + public static void stopServer() { + mockServiceHelper.stop(); + } + + @Before + public void setUp() throws IOException { + mockServiceHelper.reset(); + channelProvider = mockServiceHelper.createChannelProvider(); + DatastoreSettings settings = + DatastoreSettings.newBuilder() + .setTransportChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = DatastoreClient.create(settings); + } + + @After + public void tearDown() throws Exception { + client.close(); + } + + @Test + public void lookupTest() throws Exception { + LookupResponse expectedResponse = + LookupResponse.newBuilder() + .addAllFound(new ArrayList()) + .addAllMissing(new ArrayList()) + .addAllDeferred(new ArrayList()) + .setTransaction(ByteString.EMPTY) + .setReadTime(Timestamp.newBuilder().build()) + .build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + ReadOptions readOptions = ReadOptions.newBuilder().build(); + List keys = new ArrayList<>(); + + LookupResponse actualResponse = client.lookup(projectId, readOptions, keys); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + LookupRequest actualRequest = ((LookupRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertEquals(readOptions, actualRequest.getReadOptions()); + Assert.assertEquals(keys, actualRequest.getKeysList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void lookupExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + ReadOptions readOptions = ReadOptions.newBuilder().build(); + List keys = new ArrayList<>(); + client.lookup(projectId, readOptions, keys); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void runQueryTest() throws Exception { + RunQueryResponse expectedResponse = + RunQueryResponse.newBuilder() + .setBatch(QueryResultBatch.newBuilder().build()) + .setQuery(Query.newBuilder().build()) + .setTransaction(ByteString.EMPTY) + .build(); + mockDatastore.addResponse(expectedResponse); + + RunQueryRequest request = + RunQueryRequest.newBuilder() + .setProjectId("projectId-894832108") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + + RunQueryResponse actualResponse = client.runQuery(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + RunQueryRequest actualRequest = ((RunQueryRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId()); + Assert.assertEquals(request.getDatabaseId(), actualRequest.getDatabaseId()); + Assert.assertEquals(request.getPartitionId(), actualRequest.getPartitionId()); + Assert.assertEquals(request.getReadOptions(), actualRequest.getReadOptions()); + Assert.assertEquals(request.getQuery(), actualRequest.getQuery()); + Assert.assertEquals(request.getGqlQuery(), actualRequest.getGqlQuery()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void runQueryExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + RunQueryRequest request = + RunQueryRequest.newBuilder() + .setProjectId("projectId-894832108") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + client.runQuery(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void runAggregationQueryTest() throws Exception { + RunAggregationQueryResponse expectedResponse = + RunAggregationQueryResponse.newBuilder() + .setBatch(AggregationResultBatch.newBuilder().build()) + .setQuery(AggregationQuery.newBuilder().build()) + .setTransaction(ByteString.EMPTY) + .build(); + mockDatastore.addResponse(expectedResponse); + + RunAggregationQueryRequest request = + RunAggregationQueryRequest.newBuilder() + .setProjectId("projectId-894832108") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + + RunAggregationQueryResponse actualResponse = client.runAggregationQuery(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + RunAggregationQueryRequest actualRequest = ((RunAggregationQueryRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId()); + Assert.assertEquals(request.getDatabaseId(), actualRequest.getDatabaseId()); + Assert.assertEquals(request.getPartitionId(), actualRequest.getPartitionId()); + Assert.assertEquals(request.getReadOptions(), actualRequest.getReadOptions()); + Assert.assertEquals(request.getAggregationQuery(), actualRequest.getAggregationQuery()); + Assert.assertEquals(request.getGqlQuery(), actualRequest.getGqlQuery()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void runAggregationQueryExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + RunAggregationQueryRequest request = + RunAggregationQueryRequest.newBuilder() + .setProjectId("projectId-894832108") + .setDatabaseId("databaseId1688905718") + .setPartitionId(PartitionId.newBuilder().build()) + .setReadOptions(ReadOptions.newBuilder().build()) + .build(); + client.runAggregationQuery(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void beginTransactionTest() throws Exception { + BeginTransactionResponse expectedResponse = + BeginTransactionResponse.newBuilder().setTransaction(ByteString.EMPTY).build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + + BeginTransactionResponse actualResponse = client.beginTransaction(projectId); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + BeginTransactionRequest actualRequest = ((BeginTransactionRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void beginTransactionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + client.beginTransaction(projectId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void commitTest() throws Exception { + CommitResponse expectedResponse = + CommitResponse.newBuilder() + .addAllMutationResults(new ArrayList()) + .setIndexUpdates(-1425228195) + .setCommitTime(Timestamp.newBuilder().build()) + .build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + List mutations = new ArrayList<>(); + + CommitResponse actualResponse = client.commit(projectId, mode, mutations); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CommitRequest actualRequest = ((CommitRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertEquals(mode, actualRequest.getMode()); + Assert.assertEquals(mutations, actualRequest.getMutationsList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void commitExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + List mutations = new ArrayList<>(); + client.commit(projectId, mode, mutations); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void commitTest2() throws Exception { + CommitResponse expectedResponse = + CommitResponse.newBuilder() + .addAllMutationResults(new ArrayList()) + .setIndexUpdates(-1425228195) + .setCommitTime(Timestamp.newBuilder().build()) + .build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + ByteString transaction = ByteString.EMPTY; + List mutations = new ArrayList<>(); + + CommitResponse actualResponse = client.commit(projectId, mode, transaction, mutations); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CommitRequest actualRequest = ((CommitRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertEquals(mode, actualRequest.getMode()); + Assert.assertEquals(transaction, actualRequest.getTransaction()); + Assert.assertEquals(mutations, actualRequest.getMutationsList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void commitExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + CommitRequest.Mode mode = CommitRequest.Mode.forNumber(0); + ByteString transaction = ByteString.EMPTY; + List mutations = new ArrayList<>(); + client.commit(projectId, mode, transaction, mutations); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void rollbackTest() throws Exception { + RollbackResponse expectedResponse = RollbackResponse.newBuilder().build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + ByteString transaction = ByteString.EMPTY; + + RollbackResponse actualResponse = client.rollback(projectId, transaction); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + RollbackRequest actualRequest = ((RollbackRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertEquals(transaction, actualRequest.getTransaction()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void rollbackExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + ByteString transaction = ByteString.EMPTY; + client.rollback(projectId, transaction); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void allocateIdsTest() throws Exception { + AllocateIdsResponse expectedResponse = + AllocateIdsResponse.newBuilder().addAllKeys(new ArrayList()).build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + List keys = new ArrayList<>(); + + AllocateIdsResponse actualResponse = client.allocateIds(projectId, keys); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + AllocateIdsRequest actualRequest = ((AllocateIdsRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertEquals(keys, actualRequest.getKeysList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void allocateIdsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + List keys = new ArrayList<>(); + client.allocateIds(projectId, keys); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void reserveIdsTest() throws Exception { + ReserveIdsResponse expectedResponse = ReserveIdsResponse.newBuilder().build(); + mockDatastore.addResponse(expectedResponse); + + String projectId = "projectId-894832108"; + List keys = new ArrayList<>(); + + ReserveIdsResponse actualResponse = client.reserveIds(projectId, keys); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatastore.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ReserveIdsRequest actualRequest = ((ReserveIdsRequest) actualRequests.get(0)); + + Assert.assertEquals(projectId, actualRequest.getProjectId()); + Assert.assertEquals(keys, actualRequest.getKeysList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void reserveIdsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatastore.addException(exception); + + try { + String projectId = "projectId-894832108"; + List keys = new ArrayList<>(); + client.reserveIds(projectId, keys); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastore.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastore.java new file mode 100644 index 000000000..d2295784c --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastore.java @@ -0,0 +1,59 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.grpc.testing.MockGrpcService; +import com.google.protobuf.AbstractMessage; +import io.grpc.ServerServiceDefinition; +import java.util.List; +import javax.annotation.Generated; + +@BetaApi +@Generated("by gapic-generator-java") +public class MockDatastore implements MockGrpcService { + private final MockDatastoreImpl serviceImpl; + + public MockDatastore() { + serviceImpl = new MockDatastoreImpl(); + } + + @Override + public List getRequests() { + return serviceImpl.getRequests(); + } + + @Override + public void addResponse(AbstractMessage response) { + serviceImpl.addResponse(response); + } + + @Override + public void addException(Exception exception) { + serviceImpl.addException(exception); + } + + @Override + public ServerServiceDefinition getServiceDefinition() { + return serviceImpl.bindService(); + } + + @Override + public void reset() { + serviceImpl.reset(); + } +} diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastoreImpl.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastoreImpl.java new file mode 100644 index 000000000..3b3d8b937 --- /dev/null +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/v1/MockDatastoreImpl.java @@ -0,0 +1,241 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.datastore.v1; + +import com.google.api.core.BetaApi; +import com.google.datastore.v1.AllocateIdsRequest; +import com.google.datastore.v1.AllocateIdsResponse; +import com.google.datastore.v1.BeginTransactionRequest; +import com.google.datastore.v1.BeginTransactionResponse; +import com.google.datastore.v1.CommitRequest; +import com.google.datastore.v1.CommitResponse; +import com.google.datastore.v1.DatastoreGrpc.DatastoreImplBase; +import com.google.datastore.v1.LookupRequest; +import com.google.datastore.v1.LookupResponse; +import com.google.datastore.v1.ReserveIdsRequest; +import com.google.datastore.v1.ReserveIdsResponse; +import com.google.datastore.v1.RollbackRequest; +import com.google.datastore.v1.RollbackResponse; +import com.google.datastore.v1.RunAggregationQueryRequest; +import com.google.datastore.v1.RunAggregationQueryResponse; +import com.google.datastore.v1.RunQueryRequest; +import com.google.datastore.v1.RunQueryResponse; +import com.google.protobuf.AbstractMessage; +import io.grpc.stub.StreamObserver; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; +import javax.annotation.Generated; + +@BetaApi +@Generated("by gapic-generator-java") +public class MockDatastoreImpl extends DatastoreImplBase { + private List requests; + private Queue responses; + + public MockDatastoreImpl() { + requests = new ArrayList<>(); + responses = new LinkedList<>(); + } + + public List getRequests() { + return requests; + } + + public void addResponse(AbstractMessage response) { + responses.add(response); + } + + public void setResponses(List responses) { + this.responses = new LinkedList(responses); + } + + public void addException(Exception exception) { + responses.add(exception); + } + + public void reset() { + requests = new ArrayList<>(); + responses = new LinkedList<>(); + } + + @Override + public void lookup(LookupRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof LookupResponse) { + requests.add(request); + responseObserver.onNext(((LookupResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method Lookup, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + LookupResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void runQuery(RunQueryRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof RunQueryResponse) { + requests.add(request); + responseObserver.onNext(((RunQueryResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method RunQuery, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + RunQueryResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void runAggregationQuery( + RunAggregationQueryRequest request, + StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof RunAggregationQueryResponse) { + requests.add(request); + responseObserver.onNext(((RunAggregationQueryResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method RunAggregationQuery, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + RunAggregationQueryResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void beginTransaction( + BeginTransactionRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof BeginTransactionResponse) { + requests.add(request); + responseObserver.onNext(((BeginTransactionResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method BeginTransaction, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + BeginTransactionResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void commit(CommitRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof CommitResponse) { + requests.add(request); + responseObserver.onNext(((CommitResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method Commit, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + CommitResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void rollback(RollbackRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof RollbackResponse) { + requests.add(request); + responseObserver.onNext(((RollbackResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method Rollback, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + RollbackResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void allocateIds( + AllocateIdsRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof AllocateIdsResponse) { + requests.add(request); + responseObserver.onNext(((AllocateIdsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method AllocateIds, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + AllocateIdsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void reserveIds( + ReserveIdsRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof ReserveIdsResponse) { + requests.add(request); + responseObserver.onNext(((ReserveIdsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ReserveIds, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ReserveIdsResponse.class.getName(), + Exception.class.getName()))); + } + } +} diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml index 966e0c054..495344ad1 100644 --- a/grpc-google-cloud-datastore-admin-v1/pom.xml +++ b/grpc-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT grpc-google-cloud-datastore-admin-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT diff --git a/grpc-google-cloud-datastore-v1/pom.xml b/grpc-google-cloud-datastore-v1/pom.xml new file mode 100644 index 000000000..23476b2dc --- /dev/null +++ b/grpc-google-cloud-datastore-v1/pom.xml @@ -0,0 +1,72 @@ + + 4.0.0 + com.google.api.grpc + grpc-google-cloud-datastore-v1 + 2.20.0-grpc-experimental-1-SNAPSHOT + grpc-google-cloud-datastore-v1 + GRPC library for google-cloud-datastore + + com.google.cloud + google-cloud-datastore-parent + 2.20.0-grpc-experimental-1-SNAPSHOT + + + + io.grpc + grpc-api + + + io.grpc + grpc-stub + + + io.grpc + grpc-protobuf + + + com.google.protobuf + protobuf-java + + + com.google.api.grpc + proto-google-cloud-datastore-v1 + + + com.google.guava + guava + + + + + + java9 + + [9,) + + + + javax.annotation + javax.annotation-api + + + + + + + + + org.codehaus.mojo + flatten-maven-plugin + + + org.codehaus.mojo + clirr-maven-plugin + + true + + + + + \ No newline at end of file diff --git a/grpc-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreGrpc.java b/grpc-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreGrpc.java new file mode 100644 index 000000000..b3dc940b7 --- /dev/null +++ b/grpc-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreGrpc.java @@ -0,0 +1,1194 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.datastore.v1; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + * + * + *
+ * Each RPC normalizes the partition IDs of the keys in its input entities,
+ * and always returns entities with keys with normalized partition IDs.
+ * This applies to all keys and entities, including those in values, except keys
+ * with both an empty path and an empty or unset partition ID. Normalization of
+ * input keys sets the project ID (if not already set) to the project ID from
+ * the request.
+ * 
+ */ +@javax.annotation.Generated( + value = "by gRPC proto compiler", + comments = "Source: google/datastore/v1/datastore.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class DatastoreGrpc { + + private DatastoreGrpc() {} + + public static final java.lang.String SERVICE_NAME = "google.datastore.v1.Datastore"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.LookupRequest, com.google.datastore.v1.LookupResponse> + getLookupMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "Lookup", + requestType = com.google.datastore.v1.LookupRequest.class, + responseType = com.google.datastore.v1.LookupResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.LookupRequest, com.google.datastore.v1.LookupResponse> + getLookupMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.LookupRequest, com.google.datastore.v1.LookupResponse> + getLookupMethod; + if ((getLookupMethod = DatastoreGrpc.getLookupMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getLookupMethod = DatastoreGrpc.getLookupMethod) == null) { + DatastoreGrpc.getLookupMethod = + getLookupMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "Lookup")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.LookupRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.LookupResponse.getDefaultInstance())) + .setSchemaDescriptor(new DatastoreMethodDescriptorSupplier("Lookup")) + .build(); + } + } + } + return getLookupMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.RunQueryRequest, com.google.datastore.v1.RunQueryResponse> + getRunQueryMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "RunQuery", + requestType = com.google.datastore.v1.RunQueryRequest.class, + responseType = com.google.datastore.v1.RunQueryResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.RunQueryRequest, com.google.datastore.v1.RunQueryResponse> + getRunQueryMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.RunQueryRequest, com.google.datastore.v1.RunQueryResponse> + getRunQueryMethod; + if ((getRunQueryMethod = DatastoreGrpc.getRunQueryMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getRunQueryMethod = DatastoreGrpc.getRunQueryMethod) == null) { + DatastoreGrpc.getRunQueryMethod = + getRunQueryMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RunQuery")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.RunQueryRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.RunQueryResponse.getDefaultInstance())) + .setSchemaDescriptor(new DatastoreMethodDescriptorSupplier("RunQuery")) + .build(); + } + } + } + return getRunQueryMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.RunAggregationQueryRequest, + com.google.datastore.v1.RunAggregationQueryResponse> + getRunAggregationQueryMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "RunAggregationQuery", + requestType = com.google.datastore.v1.RunAggregationQueryRequest.class, + responseType = com.google.datastore.v1.RunAggregationQueryResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.RunAggregationQueryRequest, + com.google.datastore.v1.RunAggregationQueryResponse> + getRunAggregationQueryMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.RunAggregationQueryRequest, + com.google.datastore.v1.RunAggregationQueryResponse> + getRunAggregationQueryMethod; + if ((getRunAggregationQueryMethod = DatastoreGrpc.getRunAggregationQueryMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getRunAggregationQueryMethod = DatastoreGrpc.getRunAggregationQueryMethod) == null) { + DatastoreGrpc.getRunAggregationQueryMethod = + getRunAggregationQueryMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName( + generateFullMethodName(SERVICE_NAME, "RunAggregationQuery")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.RunAggregationQueryRequest + .getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.RunAggregationQueryResponse + .getDefaultInstance())) + .setSchemaDescriptor( + new DatastoreMethodDescriptorSupplier("RunAggregationQuery")) + .build(); + } + } + } + return getRunAggregationQueryMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.BeginTransactionRequest, + com.google.datastore.v1.BeginTransactionResponse> + getBeginTransactionMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "BeginTransaction", + requestType = com.google.datastore.v1.BeginTransactionRequest.class, + responseType = com.google.datastore.v1.BeginTransactionResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.BeginTransactionRequest, + com.google.datastore.v1.BeginTransactionResponse> + getBeginTransactionMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.BeginTransactionRequest, + com.google.datastore.v1.BeginTransactionResponse> + getBeginTransactionMethod; + if ((getBeginTransactionMethod = DatastoreGrpc.getBeginTransactionMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getBeginTransactionMethod = DatastoreGrpc.getBeginTransactionMethod) == null) { + DatastoreGrpc.getBeginTransactionMethod = + getBeginTransactionMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "BeginTransaction")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.BeginTransactionRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.BeginTransactionResponse + .getDefaultInstance())) + .setSchemaDescriptor( + new DatastoreMethodDescriptorSupplier("BeginTransaction")) + .build(); + } + } + } + return getBeginTransactionMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.CommitRequest, com.google.datastore.v1.CommitResponse> + getCommitMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "Commit", + requestType = com.google.datastore.v1.CommitRequest.class, + responseType = com.google.datastore.v1.CommitResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.CommitRequest, com.google.datastore.v1.CommitResponse> + getCommitMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.CommitRequest, com.google.datastore.v1.CommitResponse> + getCommitMethod; + if ((getCommitMethod = DatastoreGrpc.getCommitMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getCommitMethod = DatastoreGrpc.getCommitMethod) == null) { + DatastoreGrpc.getCommitMethod = + getCommitMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "Commit")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.CommitRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.CommitResponse.getDefaultInstance())) + .setSchemaDescriptor(new DatastoreMethodDescriptorSupplier("Commit")) + .build(); + } + } + } + return getCommitMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.RollbackRequest, com.google.datastore.v1.RollbackResponse> + getRollbackMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "Rollback", + requestType = com.google.datastore.v1.RollbackRequest.class, + responseType = com.google.datastore.v1.RollbackResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.RollbackRequest, com.google.datastore.v1.RollbackResponse> + getRollbackMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.RollbackRequest, com.google.datastore.v1.RollbackResponse> + getRollbackMethod; + if ((getRollbackMethod = DatastoreGrpc.getRollbackMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getRollbackMethod = DatastoreGrpc.getRollbackMethod) == null) { + DatastoreGrpc.getRollbackMethod = + getRollbackMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "Rollback")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.RollbackRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.RollbackResponse.getDefaultInstance())) + .setSchemaDescriptor(new DatastoreMethodDescriptorSupplier("Rollback")) + .build(); + } + } + } + return getRollbackMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.AllocateIdsRequest, com.google.datastore.v1.AllocateIdsResponse> + getAllocateIdsMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "AllocateIds", + requestType = com.google.datastore.v1.AllocateIdsRequest.class, + responseType = com.google.datastore.v1.AllocateIdsResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.AllocateIdsRequest, com.google.datastore.v1.AllocateIdsResponse> + getAllocateIdsMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.AllocateIdsRequest, com.google.datastore.v1.AllocateIdsResponse> + getAllocateIdsMethod; + if ((getAllocateIdsMethod = DatastoreGrpc.getAllocateIdsMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getAllocateIdsMethod = DatastoreGrpc.getAllocateIdsMethod) == null) { + DatastoreGrpc.getAllocateIdsMethod = + getAllocateIdsMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "AllocateIds")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.AllocateIdsRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.AllocateIdsResponse.getDefaultInstance())) + .setSchemaDescriptor(new DatastoreMethodDescriptorSupplier("AllocateIds")) + .build(); + } + } + } + return getAllocateIdsMethod; + } + + private static volatile io.grpc.MethodDescriptor< + com.google.datastore.v1.ReserveIdsRequest, com.google.datastore.v1.ReserveIdsResponse> + getReserveIdsMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "ReserveIds", + requestType = com.google.datastore.v1.ReserveIdsRequest.class, + responseType = com.google.datastore.v1.ReserveIdsResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.datastore.v1.ReserveIdsRequest, com.google.datastore.v1.ReserveIdsResponse> + getReserveIdsMethod() { + io.grpc.MethodDescriptor< + com.google.datastore.v1.ReserveIdsRequest, com.google.datastore.v1.ReserveIdsResponse> + getReserveIdsMethod; + if ((getReserveIdsMethod = DatastoreGrpc.getReserveIdsMethod) == null) { + synchronized (DatastoreGrpc.class) { + if ((getReserveIdsMethod = DatastoreGrpc.getReserveIdsMethod) == null) { + DatastoreGrpc.getReserveIdsMethod = + getReserveIdsMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ReserveIds")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.ReserveIdsRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.datastore.v1.ReserveIdsResponse.getDefaultInstance())) + .setSchemaDescriptor(new DatastoreMethodDescriptorSupplier("ReserveIds")) + .build(); + } + } + } + return getReserveIdsMethod; + } + + /** Creates a new async stub that supports all call types for the service */ + public static DatastoreStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public DatastoreStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DatastoreStub(channel, callOptions); + } + }; + return DatastoreStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static DatastoreBlockingStub newBlockingStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public DatastoreBlockingStub newStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DatastoreBlockingStub(channel, callOptions); + } + }; + return DatastoreBlockingStub.newStub(factory, channel); + } + + /** Creates a new ListenableFuture-style stub that supports unary calls on the service */ + public static DatastoreFutureStub newFutureStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public DatastoreFutureStub newStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DatastoreFutureStub(channel, callOptions); + } + }; + return DatastoreFutureStub.newStub(factory, channel); + } + + /** + * + * + *
+   * Each RPC normalizes the partition IDs of the keys in its input entities,
+   * and always returns entities with keys with normalized partition IDs.
+   * This applies to all keys and entities, including those in values, except keys
+   * with both an empty path and an empty or unset partition ID. Normalization of
+   * input keys sets the project ID (if not already set) to the project ID from
+   * the request.
+   * 
+ */ + public interface AsyncService { + + /** + * + * + *
+     * Looks up entities by key.
+     * 
+ */ + default void lookup( + com.google.datastore.v1.LookupRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getLookupMethod(), responseObserver); + } + + /** + * + * + *
+     * Queries for entities.
+     * 
+ */ + default void runQuery( + com.google.datastore.v1.RunQueryRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRunQueryMethod(), responseObserver); + } + + /** + * + * + *
+     * Runs an aggregation query.
+     * 
+ */ + default void runAggregationQuery( + com.google.datastore.v1.RunAggregationQueryRequest request, + io.grpc.stub.StreamObserver + responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( + getRunAggregationQueryMethod(), responseObserver); + } + + /** + * + * + *
+     * Begins a new transaction.
+     * 
+ */ + default void beginTransaction( + com.google.datastore.v1.BeginTransactionRequest request, + io.grpc.stub.StreamObserver + responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( + getBeginTransactionMethod(), responseObserver); + } + + /** + * + * + *
+     * Commits a transaction, optionally creating, deleting or modifying some
+     * entities.
+     * 
+ */ + default void commit( + com.google.datastore.v1.CommitRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCommitMethod(), responseObserver); + } + + /** + * + * + *
+     * Rolls back a transaction.
+     * 
+ */ + default void rollback( + com.google.datastore.v1.RollbackRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRollbackMethod(), responseObserver); + } + + /** + * + * + *
+     * Allocates IDs for the given keys, which is useful for referencing an entity
+     * before it is inserted.
+     * 
+ */ + default void allocateIds( + com.google.datastore.v1.AllocateIdsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( + getAllocateIdsMethod(), responseObserver); + } + + /** + * + * + *
+     * Prevents the supplied keys' IDs from being auto-allocated by Cloud
+     * Datastore.
+     * 
+ */ + default void reserveIds( + com.google.datastore.v1.ReserveIdsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getReserveIdsMethod(), responseObserver); + } + } + + /** + * Base class for the server implementation of the service Datastore. + * + *
+   * Each RPC normalizes the partition IDs of the keys in its input entities,
+   * and always returns entities with keys with normalized partition IDs.
+   * This applies to all keys and entities, including those in values, except keys
+   * with both an empty path and an empty or unset partition ID. Normalization of
+   * input keys sets the project ID (if not already set) to the project ID from
+   * the request.
+   * 
+ */ + public abstract static class DatastoreImplBase implements io.grpc.BindableService, AsyncService { + + @java.lang.Override + public final io.grpc.ServerServiceDefinition bindService() { + return DatastoreGrpc.bindService(this); + } + } + + /** + * A stub to allow clients to do asynchronous rpc calls to service Datastore. + * + *
+   * Each RPC normalizes the partition IDs of the keys in its input entities,
+   * and always returns entities with keys with normalized partition IDs.
+   * This applies to all keys and entities, including those in values, except keys
+   * with both an empty path and an empty or unset partition ID. Normalization of
+   * input keys sets the project ID (if not already set) to the project ID from
+   * the request.
+   * 
+ */ + public static final class DatastoreStub extends io.grpc.stub.AbstractAsyncStub { + private DatastoreStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected DatastoreStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DatastoreStub(channel, callOptions); + } + + /** + * + * + *
+     * Looks up entities by key.
+     * 
+ */ + public void lookup( + com.google.datastore.v1.LookupRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getLookupMethod(), getCallOptions()), request, responseObserver); + } + + /** + * + * + *
+     * Queries for entities.
+     * 
+ */ + public void runQuery( + com.google.datastore.v1.RunQueryRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getRunQueryMethod(), getCallOptions()), request, responseObserver); + } + + /** + * + * + *
+     * Runs an aggregation query.
+     * 
+ */ + public void runAggregationQuery( + com.google.datastore.v1.RunAggregationQueryRequest request, + io.grpc.stub.StreamObserver + responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getRunAggregationQueryMethod(), getCallOptions()), + request, + responseObserver); + } + + /** + * + * + *
+     * Begins a new transaction.
+     * 
+ */ + public void beginTransaction( + com.google.datastore.v1.BeginTransactionRequest request, + io.grpc.stub.StreamObserver + responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getBeginTransactionMethod(), getCallOptions()), + request, + responseObserver); + } + + /** + * + * + *
+     * Commits a transaction, optionally creating, deleting or modifying some
+     * entities.
+     * 
+ */ + public void commit( + com.google.datastore.v1.CommitRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getCommitMethod(), getCallOptions()), request, responseObserver); + } + + /** + * + * + *
+     * Rolls back a transaction.
+     * 
+ */ + public void rollback( + com.google.datastore.v1.RollbackRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getRollbackMethod(), getCallOptions()), request, responseObserver); + } + + /** + * + * + *
+     * Allocates IDs for the given keys, which is useful for referencing an entity
+     * before it is inserted.
+     * 
+ */ + public void allocateIds( + com.google.datastore.v1.AllocateIdsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getAllocateIdsMethod(), getCallOptions()), + request, + responseObserver); + } + + /** + * + * + *
+     * Prevents the supplied keys' IDs from being auto-allocated by Cloud
+     * Datastore.
+     * 
+ */ + public void reserveIds( + com.google.datastore.v1.ReserveIdsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getReserveIdsMethod(), getCallOptions()), request, responseObserver); + } + } + + /** + * A stub to allow clients to do synchronous rpc calls to service Datastore. + * + *
+   * Each RPC normalizes the partition IDs of the keys in its input entities,
+   * and always returns entities with keys with normalized partition IDs.
+   * This applies to all keys and entities, including those in values, except keys
+   * with both an empty path and an empty or unset partition ID. Normalization of
+   * input keys sets the project ID (if not already set) to the project ID from
+   * the request.
+   * 
+ */ + public static final class DatastoreBlockingStub + extends io.grpc.stub.AbstractBlockingStub { + private DatastoreBlockingStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected DatastoreBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DatastoreBlockingStub(channel, callOptions); + } + + /** + * + * + *
+     * Looks up entities by key.
+     * 
+ */ + public com.google.datastore.v1.LookupResponse lookup( + com.google.datastore.v1.LookupRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getLookupMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Queries for entities.
+     * 
+ */ + public com.google.datastore.v1.RunQueryResponse runQuery( + com.google.datastore.v1.RunQueryRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getRunQueryMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Runs an aggregation query.
+     * 
+ */ + public com.google.datastore.v1.RunAggregationQueryResponse runAggregationQuery( + com.google.datastore.v1.RunAggregationQueryRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getRunAggregationQueryMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Begins a new transaction.
+     * 
+ */ + public com.google.datastore.v1.BeginTransactionResponse beginTransaction( + com.google.datastore.v1.BeginTransactionRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getBeginTransactionMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Commits a transaction, optionally creating, deleting or modifying some
+     * entities.
+     * 
+ */ + public com.google.datastore.v1.CommitResponse commit( + com.google.datastore.v1.CommitRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getCommitMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Rolls back a transaction.
+     * 
+ */ + public com.google.datastore.v1.RollbackResponse rollback( + com.google.datastore.v1.RollbackRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getRollbackMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Allocates IDs for the given keys, which is useful for referencing an entity
+     * before it is inserted.
+     * 
+ */ + public com.google.datastore.v1.AllocateIdsResponse allocateIds( + com.google.datastore.v1.AllocateIdsRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getAllocateIdsMethod(), getCallOptions(), request); + } + + /** + * + * + *
+     * Prevents the supplied keys' IDs from being auto-allocated by Cloud
+     * Datastore.
+     * 
+ */ + public com.google.datastore.v1.ReserveIdsResponse reserveIds( + com.google.datastore.v1.ReserveIdsRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getReserveIdsMethod(), getCallOptions(), request); + } + } + + /** + * A stub to allow clients to do ListenableFuture-style rpc calls to service Datastore. + * + *
+   * Each RPC normalizes the partition IDs of the keys in its input entities,
+   * and always returns entities with keys with normalized partition IDs.
+   * This applies to all keys and entities, including those in values, except keys
+   * with both an empty path and an empty or unset partition ID. Normalization of
+   * input keys sets the project ID (if not already set) to the project ID from
+   * the request.
+   * 
+ */ + public static final class DatastoreFutureStub + extends io.grpc.stub.AbstractFutureStub { + private DatastoreFutureStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected DatastoreFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new DatastoreFutureStub(channel, callOptions); + } + + /** + * + * + *
+     * Looks up entities by key.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.LookupResponse> + lookup(com.google.datastore.v1.LookupRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getLookupMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Queries for entities.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.RunQueryResponse> + runQuery(com.google.datastore.v1.RunQueryRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getRunQueryMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Runs an aggregation query.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.RunAggregationQueryResponse> + runAggregationQuery(com.google.datastore.v1.RunAggregationQueryRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getRunAggregationQueryMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Begins a new transaction.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.BeginTransactionResponse> + beginTransaction(com.google.datastore.v1.BeginTransactionRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getBeginTransactionMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Commits a transaction, optionally creating, deleting or modifying some
+     * entities.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.CommitResponse> + commit(com.google.datastore.v1.CommitRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getCommitMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Rolls back a transaction.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.RollbackResponse> + rollback(com.google.datastore.v1.RollbackRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getRollbackMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Allocates IDs for the given keys, which is useful for referencing an entity
+     * before it is inserted.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.AllocateIdsResponse> + allocateIds(com.google.datastore.v1.AllocateIdsRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getAllocateIdsMethod(), getCallOptions()), request); + } + + /** + * + * + *
+     * Prevents the supplied keys' IDs from being auto-allocated by Cloud
+     * Datastore.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.datastore.v1.ReserveIdsResponse> + reserveIds(com.google.datastore.v1.ReserveIdsRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getReserveIdsMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_LOOKUP = 0; + private static final int METHODID_RUN_QUERY = 1; + private static final int METHODID_RUN_AGGREGATION_QUERY = 2; + private static final int METHODID_BEGIN_TRANSACTION = 3; + private static final int METHODID_COMMIT = 4; + private static final int METHODID_ROLLBACK = 5; + private static final int METHODID_ALLOCATE_IDS = 6; + private static final int METHODID_RESERVE_IDS = 7; + + private static final class MethodHandlers + implements io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final AsyncService serviceImpl; + private final int methodId; + + MethodHandlers(AsyncService serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_LOOKUP: + serviceImpl.lookup( + (com.google.datastore.v1.LookupRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_RUN_QUERY: + serviceImpl.runQuery( + (com.google.datastore.v1.RunQueryRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_RUN_AGGREGATION_QUERY: + serviceImpl.runAggregationQuery( + (com.google.datastore.v1.RunAggregationQueryRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_BEGIN_TRANSACTION: + serviceImpl.beginTransaction( + (com.google.datastore.v1.BeginTransactionRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_COMMIT: + serviceImpl.commit( + (com.google.datastore.v1.CommitRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_ROLLBACK: + serviceImpl.rollback( + (com.google.datastore.v1.RollbackRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_ALLOCATE_IDS: + serviceImpl.allocateIds( + (com.google.datastore.v1.AllocateIdsRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + case METHODID_RESERVE_IDS: + serviceImpl.reserveIds( + (com.google.datastore.v1.ReserveIdsRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + default: + throw new AssertionError(); + } + } + } + + public static final io.grpc.ServerServiceDefinition bindService(AsyncService service) { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getLookupMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.LookupRequest, com.google.datastore.v1.LookupResponse>( + service, METHODID_LOOKUP))) + .addMethod( + getRunQueryMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.RunQueryRequest, + com.google.datastore.v1.RunQueryResponse>(service, METHODID_RUN_QUERY))) + .addMethod( + getRunAggregationQueryMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.RunAggregationQueryRequest, + com.google.datastore.v1.RunAggregationQueryResponse>( + service, METHODID_RUN_AGGREGATION_QUERY))) + .addMethod( + getBeginTransactionMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.BeginTransactionRequest, + com.google.datastore.v1.BeginTransactionResponse>( + service, METHODID_BEGIN_TRANSACTION))) + .addMethod( + getCommitMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.CommitRequest, com.google.datastore.v1.CommitResponse>( + service, METHODID_COMMIT))) + .addMethod( + getRollbackMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.RollbackRequest, + com.google.datastore.v1.RollbackResponse>(service, METHODID_ROLLBACK))) + .addMethod( + getAllocateIdsMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.AllocateIdsRequest, + com.google.datastore.v1.AllocateIdsResponse>(service, METHODID_ALLOCATE_IDS))) + .addMethod( + getReserveIdsMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.datastore.v1.ReserveIdsRequest, + com.google.datastore.v1.ReserveIdsResponse>(service, METHODID_RESERVE_IDS))) + .build(); + } + + private abstract static class DatastoreBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, + io.grpc.protobuf.ProtoServiceDescriptorSupplier { + DatastoreBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return com.google.datastore.v1.DatastoreProto.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("Datastore"); + } + } + + private static final class DatastoreFileDescriptorSupplier + extends DatastoreBaseDescriptorSupplier { + DatastoreFileDescriptorSupplier() {} + } + + private static final class DatastoreMethodDescriptorSupplier + extends DatastoreBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final java.lang.String methodName; + + DatastoreMethodDescriptorSupplier(java.lang.String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (DatastoreGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = + result = + io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new DatastoreFileDescriptorSupplier()) + .addMethod(getLookupMethod()) + .addMethod(getRunQueryMethod()) + .addMethod(getRunAggregationQueryMethod()) + .addMethod(getBeginTransactionMethod()) + .addMethod(getCommitMethod()) + .addMethod(getRollbackMethod()) + .addMethod(getAllocateIdsMethod()) + .addMethod(getReserveIdsMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/pom.xml b/pom.xml index a90b44f5e..e5ad86dbe 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -159,27 +159,32 @@ com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.api.grpc grpc-google-cloud-datastore-admin-v1 - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.cloud google-cloud-datastore - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.api.grpc proto-google-cloud-datastore-v1 - 0.113.0 + 0.113.0-grpc-experimental-1-SNAPSHOT + + + com.google.api.grpc + grpc-google-cloud-datastore-v1 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.cloud.datastore datastore-v1-proto-client - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT com.google.api.grpc @@ -269,6 +274,7 @@ grpc-google-cloud-datastore-admin-v1 proto-google-cloud-datastore-v1 proto-google-cloud-datastore-admin-v1 + grpc-google-cloud-datastore-v1 datastore-v1-proto-client google-cloud-datastore-bom diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml index 9d3256b3f..73cf77fc1 100644 --- a/proto-google-cloud-datastore-admin-v1/pom.xml +++ b/proto-google-cloud-datastore-admin-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-admin-v1 - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT proto-google-cloud-datastore-admin-v1 Proto library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 2e34da3af..af64cbc94 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.113.0 + 0.113.0-grpc-experimental-1-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java index ff6a54f5b..5eca0ac7e 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java @@ -1264,7 +1264,6 @@ public com.google.datastore.v1.Mutation build() { @java.lang.Override public com.google.datastore.v1.Mutation buildPartial() { com.google.datastore.v1.Mutation result = new com.google.datastore.v1.Mutation(this); - buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto index c0683b9ba..dcddbf27a 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto @@ -501,18 +501,6 @@ message ReserveIdsResponse {} // A mutation to apply to an entity. message Mutation { - // The possible ways to resolve a conflict detected in a mutation. - enum ConflictResolutionStrategy { - // Unspecified. Defaults to `SERVER_VALUE`. - STRATEGY_UNSPECIFIED = 0; - - // The server entity is kept. - SERVER_VALUE = 1; - - // The whole commit request fails. - FAIL = 3; - } - // The mutation operation. // // For `insert`, `update`, and `upsert`: diff --git a/pull-gapic-grpc.sh b/pull-gapic-grpc.sh new file mode 100644 index 000000000..327d7676c --- /dev/null +++ b/pull-gapic-grpc.sh @@ -0,0 +1,42 @@ +# +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +GENERATED_CODE_DIR=$(pwd)/../googleapis-gen +DATASTORE_DIR=$(pwd) + +echo $GENERATED_CODE_DIR +if [ -d "$GENERATED_CODE_DIR" ]; then + echo "Pulling latest changes in ${GENERATED_CODE_DIR}" + pushd $GENERATED_CODE_DIR || exit + git pull + popd || exit +else + echo "Cloning googleapis-gen" + git clone --depth 1 git@github.com:googleapis/googleapis-gen.git $GENERATED_CODE_DIR +fi + +#Copying the required directories +mkdir -p "$DATASTORE_DIR/grpc-google-cloud-datastore-v1" +cp -r "$GENERATED_CODE_DIR/google/datastore/v1/google-cloud-datastore-v1-java/grpc-google-cloud-datastore-v1-java/." \ +"$DATASTORE_DIR/grpc-google-cloud-datastore-v1/." +cp -r "$GENERATED_CODE_DIR/google/datastore/v1/google-cloud-datastore-v1-java/gapic-google-cloud-datastore-v1-java/." \ +"$DATASTORE_DIR/google-cloud-datastore/." + +#Cleaning up unwanted files +rm grpc-google-cloud-datastore-v1/build.gradle +rm google-cloud-datastore/build.gradle + +echo "Success" diff --git a/samples/pom.xml b/samples/pom.xml index 56fd2ae2c..f8d684ea8 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -31,6 +31,7 @@ install-without-bom snapshot snippets + native-image-sample diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 973390f5d..4020da281 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 2.22.0 + 2.22.0-grpc-experimental-1-SNAPSHOT diff --git a/versions.txt b/versions.txt index 191d0abf1..b76581343 100644 --- a/versions.txt +++ b/versions.txt @@ -1,9 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-datastore:2.22.0:2.22.0 -google-cloud-datastore-bom:2.22.0:2.22.0 -proto-google-cloud-datastore-v1:0.113.0:0.113.0 -datastore-v1-proto-client:2.22.0:2.22.0 -proto-google-cloud-datastore-admin-v1:2.22.0:2.22.0 -grpc-google-cloud-datastore-admin-v1:2.22.0:2.22.0 +google-cloud-datastore:2.22.0:2.22.0-grpc-experimental-1-SNAPSHOT +google-cloud-datastore-bom:2.22.0:2.22.0-grpc-experimental-1-SNAPSHOT +proto-google-cloud-datastore-v1:0.113.0:0.113.0-grpc-experimental-1-SNAPSHOT +datastore-v1-proto-client:2.22.0:2.22.0-grpc-experimental-1-SNAPSHOT +proto-google-cloud-datastore-admin-v1:2.22.0:2.22.0-grpc-experimental-1-SNAPSHOT +grpc-google-cloud-datastore-admin-v1:2.22.0:2.22.0-grpc-experimental-1-SNAPSHOT +grpc-google-cloud-datastore-v1:2.22.0:2.22.0-grpc-experimental-1-SNAPSHOT From 1d84430139cd8660bced8c34a972d3fd1430574a Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:55:46 -0700 Subject: [PATCH 097/102] Update datastore grpc version --- .readme-partials.yaml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.readme-partials.yaml b/.readme-partials.yaml index ced21e49f..c999cf6b5 100644 --- a/.readme-partials.yaml +++ b/.readme-partials.yaml @@ -129,7 +129,7 @@ custom_content: | com.google.cloud google-cloud-datastore - 2.20.0-grpc-experimental-1-SNAPSHOT + 2.22.0-grpc-experimental-1-SNAPSHOT ``` diff --git a/README.md b/README.md index ec71bc23e..265f21131 100644 --- a/README.md +++ b/README.md @@ -229,7 +229,7 @@ mvn clean install -DskipTests=true com.google.cloud google-cloud-datastore - 2.20.0-grpc-experimental-1-SNAPSHOT + 2.22.0-grpc-experimental-1-SNAPSHOT ``` From 8290c23e5752ec56409b3a549b3bdd9501adb5d4 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:42:18 -0700 Subject: [PATCH 098/102] update grpc datastore admin version --- grpc-google-cloud-datastore-v1/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grpc-google-cloud-datastore-v1/pom.xml b/grpc-google-cloud-datastore-v1/pom.xml index 23476b2dc..d25743cc8 100644 --- a/grpc-google-cloud-datastore-v1/pom.xml +++ b/grpc-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-datastore-v1 - 2.20.0-grpc-experimental-1-SNAPSHOT + 2.22.0-grpc-experimental-1-SNAPSHOT grpc-google-cloud-datastore-v1 GRPC library for google-cloud-datastore com.google.cloud google-cloud-datastore-parent - 2.20.0-grpc-experimental-1-SNAPSHOT + 2.22.0-grpc-experimental-1-SNAPSHOT From 3a09f726b5e1dddf08f6ad0f3ad210d8d7d04e9e Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:15:13 -0700 Subject: [PATCH 099/102] Add create function for gRPC --- .../google/cloud/datastore/testing/RemoteDatastoreHelper.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java index 9e00085ee..05ce58441 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java @@ -94,6 +94,10 @@ public static RemoteDatastoreHelper create(String databaseId, @Nullable OpenTele return create(databaseId, DatastoreOptions.getDefaultHttpTransportOptions(), openTelemetrySdk); } + public static RemoteDatastoreHelper create(String databaseId, TransportOptions transportOptions) { + return create(databaseId, transportOptions, /*openTelemetrySdk=*/ null); + } + /** Creates a {@code RemoteStorageHelper} object. */ public static RemoteDatastoreHelper create( String databaseId, TransportOptions transportOptions, @Nullable OpenTelemetrySdk openTelemetrySdk) { From ea518041d89e8b382738ebd0f007ba034514d480 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:42:07 -0700 Subject: [PATCH 100/102] mvn formatting --- .../datastore/testing/RemoteDatastoreHelper.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java index 05ce58441..dd8c3e8ad 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java @@ -79,18 +79,21 @@ public void deleteNamespace() { /** Creates a {@code RemoteStorageHelper} object. */ public static RemoteDatastoreHelper create() { - return create("", DatastoreOptions.getDefaultHttpTransportOptions(), /*openTelemetrySdk=*/ null); + return create( + "", DatastoreOptions.getDefaultHttpTransportOptions(), /*openTelemetrySdk=*/ null); } public static RemoteDatastoreHelper create(String databaseId) { - return create(databaseId, DatastoreOptions.getDefaultHttpTransportOptions(), /*openTelemetrySdk=*/ null); + return create( + databaseId, DatastoreOptions.getDefaultHttpTransportOptions(), /*openTelemetrySdk=*/ null); } public static RemoteDatastoreHelper create(TransportOptions transportOptions) { return create("", transportOptions, /*openTelemetrySdk=*/ null); } - public static RemoteDatastoreHelper create(String databaseId, @Nullable OpenTelemetrySdk openTelemetrySdk) { + public static RemoteDatastoreHelper create( + String databaseId, @Nullable OpenTelemetrySdk openTelemetrySdk) { return create(databaseId, DatastoreOptions.getDefaultHttpTransportOptions(), openTelemetrySdk); } @@ -100,7 +103,9 @@ public static RemoteDatastoreHelper create(String databaseId, TransportOptions t /** Creates a {@code RemoteStorageHelper} object. */ public static RemoteDatastoreHelper create( - String databaseId, TransportOptions transportOptions, @Nullable OpenTelemetrySdk openTelemetrySdk) { + String databaseId, + TransportOptions transportOptions, + @Nullable OpenTelemetrySdk openTelemetrySdk) { DatastoreOptions.Builder datastoreOptionBuilder = DatastoreOptions.newBuilder() .setDatabaseId(databaseId) @@ -108,7 +113,8 @@ public static RemoteDatastoreHelper create( .setRetrySettings(retrySettings()) .setTransportOptions(transportOptions); if (transportOptions instanceof GrpcTransportOptions) { - datastoreOptionBuilder = datastoreOptionBuilder.setTransportOptions((GrpcTransportOptions) transportOptions); + datastoreOptionBuilder = + datastoreOptionBuilder.setTransportOptions((GrpcTransportOptions) transportOptions); } else { datastoreOptionBuilder = datastoreOptionBuilder.setTransportOptions(transportOptions); } From 7627e38789db8c26f707c86558d3ee326e9a6e29 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Mon, 14 Oct 2024 17:09:26 -0700 Subject: [PATCH 101/102] Resolve merge errors --- .../main/java/com/google/datastore/v1/Mutation.java | 1 + .../main/proto/google/datastore/v1/datastore.proto | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java index 5eca0ac7e..ff6a54f5b 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Mutation.java @@ -1264,6 +1264,7 @@ public com.google.datastore.v1.Mutation build() { @java.lang.Override public com.google.datastore.v1.Mutation buildPartial() { com.google.datastore.v1.Mutation result = new com.google.datastore.v1.Mutation(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto index dcddbf27a..c0683b9ba 100644 --- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto +++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto @@ -501,6 +501,18 @@ message ReserveIdsResponse {} // A mutation to apply to an entity. message Mutation { + // The possible ways to resolve a conflict detected in a mutation. + enum ConflictResolutionStrategy { + // Unspecified. Defaults to `SERVER_VALUE`. + STRATEGY_UNSPECIFIED = 0; + + // The server entity is kept. + SERVER_VALUE = 1; + + // The whole commit request fails. + FAIL = 3; + } + // The mutation operation. // // For `insert`, `update`, and `upsert`: From 405c7ba8ce418c5c30feb791c0ccb9e917127fa9 Mon Sep 17 00:00:00 2001 From: Cindy Peng <148148319+cindy-peng@users.noreply.github.com> Date: Tue, 15 Oct 2024 09:26:07 -0700 Subject: [PATCH 102/102] Resolve merging transport option error --- .../google/cloud/datastore/testing/RemoteDatastoreHelper.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java index dd8c3e8ad..c35cbf669 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/RemoteDatastoreHelper.java @@ -110,8 +110,7 @@ public static RemoteDatastoreHelper create( DatastoreOptions.newBuilder() .setDatabaseId(databaseId) .setNamespace(UUID.randomUUID().toString()) - .setRetrySettings(retrySettings()) - .setTransportOptions(transportOptions); + .setRetrySettings(retrySettings()); if (transportOptions instanceof GrpcTransportOptions) { datastoreOptionBuilder = datastoreOptionBuilder.setTransportOptions((GrpcTransportOptions) transportOptions);