Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Commit 2365887

Browse files
authored
Merge branch 'main' into markduckworth/execute-options-fix
2 parents 95a5a2c + 71eab7b commit 2365887

77 files changed

Lines changed: 7440 additions & 980 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
---
2+
name: Verify Local Changes
3+
description: Verifies local Java SDK changes.
4+
---
5+
6+
# Verify Local Changes
7+
8+
This skill documents how to verify local code changes for the Java Firestore SDK. This should be run **every time** you complete a fix or feature and are prepared to push a pull request.
9+
10+
## Prerequisites
11+
12+
Ensure you have Maven installed and are in the `java-firestore` directory before running commands.
13+
14+
---
15+
16+
## Step 0: Format the Code
17+
18+
Run the formatter to ensure formatting checks pass:
19+
20+
```bash
21+
mvn com.spotify.fmt:fmt-maven-plugin:format
22+
```
23+
24+
---
25+
26+
## Step 1: Unit Testing (Isolated then Suite)
27+
28+
1. **Identify modified unit tests** in your changes.
29+
2. **Run specific units only** to test isolated logic regressions:
30+
```bash
31+
mvn test -Dtest=MyUnitTest#testMethod
32+
```
33+
3. **Run the entire unit test suite** that contains those modified tests if the isolated unit tests pass:
34+
```bash
35+
mvn test -Dtest=MyUnitTest
36+
```
37+
38+
---
39+
40+
## Step 2: Integration Testing (Isolated then Suite)
41+
42+
### 💡 Integration Test Nuances (from `ITBaseTest.java`)
43+
44+
When running integration tests, configure your execution using properties or environment variables:
45+
46+
- **`FIRESTORE_EDITION`**:
47+
- `standard` (Default)
48+
- `enterprise`
49+
- *Note*: **Pipelines can only be run against `enterprise` editions**, while standard Queries run on both.
50+
- **`FIRESTORE_NAMED_DATABASE`**:
51+
- Enterprise editions usually require a named database (often `enterprise`). Adjust this flag if pointing to specific instances.
52+
- **`FIRESTORE_TARGET_BACKEND`**:
53+
- `PROD` (Default)
54+
- `QA` (points to standard sandboxes)
55+
- `NIGHTLY` (points to `test-firestore.sandbox.googleapis.com:443`)
56+
- `EMULATOR` (points to `localhost:8080`)
57+
58+
1. **Identify modified integration tests** (usually Starting in `IT`).
59+
2. **Run specific integration tests only** (isolated checks run quicker):
60+
```bash
61+
mvn verify -Penable-integration-tests -DFIRESTORE_EDITION=enterprise -DFIRESTORE_NAMED_DATABASE=enterprise -Dtest=ITTest#testMethod -Dclirr.skip=true -Denforcer.skip=true -fae
62+
```
63+
3. **Run the entire integration test suite** for the modified class if isolation tests pass:
64+
```bash
65+
mvn verify -Penable-integration-tests -DFIRESTORE_EDITION=enterprise -DFIRESTORE_NAMED_DATABASE=enterprise -Dtest=ITTest -Dclirr.skip=true -Denforcer.skip=true -fae
66+
```
67+
68+
69+
70+
---
71+
72+
## Step 3: Full Suite Regressions
73+
74+
Run the full integration regression suite once you are confident subsets pass:
75+
76+
```bash
77+
mvn verify -Penable-integration-tests -DFIRESTORE_EDITION=enterprise -DFIRESTORE_NAMED_DATABASE=enterprise -Dclirr.skip=true -Denforcer.skip=true -fae
78+
```
79+
80+
---
81+
82+
> [!TIP]
83+
> Use `-Dclirr.skip=true -Denforcer.skip=true` to speed up iterations where appropriate without leaking compliance checks.
84+
85+
---
86+
87+
## 🛠️ Troubleshooting & Source of Truth
88+
89+
If you run into issues executing tests with the commands above, **consult the Kokoro configuration files** as the ultimate source of truth:
90+
91+
- **Presubmit configurations**: See `.kokoro/presubmit/integration.cfg` (or `integration-named-db.cfg`)
92+
- **Nightly configurations**: See `.kokoro/nightly/integration.cfg`
93+
- **Build shell scripts**: See `.kokoro/build.sh`
94+
95+
These files define the exact environment variables (e.g., specific endpoints or endpoints overrides) the CI server uses!

.github/.OwlBot-hermetic.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ deep-remove-regex:
55
- "/google-cloud-firestore-admin/src"
66

