Skip to content

Commit

Permalink
feat: enable experimental grpc support (#1419)
Browse files Browse the repository at this point in the history
* chore: Importing auto-generated code from googleapis-gen (#1235)

* Script to setup generated code from googleapis-gen

* fixing script and gitignore

* adding generated code

* add maven config for new grpc module

* fixing script

* owlbot config to fetch grpc and gapic modules for V1

* fix lint

* Revert "add maven config for new grpc module"

This reverts commit 7769d8083a84f3ae9255c51c3ecb01fbfdd49320.

* Reapply "add maven config for new grpc module"

This reverts commit 759475d121afa772f66f549958e8b092cf3c5f0a.

* remove unused dependency

* fix library version

* fix library version

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* removing exclusion of grpc-google-cloud-datastore-v1 module from repo metadata

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* refactor: Swap usage of HttpDatastoreRpc with GrpcDatastoreRpc (#1240)

* Create basic structure of GrpcDatastoreRpc and using it in DatastoreOptions

* applying unary settings to all the unary methods

* Configuring header provider for GrpcDatastoreRpc

* fixing emulator tests to be able to run successfully with grpc now

* ignoring one more test which will be fixed in actionable error implementation

* Making HttpDatastoreRpc completely unused

* Making GrpcDatastoreRpc implement AutoCloseable

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* incorporating feedbacks

* pinging emulator after each test for debugging

* Revert "pinging emulator after each test for debugging"

This reverts commit 60ee45d27412aab8140fc7065010633cf59a0ae8.

* Reapply "pinging emulator after each test for debugging"

This reverts commit d42e3b995fe56ded8c5f080a262e8ea02c00c9d9.

* more debugging

* Constant ping to avoid flaky behaviour of /shutdown endpoint

* fixing test

* checking if emulator is running  before sending a shutdown command

* fix lint

* implement helper method for localhost

* fix header lint

* moving emulator health check to src/test

* fix lint

* adding no extra headers

* minor cleanup

* using mutlipleAttemptsRule in DatastoreTest

* Revert "adding no extra headers"

This reverts commit 9b43798422dc0627b1b2bc6dea8b9f4169682292.

* using classRule

---------

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>

* feat!: Actionable Error (#1244)

* Create basic structure of GrpcDatastoreRpc and using it in DatastoreOptions

* applying unary settings to all the unary methods

* Configuring header provider for GrpcDatastoreRpc

* fixing emulator tests to be able to run successfully with grpc now

* ignoring one more test which will be fixed in actionable error implementation

* Making HttpDatastoreRpc completely unused

* Making GrpcDatastoreRpc implement AutoCloseable

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* incorporating feedbacks

* pinging emulator after each test for debugging

* Revert "pinging emulator after each test for debugging"

This reverts commit 60ee45d27412aab8140fc7065010633cf59a0ae8.

* Reapply "pinging emulator after each test for debugging"

This reverts commit d42e3b995fe56ded8c5f080a262e8ea02c00c9d9.

* more debugging

* Constant ping to avoid flaky behaviour of /shutdown endpoint

* fixing test

* checking if emulator is running  before sending a shutdown command

* fix lint

* implement helper method for localhost

* fix header lint

* moving emulator health check to src/test

* fix lint

* adding no extra headers

* minor cleanup

* Making DatastoreException extend BaseGrpcServiceException

* Creating DatastoreException through ApiException and exposing methods to extract out domain, reason and metadata

* Wrapping ApiException in DatastoreException before throwing it

* adding clirr configuration

* javadoc for getReason

* deleting unused file

* enabling tests which were ignore for actionable error implementation

* added clirr comments

* fix lint

---------

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>

* feat!: Making Datastore implement Closeable (#1246)

* Making Datastore closeable and fixing integration test

* Closing datastore in datastore test

* fix lint

* fix clirr config

* test to verify if datastore client is getting closed after invoking close() method

* Using a consistent port and reinitializing Datastore instance in @BeforeClass method

* trying to fix connection reset problem

* upgrading datastore emulator to fix DatastoreTest

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* feat: enabling regapic by giving an option to user to use http (#1261)

* feat: enabling regapic by giving an option to user to use http

* enabling retry settings

* fix lint

* fix deps failure

* fix deps failure

* trying out ipv6 address resolution

* Revert "trying out ipv6 address resolution"

This reverts commit 1bf0e299b163df5ad7c510fdce6dc71d681801b5.

* upgrading emulator

* fix lint

* downgrading to 2.0.2 to maintain java 8 compatibility

* incorporating feedbacks

* test retry settings while configuring DatastoreRpc instance

* fix test

* fix header

* fix clirr check

* fix lint

* fix integration test

* fix lint

* incorporating feedback

* test: Creating multi db rule to run tests multiple times against different named databases. (#1270)

* integrating aggregation integration test with multidb rule

* integrating multidb rule with ITDatastoreTest

* addressing feedbacks

* feat: remove `@BetaApi` annotations from get/setDatabaseId methods (#1277)

Cherry pick of #1272

* feat!: mark interfaces as `@InternalExtensionOnly` (#1275)

* feat!: mark interfaces as `@InternalExtensionOnly`

* lint

* refactor: rename internal class QueryAndReadOptions to QueryConfig (#1245) (#1283)

(cherry picked from commit 41d43e852d07a9026ae5be2add860c1f6980c7d6)

* deps: remove dependency on datastore-v1-proto-client module in google-cloud-datastore (#1281)

* feat: use existing transport options API to set transport (#1276)

* feat: use existing transport options API to set transport

* lint

* remove stale test

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* deps: bump com.google.truth:truth from 1.1.5 to 1.4.0 (#1323)

Bumps [com.google.truth:truth](https://togithub.com/google/truth) from 1.1.5 to 1.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/google/truth/releases">com.google.truth:truth's releases</a>.</em></p>
<blockquote>
<h2>1.4.0</h2>
<p>In this release, our assertions on Java 8 types continue to move from the <code>Truth8</code> class to the main <code>Truth</code> class. This change should not break compatibility for any supported JDK or Android version, even users who test under old versions of Android without <a href="https://developer.android.com/studio/write/java8-support#library-desugaring">API desugaring</a>. Additionally, we will never break binary compatibility, though some users will have to make changes to their source code in order for it to compile against newer versions.</p>
<p>This release is likely to lead to more <strong>build failures</strong> than <a href="https://togithub.com/google/truth/releases/tag/v1.3.0">1.3.0</a> did. However, those failures should be <strong>straightforward to fix</strong>.</p>
<h2>Example build failure</h2>
<pre><code>Foo.java:152: error: reference to assertThat is ambiguous
    assertThat(repo.findFileWithName(&quot;foo&quot;)).isNull();
    ^
  both method assertThat(@org.jspecify.nullness.Nullable Path) in Truth8 and method assertThat(@org.jspecify.nullness.Nullable Path) in Truth match
</code></pre>
<h2>Simplest upgrade strategy (if you can update all your code atomically in the same commit as the Truth upgrade)</h2>
<p>In the same commit:</p>
<ol>
<li>Upgrade Truth to 1.4.0.</li>
<li>Replace <code>import static com.google.common.truth.Truth8.assertThat;</code> with <code>import static com.google.common.truth.Truth.assertThat;</code>.
<ul>
<li>If you use Kotlin, replace <code>import com.google.common.truth.Truth8.assertThat</code> with <code>import com.google.common.truth.Truth.assertThat</code>.</li>
</ul>
</li>
<li>Replace <code>import com.google.common.truth.Truth8;</code> with <code>import com.google.common.truth.Truth;</code>.
<ul>
<li>again, similarly for Kotlin if needed</li>
</ul>
</li>
<li>Optionally replace remaining references to <code>Truth8</code> with references to <code>Truth</code>.
<ul>
<li>For example, replace <code>Truth8.assertThat(optional).isPresent()</code> with <code>Truth.assertThat(optional).isPresent()</code>.</li>
</ul>
</li>
</ol>
<p>If you're feeling lucky, you can try this one-liner for the code updates:</p>
<pre lang="sh"><code>git grep -l Truth8 | xargs perl -pi -e 's/import static com.google.common.truth.Truth8.assertThat;/import static com.google.common.truth.Truth.assertThat;/g; s/import com.google.common.truth.Truth8.assertThat/import com.google.common.truth.Truth.assertThat/g; s/import com.google.common.truth.Truth8/import com.google.common.truth.Truth/g; s/\bTruth8[.]/Truth./g;'
</code></pre>
<p>In most cases, that can be further simplified to:</p>
<pre lang="sh"><code>git grep -l Truth8 | xargs perl -pi -e 's/\bTruth8\b/Truth/g;'
</code></pre>
<p>After that process, it is possible that you'll still see build errors from ambiguous usages of <code>assertThat</code> static imports. If so, you can find a workaround in the section about overload ambiguity in the release notes for <a href="https://togithub.com/google/truth/releases/tag/v1.3.0">1.3.0</a>. Alternatively, you can wait to upgrade until after a future Truth release, which will eliminate the ambiguity by changing the signatures of some <code>Truth.assertThat</code> overloads.</p>
<h2>Incremental upgrade strategy</h2>
<p>If you have a very large repo or you have other reasons to prefer to upgrade incrementally, you can use the approach that we used inside Google. Roughly, that approach was:</p>
<ol>
<li>Make the optional changes discussed in the release notes for <a href="https://togithub.com/google/truth/releases/tag/v1.3.0">1.3.0</a>.</li>
<li>For any remaining calls to <code>Truth8.assertThat</code>, change them to <em>avoid</em> static import.
<ul>
<li>That is, replace <code>assertThat(optional).isPresent()</code> with <code>Truth8.assertThat(optional).isPresent()</code>.</li>
</ul>
</li>
<li>Upgrade Truth to 1.4.0.</li>
<li>Optionally replace references to <code>Truth8</code> with references to <code>Truth</code> (including restoring static imports if desired), as discussed in section about the simple upgrade strategy above.</li>
</ol>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/google/truth/commit/2e8e48845cfa51a457ee150fe4b620e847c968c9"><code>2e8e488</code></a> Set version number for truth-parent to 1.4.0.</li>
<li><a href="https://togithub.com/google/truth/commit/1f81827f1b5512cb1bb4e09b1cd688337b155e0c"><code>1f81827</code></a> Copy <code>Truth8.assertThat</code> overloads for <code>Path</code> and <code>OptionalLong</code> to the main ...</li>
<li><a href="https://togithub.com/google/truth/commit/9be8e774ca41a2a85c49d203bc47dac78861aeaa"><code>9be8e77</code></a> Copy remaining <code>Truth8.assertThat</code> overloads to the main <code>Truth</code> class—except...</li>
<li><a href="https://togithub.com/google/truth/commit/b02a6583a9c9e6db9cf3725f542743ec0faf055f"><code>b02a658</code></a> Migrate most usages of <code>Truth8.assertThat</code> to equivalent usages of `Truth.ass...</li>
<li><a href="https://togithub.com/google/truth/commit/09993692eae0f278eea6fa123b1a5e4ecdd00720"><code>0999369</code></a> Automated Code Change</li>
<li><a href="https://togithub.com/google/truth/commit/7c65fc611d102c82b7218073315421656a5a19ca"><code>7c65fc6</code></a> Make it possible to write <code>expect.that(optionalInt).isPresent()</code>, `assertWith...</li>
<li><a href="https://togithub.com/google/truth/commit/87b371df11b3d2f477a29b6568c943daffa50643"><code>87b371d</code></a> Bump styfle/cancel-workflow-action from 0.12.0 to 0.12.1</li>
<li><a href="https://togithub.com/google/truth/commit/93b4d93721ae84b10590963f8cf17364af8ce385"><code>93b4d93</code></a> Add <code>@since</code> tags for the first batch of Java-8-related APIs.</li>
<li><a href="https://togithub.com/google/truth/commit/78d27dd4716c06afdd4df47485716cda1d8fe80a"><code>78d27dd</code></a> Remove stale suppressions.</li>
<li><a href="https://togithub.com/google/truth/commit/7be930d21593375dbecbd39352fd38862f7a2cec"><code>7be930d</code></a> Bump actions/cache from 3.3.3 to 4.0.0</li>
<li>Additional commits viewable in <a href="https://togithub.com/google/truth/compare/v1.1.5...v1.4.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.truth:truth&package-manager=maven&previous-version=1.1.5&new-version=1.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* deps: bump com.google.cloud:google-cloud-shared-config from 1.6.1 to 1.7.1 (#1324)

Bumps [com.google.cloud:google-cloud-shared-config](https://togithub.com/googleapis/java-shared-config) from 1.6.1 to 1.7.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/googleapis/java-shared-config/releases">com.google.cloud:google-cloud-shared-config's releases</a>.</em></p>
<blockquote>
<h2>v1.7.1</h2>
<h2><a href="https://togithub.com/googleapis/java-shared-config/compare/v1.7.0...v1.7.1">1.7.1</a> (2023-12-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Move release configs to native-image-shared-config (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/725">#725</a>) (<a href="https://togithub.com/googleapis/java-shared-config/commit/58ffb4e8218ac98b516e01b68b34b54b4cecec98">58ffb4e</a>)</li>
</ul>
<h2>v1.7.0</h2>
<h2><a href="https://togithub.com/googleapis/java-shared-config/compare/v1.6.1...v1.7.0">1.7.0</a> (2023-12-04)</h2>
<h3>Features</h3>
<ul>
<li>Separate native-image-shared-config into its own module (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/712">#712</a>) (<a href="https://togithub.com/googleapis/java-shared-config/commit/567fecb2fd80bd6e2fe509e4c2a97685f35e2b84">567fecb</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://togithub.com/googleapis/java-shared-config/blob/main/CHANGELOG.md">com.google.cloud:google-cloud-shared-config's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://togithub.com/googleapis/java-shared-config/compare/v1.7.0...v1.7.1">1.7.1</a> (2023-12-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Move release configs to native-image-shared-config (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/725">#725</a>) (<a href="https://togithub.com/googleapis/java-shared-config/commit/58ffb4e8218ac98b516e01b68b34b54b4cecec98">58ffb4e</a>)</li>
</ul>
<h2><a href="https://togithub.com/googleapis/java-shared-config/compare/v1.6.1...v1.7.0">1.7.0</a> (2023-12-04)</h2>
<h3>Features</h3>
<ul>
<li>Separate native-image-shared-config into its own module (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/712">#712</a>) (<a href="https://togithub.com/googleapis/java-shared-config/commit/567fecb2fd80bd6e2fe509e4c2a97685f35e2b84">567fecb</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/f5f57c87d33a9aca05b3bd1cca949be5f49ce5a2"><code>f5f57c8</code></a> chore(main): release 1.7.1 (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/727">#727</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/9fcbe9ecf839c598982986e3d751e32714283377"><code>9fcbe9e</code></a> chore: update release-please.yml to include cloudbuild test yamls (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/728">#728</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/c432bae8bd5eaf5f12d18553bbe6ba3d64d56cc8"><code>c432bae</code></a> chore(main): release 1.7.1-SNAPSHOT (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/719">#719</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/58ffb4e8218ac98b516e01b68b34b54b4cecec98"><code>58ffb4e</code></a> fix: move release configs to native-image-shared-config (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/725">#725</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/8d411bcdc1bf6b35b62f1ff47e11e75ad83c9562"><code>8d411bc</code></a> ci: Update ci.yaml to introduce Java 21 unit testing (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/1907">#1907</a>) (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/717">#717</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/3382cee280436cdeebb44ee76bf028022bde2de3"><code>3382cee</code></a> chore: add downstream check for native image tests in cloud build (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/715">#715</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/b22a75aa2e24bf37cd590e190d30afafb0185c36"><code>b22a75a</code></a> chore: update graalvm docker image for 1.7.0 release (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/720">#720</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/93824e52db74f661f0e3916f1a8bdcbfd5f0ccff"><code>93824e5</code></a> chore(main): release 1.7.0 (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/716">#716</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/7435981d8733beb23204b67f4950007fbc277cc3"><code>7435981</code></a> chore: remove docker validation check (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/718">#718</a>)</li>
<li><a href="https://togithub.com/googleapis/java-shared-config/commit/567fecb2fd80bd6e2fe509e4c2a97685f35e2b84"><code>567fecb</code></a> feat: separate native-image-shared-config into its own module (<a href="https://redirect.github.com/googleapis/java-shared-config/issues/712">#712</a>)</li>
<li>Additional commits viewable in <a href="https://togithub.com/googleapis/java-shared-config/compare/v1.6.1...v1.7.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.cloud:google-cloud-shared-config&package-manager=maven&previous-version=1.6.1&new-version=1.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* deps: bump com.google.cloud:google-cloud-shared-dependencies from 3.19.0 to 3.24.0 (#1325)

Bumps com.google.cloud:google-cloud-shared-dependencies from 3.19.0 to 3.24.0.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.cloud:google-cloud-shared-dependencies&package-manager=maven&previous-version=3.19.0&new-version=3.24.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* deps: bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1 (#1327)

Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://togithub.com/apache/maven-compiler-plugin) from 3.11.0 to 3.12.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/apache/maven-compiler-plugin/releases">org.apache.maven.plugins:maven-compiler-plugin's releases</a>.</em></p>
<blockquote>
<h2>3.12.1</h2>
<!-- raw HTML omitted -->
<h2>🐛 Bug Fixes</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-567">[MCOMPILER-567]</a> - Fail to compile if the generated-sources/annotation… (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/218">#218</a>) <a href="https://togithub.com/jorsol"><code>@​jorsol</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-568">[MCOMPILER-568]</a> - Bump plexusCompilerVersion from 2.14.1 to 2.14.2 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/220">#220</a>) <a href="https://togithub.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<h2>3.12.0</h2>
<!-- raw HTML omitted -->
<h2>🚀 New features and improvements</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-562">[MCOMPILER-562]</a> - Add property maven.compiler.outputDirectory to CompilerMojo (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/213">#213</a>) <a href="https://togithub.com/jGauravGupta"><code>@​jGauravGupta</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-381">[MCOMPILER-381]</a> - Refactor incremental detection (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/181">#181</a>) <a href="https://togithub.com/jorsol"><code>@​jorsol</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-542">[MCOMPILER-542]</a> - Clean JDK patch version in module-info.class  (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/208">#208</a>) <a href="https://togithub.com/jorsol"><code>@​jorsol</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-558">[MCOMPILER-558]</a> - compileSourceRoots in testCompile should be writable (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/209">#209</a>) <a href="https://togithub.com/lorenzsimon"><code>@​lorenzsimon</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-559">[MCOMPILER-559]</a> - Warn if overwriting the project's artifact's file to a different value (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/211">#211</a>) <a href="https://togithub.com/gnodet"><code>@​gnodet</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-550">[MCOMPILER-550]</a> - make outputDirectory writable (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/202">#202</a>) <a href="https://togithub.com/bmarwell"><code>@​bmarwell</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-549">[MCOMPILER-549]</a> - Improve log message in case of recompilation - fix jenkins build (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/203">#203</a>) <a href="https://togithub.com/slawekjaranowski"><code>@​slawekjaranowski</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-549">[MCOMPILER-549]</a> - Improve log message in case of recompilation (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/201">#201</a>) <a href="https://togithub.com/BrowneMonke"><code>@​BrowneMonke</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-391">[MCOMPILER-391]</a> - Use dep mgmt when resolving annotation processors and their deps (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/180">#180</a>) <a href="https://togithub.com/psiroky"><code>@​psiroky</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-531">[MCOMPILER-531]</a> - Prepare for Java 20(-ea) (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/184">#184</a>) <a href="https://togithub.com/slachiewicz"><code>@​slachiewicz</code></a></li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-333">[MCOMPILER-333]</a> - Cleanup generated source files (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/214">#214</a>) <a href="https://togithub.com/jorsol"><code>@​jorsol</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-544">[MCOMPILER-544]</a> - don't add items to classpath that are not used for that (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/198">#198</a>) <a href="https://togithub.com/laeubi"><code>@​laeubi</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-547">[MCOMPILER-547]</a> - : Initialize pathElements to empty (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/199">#199</a>) <a href="https://togithub.com/rovarga"><code>@​rovarga</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-564">[MCOMPILER-564]</a> - Bump plexusCompilerVersion from 2.13.0 to 2.14.1 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/216">#216</a>) <a href="https://togithub.com/dependabot"><code>@​dependabot</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-557">[MCOMPILER-557]</a> - Upgrade maven-plugin parent to 41 - fix build (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/210">#210</a>) <a href="https://togithub.com/slawekjaranowski"><code>@​slawekjaranowski</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-554">[MCOMPILER-554]</a> - Update plexus-java to 1.2.0 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/207">#207</a>) <a href="https://togithub.com/jorsol"><code>@​jorsol</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-551">[MCOMPILER-551]</a> - Upgrade Parent to 40 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/205">#205</a>) <a href="https://togithub.com/slawekjaranowski"><code>@​slawekjaranowski</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-541">[MCOMPILER-541]</a> - update maven-shared-utils to 3.4.2 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/195">#195</a>) <a href="https://togithub.com/elharo"><code>@​elharo</code></a></li>
<li>Bump apache/maven-gh-actions-shared from 2 to 3 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/182">#182</a>) <a href="https://togithub.com/dependabot"><code>@​dependabot</code></a></li>
<li>Bump maven-invoker-plugin from 3.4.0 to 3.5.0 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/179">#179</a>) <a href="https://togithub.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<h2>👻 Maintenance</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-565">[MCOMPILER-565]</a> - Allow project build by Maven 4 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/217">#217</a>) <a href="https://togithub.com/slawekjaranowski"><code>@​slawekjaranowski</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MCOMPILER-552">[MCOMPILER-552]</a> - Refresh download page (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/204">#204</a>) <a href="https://togithub.com/slawekjaranowski"><code>@​slawekjaranowski</code></a></li>
<li>Remove references to old Maven versions. (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/194">#194</a>) <a href="https://togithub.com/elharo"><code>@​elharo</code></a></li>
<li>(doc) Drop unused and vulnerable dependency to log4j (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/190">#190</a>) <a href="https://togithub.com/slachiewicz"><code>@​slachiewicz</code></a></li>
<li><a href="https://issues.apache.org/jira/browse/MNG-6829">[MNG-6829]</a> - Replace StringUtils#isEmpty(String) &amp; #isNotEmpty(String) (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/189">#189</a>) <a href="https://togithub.com/timtebeek"><code>@​timtebeek</code></a></li>
<li>Update plexus-utils to 3.0.24 - in its (<a href="https://redirect.github.com/apache/maven-compiler-plugin/pull/183">#183</a>) <a href="https://togithub.com/slachiewicz"><code>@​slachiewicz</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/736da68adf543cf56cd82a68e5ad28d397ace2f4"><code>736da68</code></a> [maven-release-plugin] prepare release maven-compiler-plugin-3.12.1</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/ef93f3dbf4ad57adf73f7fca64bb5b659041f217"><code>ef93f3d</code></a> [MCOMPILER-568] Bump plexusCompilerVersion from 2.14.1 to 2.14.2 (<a href="https://redirect.github.com/apache/maven-compiler-plugin/issues/220">#220</a>)</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/eb7840cf9f0d29c1cf805c5aec180f7f78e454ac"><code>eb7840c</code></a> [MCOMPILER-567] - Fail to compile if the &quot;generated-sources/annotations&quot; does...</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/2a7a73b34b9e9d244fbf154783437c71a6d32f5f"><code>2a7a73b</code></a> [maven-release-plugin] prepare for next development iteration</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/c08b0fda5445a2a3f495a3d6524d80c82fc9d5e6"><code>c08b0fd</code></a> [maven-release-plugin] prepare release maven-compiler-plugin-3.12.0</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/a1c5b133a1f4f927cc8e4ec6024062dcd69df91e"><code>a1c5b13</code></a> [MCOMPILER-565] Allow project build by Maven 4</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/48557736437d9ebae20510519080cb047d01c8cd"><code>4855773</code></a> Bump plexusCompilerVersion from 2.13.0 to 2.14.1</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/1d053422bde8ef0f0d1a1901a0b00e56c5e62571"><code>1d05342</code></a> [MCOMPILER-562] Add property maven.compiler.outputDirectory to CompilerMojo (...</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/ea74978da1aca9fbb1fe11456065ce114456afd9"><code>ea74978</code></a> [MCOMPILER-381] - Refactor incremental detection (<a href="https://redirect.github.com/apache/maven-compiler-plugin/issues/181">#181</a>)</li>
<li><a href="https://togithub.com/apache/maven-compiler-plugin/commit/fd37f0934f152ea26a4d9b5c97dd3db6db465e7e"><code>fd37f09</code></a> [MCOMPILER-333] Cleanup generated source files (<a href="https://redirect.github.com/apache/maven-compiler-plugin/issues/214">#214</a>)</li>
<li>Additional commits viewable in <a href="https://togithub.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.11.0...maven-compiler-plugin-3.12.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.maven.plugins:maven-compiler-plugin&package-manager=maven&previous-version=3.11.0&new-version=3.12.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* test(deps): upgrade errorprone to 2.24.0 (#1271) (#1329)

* test(deps): upgrade errorprone to 2.24.0 (#1271)

* deps: upgrade errorprone to 2.24.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 <gcf-owl-bot[bot]@users.noreply.github.com>

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* deps: bump com.google.errorprone:error_prone_core from 2.23.0 to 2.24.1 (#1326)

Bumps [com.google.errorprone:error_prone_core](https://togithub.com/google/error-prone) from 2.23.0 to 2.24.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/google/error-prone/releases">com.google.errorprone:error_prone_core's releases</a>.</em></p>
<blockquote>
<h2>Error Prone 2.24.1</h2>
<p>Changes:</p>
<ul>
<li>Add an assertion to try to help debug <a href="https://redirect.github.com/google/error-prone/issues/4225">google/error-prone#4225</a></li>
</ul>
<p>Full Changelog: <a href="https://togithub.com/google/error-prone/compare/v2.24.0...v2.24.1">https://togithub.com/google/error-prone/compare/v2.24.0...v2.24.1</a></p>
<h2>Error Prone 2.24.0</h2>
<p>New checks:</p>
<ul>
<li><a href="https://errorprone.info/bugpattern/MultipleNullnessAnnotations"><code>MultipleNullnessAnnotations</code></a>: Discourage multiple nullness annotations</li>
<li><a href="https://errorprone.info/bugpattern/NullableTypeParameter"><code>NullableTypeParameter</code></a>: Discourage nullness annotations on type parameters</li>
<li><a href="https://errorprone.info/bugpattern/NullableWildcard"><code>NullableWildcard</code></a>: Discourage nullness annotations on wildcards</li>
<li><a href="https://errorprone.info/bugpattern/SuperCallToObjectMethod"><code>SuperCallToObjectMethod</code></a>: Generalization of <code>SuperEqualsIsObjectEquals</code>, now covers <code>hashCode</code></li>
</ul>
<p>Full Changelog: <a href="https://togithub.com/google/error-prone/compare/v2.23.0...v2.24.0">https://togithub.com/google/error-prone/compare/v2.23.0...v2.24.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/google/error-prone/commit/ecf7e103b265b3f51ce8e317fe9ddf4e9477c98e"><code>ecf7e10</code></a> Release Error Prone 2.24.1</li>
<li><a href="https://togithub.com/google/error-prone/commit/2bd7859957ebf205f1c73f9d38d9f85338b80773"><code>2bd7859</code></a> Add an assertion to try to help debug <a href="https://togithub.com/google/error-prone/i">https://togithub.com/google/error-prone/i</a>...</li>
<li><a href="https://togithub.com/google/error-prone/commit/58a9e8082b2344f8fb2c3814112b46104708bbab"><code>58a9e80</code></a> Update a few checks (and a class of tests, with AbstractToString) to handle #...</li>
<li><a href="https://togithub.com/google/error-prone/commit/fd21bc9e4e9737b86fdd792bf5e71f588aee5c27"><code>fd21bc9</code></a> Reflow a comment that didn't appreciate being formatted in unknown commit</li>
<li><a href="https://togithub.com/google/error-prone/commit/63cf19274e382089693102a19bf31d7dbe791807"><code>63cf192</code></a> Update <code>CanIgnoreReturnValueSuggester</code> summary.</li>
<li><a href="https://togithub.com/google/error-prone/commit/5fa727a5e4e6a368a92c6f36224dbe9716ed5659"><code>5fa727a</code></a> Actually test that <code>hasExtraParameterForEnclosingInstance</code> works.</li>
<li><a href="https://togithub.com/google/error-prone/commit/21c190a6fc76f3ad3c895639dc66b7a3f570c55d"><code>21c190a</code></a> Document that javadoc shouldn't appear between annotations and the documented...</li>
<li><a href="https://togithub.com/google/error-prone/commit/d272dfa8da5f6ed09bb97acc153f9a7169185ab7"><code>d272dfa</code></a> Automated rollback of commit 654d1dbf1e6dd652cd6e8ca003643ddf02266ec2.</li>
<li><a href="https://togithub.com/google/error-prone/commit/654d1dbf1e6dd652cd6e8ca003643ddf02266ec2"><code>654d1db</code></a> Handle Joiner.on(...) in AbstractToString.</li>
<li><a href="https://togithub.com/google/error-prone/commit/da7be27b3c4a9f7d232072fdf3dc95e553156b6d"><code>da7be27</code></a> Descend into VariableTrees when looking for variables to check.</li>
<li>Additional commits viewable in <a href="https://togithub.com/google/error-prone/compare/v2.23.0...v2.24.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.errorprone:error_prone_core&package-manager=maven&previous-version=2.23.0&new-version=2.24.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* feat: allow setting channel and credential providers in DatastoreOptions (#1299)

* feat: allow setting channel and credential providers in DatastoreOptions

* add additional validation and test

* mark new fields as transient

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* update test

* review feedback

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* review feedback

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* chore: Update CODEOWNERS (#1297) (#1331)

* chore: Update CODEOWNERS

* 🦉 Updates from OwlBot post-processor

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* chore: Update .repo-metadata.json

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* chore: run owlbot (#1330)

* chore: run owlbot

* update owlbot lock

* deps: bump com.google.cloud:google-cloud-shared-dependencies from 3.24.0 to 3.25.0 (#1335)

Bumps com.google.cloud:google-cloud-shared-dependencies from 3.24.0 to 3.25.0.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.cloud:google-cloud-shared-dependencies&package-manager=maven&previous-version=3.24.0&new-version=3.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* deps: bump com.google.truth:truth from 1.4.0 to 1.4.1 (#1341)

Bumps [com.google.truth:truth](https://togithub.com/google/truth) from 1.4.0 to 1.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/google/truth/releases">com.google.truth:truth's releases</a>.</em></p>
<blockquote>
<h2>1.4.1</h2>
<p>This release deprecates <code>Truth8</code>.</p>
<p>All its methods have become available on the main <code>Truth</code> class. In most cases, you can migrate your whole project mechanically: <code>git grep -l Truth8 | xargs perl -pi -e 's/\bTruth8\b/Truth/g;'</code></p>
<p>While we do not plan to delete <code>Truth8</code>, we recommend migrating off it, at least if you static import <code>assertThat</code>: If you do not migrate, such static imports will become ambiguous in Truth 1.4.2, breaking your build.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/google/truth/commit/a920d7df823e6b47a67e200055eb2bbfc6677185"><code>a920d7d</code></a> Set version number for truth-parent to 1.4.1.</li>
<li><a href="https://togithub.com/google/truth/commit/3406074b376d162aa4c39c414538aab348cfa3e7"><code>3406074</code></a> Document more about how and why to migrate off <code>Truth8</code>.</li>
<li><a href="https://togithub.com/google/truth/commit/2be0061863bd4bee48327fdf99a243547adbddba"><code>2be0061</code></a> Update docs to reflect that the Java 8 assertions have &quot;moved&quot; to the main `T...</li>
<li>See full diff in <a href="https://togithub.com/google/truth/compare/v1.4.0...v1.4.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.truth:truth&package-manager=maven&previous-version=1.4.0&new-version=1.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* deps: bump com.google.errorprone:error_prone_core from 2.24.1 to 2.25.0 (#1340)

Bumps [com.google.errorprone:error_prone_core](https://togithub.com/google/error-prone) from 2.24.1 to 2.25.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/google/error-prone/releases">com.google.errorprone:error_prone_core's releases</a>.</em></p>
<blockquote>
<h2>Error Prone 2.25.0</h2>
<p>New checks:</p>
<ul>
<li><a href="https://errorprone.info/bugpattern/JUnitIncompatibleType"><code>JUnitIncompatibleType</code></a>: Detects incompatible types passed to an assertion, similar to <a href="https://errorprone.info/bugpattern/TruthIncompatibleType"><code>TruthIncompatibleType </code></a></li>
<li><a href="https://errorprone.info/bugpattern/RedundantSetterCall"><code>RedundantSetterCall</code></a>: Detects fields set twice in the same chained expression. Generalization of previous <code>ProtoRedundantSet</code> check to also handle <a href="https://togithub.com/google/auto/blob/main/value/userguide/index.md">AutoValue</a>.</li>
</ul>
<p>Closed issues: <a href="https://redirect.github.com/google/error-prone/issues/4195">#4195</a>, <a href="https://redirect.github.com/google/error-prone/issues/4224">#4224</a>, <a href="https://redirect.github.com/google/error-prone/issues/4228">#4228</a>, <a href="https://redirect.github.com/google/error-prone/issues/4248">#4248</a>, <a href="https://redirect.github.com/google/error-prone/issues/4249">#4249</a>, <a href="https://redirect.github.com/google/error-prone/issues/4251">#4251</a></p>
<p>Full Changelog: <a href="https://togithub.com/google/error-prone/compare/v2.24.1...v2.25.0">https://togithub.com/google/error-prone/compare/v2.24.1...v2.25.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/google/error-prone/commit/e353c911ea52520f2d0096eb9406f8c3f90d5f9e"><code>e353c91</code></a> Release Error Prone 2.25.0</li>
<li><a href="https://togithub.com/google/error-prone/commit/ae3a19f44e173847d5e01bc95fd0b1d74a41d6b6"><code>ae3a19f</code></a> Add some known thread safe types to[]</li>
<li><a href="https://togithub.com/google/error-prone/commit/4f060e1ff140874e1d7424a08c6d23e9c9d50d13"><code>4f060e1</code></a> Add a test case demonstrating a <code>CanIgnoreReturnValueSuggester</code> bug.</li>
<li><a href="https://togithub.com/google/error-prone/commit/a1f4fa7061e977357a9ada2dbc71c36ace2fe7df"><code>a1f4fa7</code></a> Drop diagnostics that are reported inside ErrorProneTokens</li>
<li><a href="https://togithub.com/google/error-prone/commit/32312a2eb20c94f875350ee69a3612ea45014007"><code>32312a2</code></a> Update Android API diff</li>
<li><a href="https://togithub.com/google/error-prone/commit/b799927de4a60a0a7d68277a1aaced64c2fd9b1f"><code>b799927</code></a> Automatic code cleanup.</li>
<li><a href="https://togithub.com/google/error-prone/commit/68badf0576894a13e7a0ab38350a5f64f08b04a0"><code>68badf0</code></a> ErrorProne: Update TestParameterInjector version</li>
<li><a href="https://togithub.com/google/error-prone/commit/3ff139f6605d565831830782135d2ae7a967740b"><code>3ff139f</code></a> Automatic code cleanup.</li>
<li><a href="https://togithub.com/google/error-prone/commit/0bd743234ba82f42c3aaa6dce28c5acd76d3dc03"><code>0bd7432</code></a> Rollforward of <a href="https://togithub.com/google/error-prone/commit/654d1dbf1e6dd652c">https://togithub.com/google/error-prone/commit/654d1dbf1e6dd652c</a>...</li>
<li><a href="https://togithub.com/google/error-prone/commit/5f2032591a8bacb496e48a9a62a1616d18586e03"><code>5f20325</code></a> Fix typos</li>
<li>Additional commits viewable in <a href="https://togithub.com/google/error-prone/compare/v2.24.1...v2.25.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.errorprone:error_prone_core&package-manager=maven&previous-version=2.24.1&new-version=2.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* revert: "test: Creating multi db rule to run tests multiple times agai… (#1346)

* Revert "test: Creating multi db rule to run tests multiple times against different named databases. (#1270)"

This reverts commit 780c9f40f1ae04d0ec919d203bf256e3cff8fcc1.

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>

* deps: bump com.google.truth:truth from 1.4.1 to 1.4.2 (#1354)

Bumps [com.google.truth:truth](https://togithub.com/google/truth) from 1.4.1 to 1.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://togithub.com/google/truth/releases">com.google.truth:truth's releases</a>.</em></p>
<blockquote>
<h2>1.4.2</h2>
<p>This release is the final step of copying all our methods from <code>Truth8</code> to <code>Truth</code>. If you have not already migrated your usages from <code>Truth8</code> to <code>Truth</code>, you may see build errors:</p>
<pre><code>OptionalSubjectTest.java:39: error: reference to assertThat is ambiguous
    assertThat(Optional.of(&quot;foo&quot;)).isPresent();
    ^
  both method assertThat(@org.checkerframework.checker.nullness.qual.Nullable Optional&lt;?&gt;) in Truth8 and method assertThat(@org.checkerframework.checker.nullness.qual.Nullable Optional&lt;?&gt;) in Truth match
</code></pre>
<p>In most cases, you can migrate your whole project mechanically: <code>git grep -l Truth8 | xargs perl -pi -e 's/\bTruth8\b/Truth/g;'</code>. (You can make that change before upgrading to Truth 1.4.2 or as part of the same commit.)</p>
<p>If you instead need to migrate your project incrementally (for example, because it is very large), you may want to upgrade your version of Truth incrementally, too, following our instructions for <a href="https://togithub.com/google/truth/releases/tag/v1.3.0">1.3.0</a> and <a href="https://togithub.com/google/truth/releases/tag/v1.4.0">1.4.0</a>.</p>
<h2>For help</h2>
<p>Please feel welcome to <a href="https://togithub.com/google/truth/issues/new">open an issue</a> to report problems or request help.</p>
<h2>Changelog</h2>
<ul>
<li>Removed temporary type parameters from <code>Truth.assertThat(Stream)</code> and <code>Truth.assertThat(Optional)</code>. This can create build errors, which you can fix by replacing all your references to <code>Truth8</code> with references to <code>Truth</code>. (45782bd0e)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://togithub.com/google/truth/commit/0ca7ef06fda6b740406fc1402447a8a9ff61ee35"><code>0ca7ef0</code></a> Set version number for truth-parent to 1.4.2.</li>
<li><a href="https://togithub.com/google/truth/commit/e3b435498a88f389c4aeafa711230465d2c76c17"><code>e3b4354</code></a> Enable a few more Guava Primitives tests for J2KT</li>
<li><a href="https://togithub.com/google/truth/commit/ae78f4a04c84a11569d31a81107301140237151b"><code>ae78f4a</code></a> Bump actions/setup-java from 4.0.0 to 4.1.0</li>
<li><a href="https://togithub.com/google/truth/commit/996a844c3ef62055ae5dcb73edf6eadb3e0ab881"><code>996a844</code></a> Remove more copies of a workaround for an ancient Android bug.</li>
<li><a href="https://togithub.com/google/truth/commit/a43223ef586ecbf0a34dabe9f0dc3a965672051f"><code>a43223e</code></a> Suppress <code>TruthSelfEquals</code> violations in Truth.</li>
<li><a href="https://togithub.com/google/truth/commit/559d6360e3c82265328a64f1a328f5b2d8c3e652"><code>559d636</code></a> Suppress <code>NullableOptional</code>, as we already do in, e.g., `Truth.assertThat(Opt...</li>
<li><a href="https://togithub.com/google/truth/commit/3efe35324062046383036aab71472a94cb454ca1"><code>3efe353</code></a> Automated Code Change</li>
<li><a href="https://togithub.com/google/truth/commit/5efd53f1064b4b6f0d8b156034b0c21c0b6a5713"><code>5efd53f</code></a> Change <code>assertThat(array)</code> to allow arrays of non-nullable elements</li>
<li><a href="https://togithub.com/google/truth/commit/bbd8d1218bccf79fada58885c30fd6356650a5e6"><code>bbd8d12</code></a> Bump com.google.errorprone:error_prone_annotations from 2.24.1 to 2.25.0</li>
<li><a href="https://togithub.com/google/truth/commit/c2439618ee956cca31424472d5fb023e99892ae9"><code>c243961</code></a> Remove <code>@J2ktIncompatible</code> from <code>StringSubject#matches</code></li>
<li>Additional commits viewable in <a href="https://togithub.com/google/truth/compare/v1.4.1...v1.4.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.truth:truth&package-manager=maven&previous-version=1.4.1&new-version=1.4.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

* deps: bump com.google.cloud:google-cloud-shared-dependencies from 3.25.0 to 3.27.0 (#1353)

Bumps com.google.cloud:google-cloud-shared-dependencies from 3.25.0 to 3.27.0.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.cloud:google-clo…
  • Loading branch information
4 people authored May 2, 2024
1 parent f5a2f04 commit a35a59e
Show file tree
Hide file tree
Showing 63 changed files with 9,364 additions and 211 deletions.
6 changes: 5 additions & 1 deletion .github/.OwlBot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,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"
dest: "/owl-bot-staging/$1/google-cloud-datastore/src"
12 changes: 0 additions & 12 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
version: 2

updates:
- package-ecosystem: "maven"
directory: "/"
Expand All @@ -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"
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ target/
*.iml
__pycache__/

.flattened-pom.xml
.flattened-pom.xml
59 changes: 45 additions & 14 deletions google-cloud-datastore/clirr-ignored-differences.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- see http://mojo.codehaus.org/clirr-maven-plugin/examples/ignored-differences.html -->
<differences>
<!-- added a default method to an interface-->
<!-- renaming internal only class-->
<difference>
<className>com/google/cloud/datastore/ReadOption$QueryAndReadOptions</className>
<method>*</method>
<differenceType>8001</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/execution/request/AggregationQueryRequestProtoPreparer</className>
<method>*QueryAndReadOptions*</method>
<to>*QueryConfig*</to>
<differenceType>7005</differenceType>
</difference>
<difference>
<!-- Added BaseGrpcServiceException as a superclass -->
<className>com/google/cloud/datastore/DatastoreException</className>
<differenceType>5000</differenceType>
<to>com/google/cloud/grpc/BaseGrpcServiceException</to>
</difference>
<difference>
<!-- Removed BaseHttpServiceException as a superclass -->
<className>com/google/cloud/datastore/DatastoreException</className>
<differenceType>5001</differenceType>
<to>com/google/cloud/http/BaseHttpServiceException</to>
</difference>
<difference>
<className>com/google/cloud/datastore/Datastore</className>
<method>void close()</method>
<differenceType>7012</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/spi/v1/DatastoreRpc</className>
<method>void close()</method>
<differenceType>7012</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/Datastore</className>
<method>boolean isClosed()</method>
<differenceType>7012</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/spi/v1/DatastoreRpc</className>
<method>boolean isClosed()</method>
<differenceType>7012</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/Datastore</className>
<method>com.google.cloud.datastore.QueryResults run(com.google.cloud.datastore.Query, com.google.cloud.datastore.models.ExplainOptions, com.google.cloud.datastore.ReadOption[])</method>
Expand All @@ -14,7 +57,7 @@
</difference>
<difference>
<className>com/google/cloud/datastore/DatastoreReader</className>
<method> com.google.cloud.datastore.AggregationResults runAggregation(com.google.cloud.datastore.AggregationQuery, com.google.cloud.datastore.models.ExplainOptions)</method>
<method>com.google.cloud.datastore.AggregationResults runAggregation(com.google.cloud.datastore.AggregationQuery, com.google.cloud.datastore.models.ExplainOptions)</method>
<differenceType>7012</differenceType>
</difference>
<difference>
Expand All @@ -28,18 +71,6 @@
<differenceType>7012</differenceType>
</difference>

<!-- changed parmeters on internal only class-->
<difference>
<className>com/google/cloud/datastore/ReadOption$QueryConfig</className>
<method>com.google.cloud.datastore.ReadOption$QueryConfig create(com.google.cloud.datastore.Query, java.util.List)</method>
<to>*com.google.datastore.v1.ExplainOptions*</to>
<differenceType>7005</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/ReadOption$QueryConfig</className>
<method>com.google.cloud.datastore.ReadOption$QueryConfig create(com.google.cloud.datastore.Query)</method>
<differenceType>7004</differenceType>
</difference>
<difference>
<className>com/google/cloud/datastore/execution/AggregationQueryExecutor</className>
<method>com.google.cloud.datastore.AggregationResults execute(com.google.cloud.datastore.AggregationQuery, com.google.cloud.datastore.ReadOption[])</method>
Expand Down
8 changes: 8 additions & 0 deletions google-cloud-datastore/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
<site.installationModule>google-cloud-datastore</site.installationModule>
</properties>
<dependencies>
<dependency>
<groupId>com.google.api.grpc</groupId>
<artifactId>grpc-google-cloud-datastore-v1</artifactId>
</dependency>
<dependency>
<groupId>com.google.api.grpc</groupId>
<artifactId>grpc-google-cloud-datastore-admin-v1</artifactId>
Expand All @@ -26,6 +30,10 @@
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core-http</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core-grpc</artifactId>
</dependency>
<dependency>
<groupId>com.google.api.grpc</groupId>
<artifactId>proto-google-cloud-datastore-v1</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.google.cloud.datastore;

import com.google.api.core.InternalExtensionOnly;
import java.util.List;
import javax.annotation.concurrent.NotThreadSafe;

Expand All @@ -42,6 +43,7 @@
* This class too should not be treated as a thread safe class. </b>
*/
@NotThreadSafe
@InternalExtensionOnly
public interface Batch extends DatastoreBatchWriter {

interface Response {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@
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;
import java.util.Iterator;
import java.util.List;

/** An interface for Google Cloud Datastore. */
public interface Datastore extends Service<DatastoreOptions>, DatastoreReaderWriter {
@InternalExtensionOnly
public interface Datastore extends Service<DatastoreOptions>, DatastoreReaderWriter, AutoCloseable {

/**
* Returns a new Datastore transaction.
Expand All @@ -51,9 +53,9 @@ public interface Datastore extends Service<DatastoreOptions>, DatastoreReaderWri
* @param <T> the type of the return value
*/
interface TransactionCallable<T> {

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
Expand Down Expand Up @@ -481,10 +483,7 @@ interface TransactionCallable<T> {
* @throws DatastoreException upon failure
*/
@BetaApi
default <T> QueryResults<T> run(
Query<T> query, ExplainOptions explainOptions, ReadOption... options) {
throw new UnsupportedOperationException("Not implemented.");
}
<T> QueryResults<T> run(Query<T> query, ExplainOptions explainOptions, ReadOption... options);

/**
* Submits a {@link AggregationQuery} and returns {@link AggregationResults}. {@link ReadOption}s
Expand Down Expand Up @@ -529,9 +528,7 @@ default <T> QueryResults<T> 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
Expand All @@ -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();
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.google.cloud.datastore;

import com.google.api.core.InternalExtensionOnly;
import java.util.List;
import javax.annotation.concurrent.NotThreadSafe;

Expand All @@ -31,6 +32,7 @@
* This class too should not be treated as a thread safe class. </b>
*/
@NotThreadSafe
@InternalExtensionOnly
public interface DatastoreBatchWriter extends DatastoreWriter {

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
}
Expand All @@ -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#<init>(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;
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Datastore, DatastoreOptions> {}
Loading

0 comments on commit a35a59e

Please sign in to comment.