77
deep-preserve-regex:
8+
- "/.*google-.*/src/main/java/.*/stub/Version.java"
89
- "/google-.*/src/test/java/com/google/cloud/.*/v.*/it/IT.*Test.java"
910
- "/proto-google-cloud-firestore-v1/src/main/java/com/google/firestore/v1/DocumentPathName.java"
1011
- "/proto-google-cloud-firestore-v1/src/main/java/com/google/firestore/v1/AnyPathName.java"

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* @googleapis/cloud-sdk-java-team @googleapis/firestore-team
99

1010
# for handwritten libraries, keep codeowner_team in .repo-metadata.json as owner
11-
**/*.java @googleapis/firestore-team
11+
**/*.java @googleapis/cloud-sdk-java-team @googleapis/firestore-team
1212

1313
# For generated Java code
1414
proto-*/ @googleapis/cloud-sdk-java-team @googleapis/firestore-team

.github/workflows/hermetic_library_generation.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
with:
3838
fetch-depth: 0
3939
token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }}
40-
- uses: googleapis/sdk-platform-java/.github/scripts@v2.68.0
40+
- uses: googleapis/google-cloud-java/sdk-platform-java/.github/scripts@v1.85.0
4141
if: env.SHOULD_RUN == 'true'
4242
with:
4343
base_ref: ${{ github.base_ref }}

.github/workflows/unmanaged-dependency-check.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ jobs:
1414
shell: bash
1515
run: .kokoro/build.sh
1616
- name: Unmanaged dependency check
17-
uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.58.0
17+
uses: googleapis/google-cloud-java/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@v1.85.0
1818
with:
1919
bom-path: google-cloud-firestore-bom/pom.xml

.kokoro/presubmit/graalvm-native-a.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Configure the docker image for kokoro-trampoline.
44
env_vars: {
55
key: "TRAMPOLINE_IMAGE"
6-
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.58.0" # {x-version-update:google-cloud-shared-dependencies:current}
6+
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.61.0" # {x-version-update:google-cloud-shared-dependencies:current}
77
}
88

99
env_vars: {

.kokoro/presubmit/graalvm-native-b.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Configure the docker image for kokoro-trampoline.
44
env_vars: {
55
key: "TRAMPOLINE_IMAGE"
6-
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.58.0" # {x-version-update:google-cloud-shared-dependencies:current}
6+
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.61.0" # {x-version-update:google-cloud-shared-dependencies:current}
77
}
88

99
env_vars: {

.kokoro/presubmit/graalvm-native-c.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Configure the docker image for kokoro-trampoline.
44
env_vars: {
55
key: "TRAMPOLINE_IMAGE"
6-
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.58.0" # {x-version-update:google-cloud-shared-dependencies:current}
6+
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.61.0" # {x-version-update:google-cloud-shared-dependencies:current}
77
}
88

99
env_vars: {

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,40 @@
11
# Changelog
22

3+
## [3.41.0](https://github.com/googleapis/java-firestore/compare/v3.40.0...v3.41.0) (2026-04-14)
4+
5+
6+
### Features
7+
8+
* Add `expiration_offset` to `Field` ([c29d25d](https://github.com/googleapis/java-firestore/commit/c29d25db9dcbfbee4eda2db21528f99d63e5cb6e))
9+
10+
11+
### Bug Fixes
12+
13+
* **deps:** Update the Java code generator (gapic-generator-java) to 2.71.0 ([c29d25d](https://github.com/googleapis/java-firestore/commit/c29d25db9dcbfbee4eda2db21528f99d63e5cb6e))
14+
15+
16+
### Dependencies
17+
18+
* Update sdk-platform-java-config to 3.61.0 ([#2359](https://github.com/googleapis/java-firestore/issues/2359)) ([33e33fa](https://github.com/googleapis/java-firestore/commit/33e33fa0c55c0f210cd148bb0ed0fbeb1a883228))
19+
20+
## [3.40.0](https://github.com/googleapis/java-firestore/compare/v3.39.0...v3.40.0) (2026-04-08)
21+
22+
23+
### Features
24+
25+
* Add `isType` expression ([#2329](https://github.com/googleapis/java-firestore/issues/2329)) ([c606ff9](https://github.com/googleapis/java-firestore/commit/c606ff989e1305214d29496734f2a34628e4c82a))
26+
* Add DML stages to pipelines ([#2317](https://github.com/googleapis/java-firestore/issues/2317)) ([2dc2464](https://github.com/googleapis/java-firestore/commit/2dc2464206a899794746ebbe20e3fc048770a0b2))
27+
* Add string pipeline expressions ([#2326](https://github.com/googleapis/java-firestore/issues/2326)) ([93db04e](https://github.com/googleapis/java-firestore/commit/93db04e4bce569c54359648b4122a732d0c9df73))
28+
* Add subquery support in pipeline ([#2323](https://github.com/googleapis/java-firestore/issues/2323)) ([cbf87ac](https://github.com/googleapis/java-firestore/commit/cbf87acd66f5c3fbdbd5d922e22790347f44f22d))
29+
* Add support for remaining `map` pipeline expressions ([#2321](https://github.com/googleapis/java-firestore/issues/2321)) ([f61c61f](https://github.com/googleapis/java-firestore/commit/f61c61f42c472d5540dd616c17db3655502ccdf6))
30+
* Add support for the parent expression and fix integration tests error ([#2351](https://github.com/googleapis/java-firestore/issues/2351)) ([0e30ec4](https://github.com/googleapis/java-firestore/commit/0e30ec455273719f8d29471c001f4aeb38ecf51a))
31+
* Add timestamp expressions ([#2342](https://github.com/googleapis/java-firestore/issues/2342)) ([f8adbaa](https://github.com/googleapis/java-firestore/commit/f8adbaa1464a55b7ec004cbe2c7b5145095b0f04))
32+
* Added public preview support for full-text search and geo search in Pipelines. ([#2346](https://github.com/googleapis/java-firestore/issues/2346)) ([0c81885](https://github.com/googleapis/java-firestore/commit/0c8188520dfbada0d3fef0719e4f95fc231306be))
33+
* **firestore:** Add `ifNull` and `coalesce` expressions ([#2349](https://github.com/googleapis/java-firestore/issues/2349)) ([51a1c43](https://github.com/googleapis/java-firestore/commit/51a1c4392c19def6aa8a15a7409c7e05476033a8))
34+
* **firestore:** Add array expressions ([#2350](https://github.com/googleapis/java-firestore/issues/2350)) ([1d23f18](https://github.com/googleapis/java-firestore/commit/1d23f18f70b2b232a4631fe6dab18a8ceb05cb4c))
35+
* **firestore:** Add logical expressions ([#2339](https://github.com/googleapis/java-firestore/issues/2339)) ([b2f79ec](https://github.com/googleapis/java-firestore/commit/b2f79ec84db91874a717dfaea8bf8f0df9f45c4d))
36+
* Graduate Pipeline and related APIs from beta to GA ([#2352](https://github.com/googleapis/java-firestore/issues/2352)) ([4cd5895](https://github.com/googleapis/java-firestore/commit/4cd58958191687ea03fadbcc2a4eb6e2f33730b1))
37+
338
## [3.39.0](https://github.com/googleapis/java-firestore/compare/v3.38.0...v3.39.0) (2026-03-23)
439

540

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,20 @@ If you are using Maven without the BOM, add this to your dependencies:
4949
If you are using Gradle 5.x or later, add this to your dependencies:
5050

5151
```Groovy
52-
implementation platform('com.google.cloud:libraries-bom:26.78.0')
52+
implementation platform('com.google.cloud:libraries-bom:26.79.0')
5353
5454
implementation 'com.google.cloud:google-cloud-firestore'
5555
```
5656
If you are using Gradle without BOM, add this to your dependencies:
5757

5858
```Groovy
59-
implementation 'com.google.cloud:google-cloud-firestore:3.39.0'
59+
implementation 'com.google.cloud:google-cloud-firestore:3.41.0'
6060
```
6161

6262
If you are using SBT, add this to your dependencies:
6363

6464
```Scala
65-
libraryDependencies += "com.google.cloud" % "google-cloud-firestore" % "3.39.0"
65+
libraryDependencies += "com.google.cloud" % "google-cloud-firestore" % "3.41.0"
6666
```
6767

6868
## Authentication
@@ -201,7 +201,7 @@ Java is a registered trademark of Oracle and/or its affiliates.
201201
[javadocs]: https://cloud.google.com/java/docs/reference/google-cloud-firestore/latest/history
202202
[stability-image]: https://img.shields.io/badge/stability-stable-green
203203
[maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-firestore.svg
204-
[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-firestore/3.39.0
204+
[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-firestore/3.41.0
205205
[authentication]: https://github.com/googleapis/google-cloud-java#authentication
206206
[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
207207
[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles

0 commit comments

Comments
 (0)