From 86665d77c32e8577de25774390d9e7e9d15d3c32 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 26 Feb 2025 11:39:46 -0500
Subject: [PATCH 01/23] chore(main): release 2.49.1-SNAPSHOT (#2959)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
gapic-google-cloud-storage-v2/pom.xml | 4 ++--
google-cloud-storage-bom/pom.xml | 16 ++++++++--------
google-cloud-storage-control/pom.xml | 4 ++--
google-cloud-storage/pom.xml | 4 ++--
grpc-google-cloud-storage-control-v2/pom.xml | 4 ++--
grpc-google-cloud-storage-v2/pom.xml | 4 ++--
pom.xml | 16 ++++++++--------
proto-google-cloud-storage-control-v2/pom.xml | 4 ++--
proto-google-cloud-storage-v2/pom.xml | 4 ++--
samples/snapshot/pom.xml | 6 +++---
storage-shared-benchmarking/pom.xml | 4 ++--
versions.txt | 14 +++++++-------
12 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/gapic-google-cloud-storage-v2/pom.xml b/gapic-google-cloud-storage-v2/pom.xml
index 4845e6efa..631e9b687 100644
--- a/gapic-google-cloud-storage-v2/pom.xml
+++ b/gapic-google-cloud-storage-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
gapic-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
gapic-google-cloud-storage-v2
GRPC library for gapic-google-cloud-storage-v2
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml
index b0c64685e..57d4c18c4 100644
--- a/google-cloud-storage-bom/pom.xml
+++ b/google-cloud-storage-bom/pom.xml
@@ -19,7 +19,7 @@
4.0.0
com.google.cloud
google-cloud-storage-bom
- 2.49.0
+ 2.49.1-SNAPSHOT
pom
com.google.cloud
@@ -69,37 +69,37 @@
com.google.cloud
google-cloud-storage
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
gapic-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
proto-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.cloud
google-cloud-storage-control
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-storage-control-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
proto-google-cloud-storage-control-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/google-cloud-storage-control/pom.xml b/google-cloud-storage-control/pom.xml
index 8dfd37f5a..19dd2537f 100644
--- a/google-cloud-storage-control/pom.xml
+++ b/google-cloud-storage-control/pom.xml
@@ -5,13 +5,13 @@
4.0.0
com.google.cloud
google-cloud-storage-control
- 2.49.0
+ 2.49.1-SNAPSHOT
google-cloud-storage-control
GRPC library for google-cloud-storage-control
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml
index 9d0251da3..a0b9f8e34 100644
--- a/google-cloud-storage/pom.xml
+++ b/google-cloud-storage/pom.xml
@@ -2,7 +2,7 @@
4.0.0
google-cloud-storage
- 2.49.0
+ 2.49.1-SNAPSHOT
jar
Google Cloud Storage
https://github.com/googleapis/java-storage
@@ -12,7 +12,7 @@
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
google-cloud-storage
diff --git a/grpc-google-cloud-storage-control-v2/pom.xml b/grpc-google-cloud-storage-control-v2/pom.xml
index 22c0ee2de..eed6cd561 100644
--- a/grpc-google-cloud-storage-control-v2/pom.xml
+++ b/grpc-google-cloud-storage-control-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-storage-control-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
grpc-google-cloud-storage-control-v2
GRPC library for google-cloud-storage
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml
index 3ff52a6a1..4deb04dc6 100644
--- a/grpc-google-cloud-storage-v2/pom.xml
+++ b/grpc-google-cloud-storage-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
grpc-google-cloud-storage-v2
GRPC library for grpc-google-cloud-storage-v2
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 9e8aa054e..b33d7a221 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-storage-parent
pom
- 2.49.0
+ 2.49.1-SNAPSHOT
Storage Parent
https://github.com/googleapis/java-storage
@@ -123,7 +123,7 @@
com.google.cloud
google-cloud-storage
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.apis
@@ -145,32 +145,32 @@
com.google.api.grpc
proto-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
gapic-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-storage-control-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.api.grpc
proto-google-cloud-storage-control-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.cloud
google-cloud-storage-control
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.cloud
diff --git a/proto-google-cloud-storage-control-v2/pom.xml b/proto-google-cloud-storage-control-v2/pom.xml
index 4600bd1e0..12f545364 100644
--- a/proto-google-cloud-storage-control-v2/pom.xml
+++ b/proto-google-cloud-storage-control-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-storage-control-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
proto-google-cloud-storage-control-v2
Proto library for proto-google-cloud-storage-control-v2
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml
index 20fd6aa72..1342d0428 100644
--- a/proto-google-cloud-storage-v2/pom.xml
+++ b/proto-google-cloud-storage-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-storage-v2
- 2.49.0
+ 2.49.1-SNAPSHOT
proto-google-cloud-storage-v2
PROTO library for proto-google-cloud-storage-v2
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 03a841181..2be5f90e4 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,12 +28,12 @@
com.google.cloud
google-cloud-storage
- 2.49.0
+ 2.49.1-SNAPSHOT
com.google.cloud
google-cloud-storage-control
- 2.49.0
+ 2.49.1-SNAPSHOT
compile
@@ -64,7 +64,7 @@
com.google.cloud
google-cloud-storage
- 2.49.0
+ 2.49.1-SNAPSHOT
tests
test
diff --git a/storage-shared-benchmarking/pom.xml b/storage-shared-benchmarking/pom.xml
index dc2c577e0..547510fb0 100644
--- a/storage-shared-benchmarking/pom.xml
+++ b/storage-shared-benchmarking/pom.xml
@@ -10,7 +10,7 @@
com.google.cloud
google-cloud-storage-parent
- 2.49.0
+ 2.49.1-SNAPSHOT
@@ -31,7 +31,7 @@
com.google.cloud
google-cloud-storage
- 2.49.0
+ 2.49.1-SNAPSHOT
tests
diff --git a/versions.txt b/versions.txt
index ee1ae8089..4b48303cb 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-storage:2.49.0:2.49.0
-gapic-google-cloud-storage-v2:2.49.0:2.49.0
-grpc-google-cloud-storage-v2:2.49.0:2.49.0
-proto-google-cloud-storage-v2:2.49.0:2.49.0
-google-cloud-storage-control:2.49.0:2.49.0
-proto-google-cloud-storage-control-v2:2.49.0:2.49.0
-grpc-google-cloud-storage-control-v2:2.49.0:2.49.0
+google-cloud-storage:2.49.0:2.49.1-SNAPSHOT
+gapic-google-cloud-storage-v2:2.49.0:2.49.1-SNAPSHOT
+grpc-google-cloud-storage-v2:2.49.0:2.49.1-SNAPSHOT
+proto-google-cloud-storage-v2:2.49.0:2.49.1-SNAPSHOT
+google-cloud-storage-control:2.49.0:2.49.1-SNAPSHOT
+proto-google-cloud-storage-control-v2:2.49.0:2.49.1-SNAPSHOT
+grpc-google-cloud-storage-control-v2:2.49.0:2.49.1-SNAPSHOT
From 8c1d120cd92bee5205f37a462d1b2e19e94070b1 Mon Sep 17 00:00:00 2001
From: Daniel B
Date: Wed, 26 Feb 2025 08:44:19 -0800
Subject: [PATCH 02/23] chore: set gcs-sdk-team as GCS CODEOWNER (#2955)
* chore: set gcs-sdk-team as GCS CODEOWNER
* Update generation_config.yaml
* Update .repo-metadata.json
* chore: generate libraries at Tue Feb 25 21:47:46 UTC 2025
---------
Co-authored-by: cloud-java-bot
---
.github/CODEOWNERS | 6 +++---
.repo-metadata.json | 2 +-
generation_config.yaml | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 46f7ababf..b0834efa0 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -4,11 +4,11 @@
# For syntax help see:
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax
-# The @googleapis/cloud-storage-dpe is the default owner for changes in this repo
-* @googleapis/yoshi-java @googleapis/cloud-storage-dpe
+# The @googleapis/gcs-sdk-team is the default owner for changes in this repo
+* @googleapis/yoshi-java @googleapis/gcs-sdk-team
# for handwritten libraries, keep codeowner_team in .repo-metadata.json as owner
-**/*.java @googleapis/cloud-storage-dpe
+**/*.java @googleapis/gcs-sdk-team
# The java-samples-reviewers team is the default owner for samples changes
diff --git a/.repo-metadata.json b/.repo-metadata.json
index 18fe4b0c5..1807b79a7 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -13,7 +13,7 @@
"api_id": "storage.googleapis.com",
"library_type": "GAPIC_COMBO",
"requires_billing": true,
- "codeowner_team": "@googleapis/cloud-storage-dpe",
+ "codeowner_team": "@googleapis/gcs-sdk-team",
"excluded_poms": "google-cloud-storage-bom,google-cloud-storage",
"issue_tracker": "https://issuetracker.google.com/savedsearches/559782",
"extra_versioned_modules": "gapic-google-cloud-storage-v2",
diff --git a/generation_config.yaml b/generation_config.yaml
index 1a7423912..ebc47838e 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -13,7 +13,7 @@ libraries:
repo: googleapis/java-storage
repo_short: java-storage
distribution_name: com.google.cloud:google-cloud-storage
- codeowner_team: '@googleapis/cloud-storage-dpe'
+ codeowner_team: '@googleapis/gcs-sdk-team'
api_id: storage.googleapis.com
requires_billing: true
library_type: GAPIC_COMBO
From 31d74b888e4a4f50793c25f430bb397d9e04194b Mon Sep 17 00:00:00 2001
From: BenWhitehead
Date: Wed, 26 Feb 2025 18:26:18 -0500
Subject: [PATCH 03/23] chore: add gemini config (#2962)
---
.gemini/config.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 .gemini/config.yaml
diff --git a/.gemini/config.yaml b/.gemini/config.yaml
new file mode 100644
index 000000000..8afb84853
--- /dev/null
+++ b/.gemini/config.yaml
@@ -0,0 +1,10 @@
+# https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github#custom-configuration
+have_fun: false
+code_review:
+ disable: false
+ comment_severity_threshold: HIGH
+ max_review_comments: -1
+ pull_request_opened:
+ help: false
+ summary: false
+ code_review: false
From b858aa801d01f82a2bb222d792f39eb47190dd02 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 27 Feb 2025 00:43:36 +0100
Subject: [PATCH 04/23] chore(deps): update storage release dependencies to
v2.49.0 (#2963)
---
samples/install-without-bom/pom.xml | 6 +++---
samples/snippets/pom.xml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index c81c72d9c..a649b1f4d 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -30,12 +30,12 @@
com.google.cloud
google-cloud-storage
- 2.48.2
+ 2.49.0
com.google.cloud
google-cloud-storage-control
- 2.48.2
+ 2.49.0
@@ -72,7 +72,7 @@
com.google.cloud
google-cloud-storage
- 2.48.2
+ 2.49.0
tests
test
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 25f002fa3..d0283c91e 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-storage
- 2.48.2
+ 2.49.0
tests
test
From 541fa863f0414dc85bb0541704f02700a877c528 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 27 Feb 2025 00:44:27 +0100
Subject: [PATCH 05/23] test(deps): update cross product test dependencies
(#2961)
---
google-cloud-storage/pom.xml | 2 +-
pom.xml | 2 +-
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml
index a0b9f8e34..29c543095 100644
--- a/google-cloud-storage/pom.xml
+++ b/google-cloud-storage/pom.xml
@@ -16,7 +16,7 @@
google-cloud-storage
- 1.119.0
+ 1.119.1
diff --git a/pom.xml b/pom.xml
index b33d7a221..61253cf36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -133,7 +133,7 @@
com.google.cloud
google-cloud-pubsub
- 1.137.0
+ 1.137.1
test
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index a649b1f4d..650d03995 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -66,7 +66,7 @@
com.google.cloud
google-cloud-pubsub
- 1.137.0
+ 1.137.1
test
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 2be5f90e4..0df3eba41 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -58,7 +58,7 @@
com.google.cloud
google-cloud-pubsub
- 1.137.0
+ 1.137.1
test
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index d0283c91e..88998e9ac 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -76,7 +76,7 @@
com.google.cloud
google-cloud-pubsub
- 1.137.0
+ 1.137.1
test
From 0c5f949406ace28bcbaefd1b1cfb2b3cd899edc9 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 27 Feb 2025 00:46:12 +0100
Subject: [PATCH 06/23] build(deps): update dependency
org.apache.maven.plugins:maven-deploy-plugin to v3.1.4 (#2960)
---
samples/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/pom.xml b/samples/pom.xml
index c034ce864..65ef20b76 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -39,7 +39,7 @@
org.apache.maven.plugins
maven-deploy-plugin
- 3.1.3
+ 3.1.4
true
From 22e7e3d4e8c56184f9c91b1e0bf52d5c4aa4cf9f Mon Sep 17 00:00:00 2001
From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com>
Date: Thu, 27 Feb 2025 11:29:29 -0500
Subject: [PATCH 07/23] chore: Update generation configuration at Thu Feb 27
02:24:48 UTC 2025 (#2964)
* chore: Update generation configuration at Thu Feb 27 02:24:48 UTC 2025
* chore: generate libraries at Thu Feb 27 02:25:21 UTC 2025
---
README.md | 4 ++--
generation_config.yaml | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 344d8502e..51d7da4d9 100644
--- a/README.md
+++ b/README.md
@@ -46,12 +46,12 @@ If you are using Maven without the BOM, add this to your dependencies:
com.google.cloud
google-cloud-storage
- 2.48.2
+ 2.49.0
com.google.cloud
google-cloud-storage-control
- 2.48.2
+ 2.49.0
```
diff --git a/generation_config.yaml b/generation_config.yaml
index ebc47838e..82d425ce4 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -1,5 +1,5 @@
-gapic_generator_version: 2.53.0
-googleapis_commitish: 6bc8e91bf92cc985da5ed0c227b48f12315cb695
+gapic_generator_version: 2.54.0
+googleapis_commitish: 554575ee8d01d277344ec704e0561e9abc7f57f3
libraries_bom_version: 26.55.0
libraries:
- api_shortname: storage
From 4a69fcc16787904675e5ba15f42bcab67553a7aa Mon Sep 17 00:00:00 2001
From: ldetmer <1771267+ldetmer@users.noreply.github.com>
Date: Mon, 3 Mar 2025 15:58:16 +0000
Subject: [PATCH 08/23] feat: next release from main branch is 2.50.0 (#2968)
---
.github/release-please.yml | 7 +++++++
.github/sync-repo-settings.yaml | 17 +++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/.github/release-please.yml b/.github/release-please.yml
index 734146243..bbe99166d 100644
--- a/.github/release-please.yml
+++ b/.github/release-please.yml
@@ -59,3 +59,10 @@ branches:
- README.md
- .readme-partials.yaml
branch: 2.47.x
+ - bumpMinorPreMajor: true
+ handleGHRelease: true
+ releaseType: java-backport
+ extraFiles:
+ - README.md
+ - .readme-partials.yaml
+ branch: 2.49.x
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index b41763405..d953e4f76 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -180,6 +180,23 @@ branchProtectionRules:
- 'Kokoro - Test: Java 17 GraalVM Native Image'
- javadoc
- unmanaged_dependency_check
+ - pattern: 2.49.x
+ isAdminEnforced: true
+ requiredApprovingReviewCount: 1
+ requiresCodeOwnerReviews: true
+ requiresStrictStatusChecks: false
+ requiredStatusCheckContexts:
+ - dependencies (17)
+ - lint
+ - clirr
+ - units (8)
+ - units (11)
+ - 'Kokoro - Test: Integration'
+ - cla/google
+ - 'Kokoro - Test: Java GraalVM Native Image'
+ - 'Kokoro - Test: Java 17 GraalVM Native Image'
+ - javadoc
+ - unmanaged_dependency_check
permissionRules:
- team: yoshi-admins
permission: admin
From c16b77917f447e647fa7b2e63be9091354403949 Mon Sep 17 00:00:00 2001
From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com>
Date: Mon, 3 Mar 2025 10:59:34 -0500
Subject: [PATCH 09/23] chore: Update generation configuration at Mon Mar 3
02:25:26 UTC 2025 (#2967)
* chore: Update generation configuration at Fri Feb 28 02:24:48 UTC 2025
* chore: Update generation configuration at Sat Mar 1 02:26:46 UTC 2025
* chore: generate libraries at Sat Mar 1 02:27:25 UTC 2025
* chore: Update generation configuration at Mon Mar 3 02:25:26 UTC 2025
---
generation_config.yaml | 2 +-
.../main/proto/google/storage/control/v2/storage_control.proto | 2 +-
.../src/main/proto/google/storage/v2/storage.proto | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/generation_config.yaml b/generation_config.yaml
index 82d425ce4..63af385f5 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -1,5 +1,5 @@
gapic_generator_version: 2.54.0
-googleapis_commitish: 554575ee8d01d277344ec704e0561e9abc7f57f3
+googleapis_commitish: 02306e9ffc69ade24961ecb9d1e32779d87392f2
libraries_bom_version: 26.55.0
libraries:
- api_shortname: storage
diff --git a/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto b/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto
index 28551e3ef..9351a7d43 100644
--- a/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto
+++ b/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto b/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto
index ef5bc011f..1ca9e9bcd 100644
--- a/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto
+++ b/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto
@@ -1,4 +1,4 @@
-// Copyright 2024 Google LLC
+// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
From f091c08ab04ecdb53b2281901791e6cc38830eed Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 3 Mar 2025 18:19:45 +0100
Subject: [PATCH 10/23] test(deps): update cross product test dependencies
(#2966)
---
google-cloud-storage/pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml
index 29c543095..e68278c75 100644
--- a/google-cloud-storage/pom.xml
+++ b/google-cloud-storage/pom.xml
@@ -239,14 +239,14 @@
com.google.api.grpc
proto-google-cloud-kms-v1
- 0.152.0
+ 0.153.0
test
com.google.cloud
google-cloud-kms
- 2.61.0
+ 2.62.0
test
From 80a40c41527a5fb83a41ac4754d5be22f5cd5c2b Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 3 Mar 2025 18:20:26 +0100
Subject: [PATCH 11/23] deps: update dependency
com.google.apis:google-api-services-storage to v1-rev20250224-2.0.0 (#2969)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 61253cf36..a7cef6e28 100644
--- a/pom.xml
+++ b/pom.xml
@@ -128,7 +128,7 @@
com.google.apis
google-api-services-storage
- v1-rev20241206-2.0.0
+ v1-rev20250224-2.0.0
com.google.cloud
From 4bce92be6f86453af167e745bf0119989ed2f5e2 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Tue, 4 Mar 2025 18:18:08 +0100
Subject: [PATCH 12/23] chore(deps): update dependency
com.google.cloud:libraries-bom to v26.56.0 (#2970)
---
samples/snippets/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 88998e9ac..e04edc54d 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -31,7 +31,7 @@
com.google.cloud
libraries-bom
- 26.55.0
+ 26.56.0
pom
import
From 68e1cf21b5b88157a6cfaca2963f3ac84818c78c Mon Sep 17 00:00:00 2001
From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com>
Date: Tue, 4 Mar 2025 12:18:52 -0500
Subject: [PATCH 13/23] chore: Update generation configuration at Tue Mar 4
02:25:21 UTC 2025 (#2971)
* chore: Update generation configuration at Tue Mar 4 02:25:21 UTC 2025
* chore: generate libraries at Tue Mar 4 02:26:02 UTC 2025
---
README.md | 2 +-
generation_config.yaml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 51d7da4d9..1f4c64ce6 100644
--- a/README.md
+++ b/README.md
@@ -59,7 +59,7 @@ If you are using Maven without the BOM, add this to your dependencies:
If you are using Gradle 5.x or later, add this to your dependencies:
```Groovy
-implementation platform('com.google.cloud:libraries-bom:26.55.0')
+implementation platform('com.google.cloud:libraries-bom:26.56.0')
implementation 'com.google.cloud:google-cloud-storage'
```
diff --git a/generation_config.yaml b/generation_config.yaml
index 63af385f5..5cebf1e73 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -1,6 +1,6 @@
gapic_generator_version: 2.54.0
-googleapis_commitish: 02306e9ffc69ade24961ecb9d1e32779d87392f2
-libraries_bom_version: 26.55.0
+googleapis_commitish: 05f571eb755baad00ed592fb946004fc9c12d2cc
+libraries_bom_version: 26.56.0
libraries:
- api_shortname: storage
name_pretty: Cloud Storage
From d092c9baa6c73da56872d6b8a194f0cee7b381e4 Mon Sep 17 00:00:00 2001
From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com>
Date: Wed, 5 Mar 2025 15:05:56 -0500
Subject: [PATCH 14/23] chore: Update generation configuration at Wed Mar 5
02:25:03 UTC 2025 (#2973)
* chore: Update generation configuration at Wed Mar 5 02:25:03 UTC 2025
* chore: generate libraries at Wed Mar 5 02:25:41 UTC 2025
---
README.md | 2 +-
generation_config.yaml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 1f4c64ce6..1cf8411ae 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
com.google.cloud
libraries-bom
- 26.55.0
+ 26.56.0
pom
import
diff --git a/generation_config.yaml b/generation_config.yaml
index 5cebf1e73..84bf0153a 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -1,5 +1,5 @@
gapic_generator_version: 2.54.0
-googleapis_commitish: 05f571eb755baad00ed592fb946004fc9c12d2cc
+googleapis_commitish: f4f8efb9e05e589abf94f8086fb6d0492f3551b8
libraries_bom_version: 26.56.0
libraries:
- api_shortname: storage
From 8bcb2de22ea39cfc0b4dda07daba78ea192b5e98 Mon Sep 17 00:00:00 2001
From: BenWhitehead
Date: Wed, 5 Mar 2025 17:08:21 -0500
Subject: [PATCH 15/23] fix: update usages of String.format to explicitly pass
Locale.US (#2974)
Usage of `Storage#format(String, Object...)` will use the default locale for it's formatting. This can lead to unexpected formatting if a right-to-left language such as Arabic is the default locale.
Update all usages to use `String.format(Locale.US, pattern, Object...)` so we ensure things like headers or error messages are formatted according to the US conventions which match `en_US` and ascii byte conventions.
Incidentally, things like right-to-left formatting seem to only apply to java11+ not java8.
Fixes #2972
---
.../ApiaryUnbufferedReadableByteChannel.java | 6 ++-
.../com/google/cloud/storage/BlobInfo.java | 5 +-
.../google/cloud/storage/ByteRangeSpec.java | 19 ++++----
.../com/google/cloud/storage/Crc32cValue.java | 5 +-
.../cloud/storage/CrossTransportUtils.java | 13 ++++-
.../GapicUnbufferedReadableByteChannel.java | 5 +-
.../cloud/storage/GrpcStorageOptions.java | 5 +-
.../com/google/cloud/storage/GrpcUtils.java | 4 +-
.../java/com/google/cloud/storage/Hasher.java | 9 +++-
.../cloud/storage/HttpContentRange.java | 9 ++--
.../cloud/storage/JsonResumableSession.java | 3 +-
.../google/cloud/storage/MetadataField.java | 3 +-
.../cloud/storage/OtelStorageDecorator.java | 4 +-
...lelCompositeUploadWritableByteChannel.java | 6 ++-
.../google/cloud/storage/PostPolicyV4.java | 3 +-
.../com/google/cloud/storage/ReadCursor.java | 5 +-
.../ResumableSessionFailureScenario.java | 14 ++++--
.../cloud/storage/RewindableContent.java | 6 ++-
.../google/cloud/storage/StorageOptions.java | 6 ++-
.../google/cloud/storage/ThroughputSink.java | 2 +
.../cloud/storage/spi/v1/HttpStorageRpc.java | 6 +--
.../storage/spi/v1/HttpStorageRpcSpans.java | 7 ++-
.../BucketNameMismatchException.java | 6 ++-
.../cloud/storage/ByteRangeSpecTest.java | 9 ++--
.../cloud/storage/ChunkSegmenterTest.java | 5 +-
.../google/cloud/storage/DataGenerator.java | 3 +-
...efaultBufferedReadableByteChannelTest.java | 7 +--
...efaultBufferedWritableByteChannelTest.java | 12 +++--
.../DefaultRetryHandlingBehaviorTest.java | 7 ++-
.../com/google/cloud/storage/FakeServer.java | 3 +-
.../GenerateGrpcProtobufReflectConfig.java | 2 +
.../cloud/storage/HttpContentRangeTest.java | 48 +++++++++++++++++++
...BidiUnbufferedWritableByteChannelTest.java | 2 +
...apicUnbufferedWritableByteChannelTest.java | 6 ++-
.../ITJsonResumableSessionPutTaskTest.java | 37 +++++++++-----
.../ITJsonResumableSessionQueryTaskTest.java | 22 ++++++---
.../storage/ITJsonResumableSessionTest.java | 10 ++--
...fferedWritableByteChannelPropertyTest.java | 5 +-
.../storage/ITSyncingFileChannelTest.java | 6 ++-
.../cloud/storage/LazyReadChannelTest.java | 3 +-
...ositeUploadBlobWriteSessionConfigTest.java | 4 +-
...ompositeUploadWritableByteChannelTest.java | 4 +-
.../ThroughputMovingWindowPropertyTest.java | 5 +-
.../google/cloud/storage/UnifiedOptsTest.java | 4 +-
.../cloud/storage/V4PostPolicyTest.java | 9 ++--
.../google/cloud/storage/V4SigningTest.java | 7 ++-
.../conformance/retry/CtxFunctions.java | 4 +-
.../retry/ITRetryConformanceTest.java | 12 +++--
.../conformance/retry/RetryTestFixture.java | 6 ++-
.../storage/conformance/retry/RpcMethod.java | 3 +-
.../conformance/retry/RpcMethodMappings.java | 4 +-
.../storage/conformance/retry/State.java | 3 +-
.../retry/TestRetryConformance.java | 43 ++++++++++++++---
.../cloud/storage/it/BucketCleaner.java | 13 +++--
.../GrpcPlainRequestLoggingInterceptor.java | 24 +++++++---
.../cloud/storage/it/GrpcRequestAuditing.java | 3 +-
.../storage/it/ITBlobReadChannelTest.java | 5 +-
.../it/ITBlobReadChannelV2RetryTest.java | 5 +-
.../storage/it/ITBlobWriteChannelTest.java | 10 ++--
.../storage/it/ITGrpcInterceptorTest.java | 6 ++-
.../google/cloud/storage/it/ITGrpcTest.java | 3 +-
.../cloud/storage/it/ITNotificationTest.java | 3 +-
.../google/cloud/storage/it/ITObjectTest.java | 14 ++++--
.../storage/it/ITOptionRegressionTest.java | 5 +-
.../storage/it/ITTransferManagerTest.java | 16 +++++--
.../cloud/storage/it/RequestAuditing.java | 3 +-
.../it/runner/CrossRunIntersection.java | 3 +-
.../it/runner/StorageITLeafRunner.java | 8 +++-
.../storage/it/runner/StorageITRunner.java | 11 +++--
.../it/runner/registry/BackendResources.java | 15 ++++--
.../storage/it/runner/registry/Generator.java | 6 ++-
.../it/runner/registry/ObjectsFixture.java | 3 +-
.../storage/it/runner/registry/Registry.java | 7 ++-
.../storage/it/runner/registry/TestBench.java | 17 ++++---
.../jqwik/IamPolicyArbitraryProvider.java | 9 ++--
.../storage/jqwik/StorageArbitraries.java | 17 ++++---
76 files changed, 477 insertions(+), 175 deletions(-)
create mode 100644 google-cloud-storage/src/test/java/com/google/cloud/storage/HttpContentRangeTest.java
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/ApiaryUnbufferedReadableByteChannel.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/ApiaryUnbufferedReadableByteChannel.java
index 86afe7a98..60e4fbcdc 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/ApiaryUnbufferedReadableByteChannel.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/ApiaryUnbufferedReadableByteChannel.java
@@ -52,6 +52,7 @@
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.ScatteringByteChannel;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.Function;
@@ -318,7 +319,10 @@ private static String getHeaderValue(@NonNull HttpHeaders headers, @NonNull Stri
} else {
throw new IllegalStateException(
String.format(
- "Unexpected header type '%s' for header %s", o.getClass().getName(), headerName));
+ Locale.US,
+ "Unexpected header type '%s' for header %s",
+ o.getClass().getName(),
+ headerName));
}
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java
index 52ce09fd7..c5379005a 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java
@@ -40,6 +40,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -1441,7 +1442,7 @@ public String getMd5ToHexString() {
byte[] decodedMd5 = BaseEncoding.base64().decode(md5);
StringBuilder stringBuilder = new StringBuilder();
for (byte b : decodedMd5) {
- stringBuilder.append(String.format("%02x", b & 0xff));
+ stringBuilder.append(String.format(Locale.US, "%02x", b & 0xff));
}
return stringBuilder.toString();
}
@@ -1473,7 +1474,7 @@ public String getCrc32cToHexString() {
byte[] decodeCrc32c = BaseEncoding.base64().decode(crc32c);
StringBuilder stringBuilder = new StringBuilder();
for (byte b : decodeCrc32c) {
- stringBuilder.append(String.format("%02x", b & 0xff));
+ stringBuilder.append(String.format(Locale.US, "%02x", b & 0xff));
}
return stringBuilder.toString();
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/ByteRangeSpec.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/ByteRangeSpec.java
index 524bfe3c2..a166c5ea2 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/ByteRangeSpec.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/ByteRangeSpec.java
@@ -24,6 +24,7 @@
import com.google.common.base.MoreObjects.ToStringHelper;
import com.google.storage.v2.ReadObjectRequest;
import java.io.Serializable;
+import java.util.Locale;
import java.util.Objects;
import java.util.function.BiFunction;
import javax.annotation.concurrent.Immutable;
@@ -239,12 +240,12 @@ public ReadObjectRequest.Builder seekReadObjectRequest(ReadObjectRequest.Builder
@Override
protected String fmtAsHttpRangeHeader() throws ArithmeticException {
- return String.format("bytes=%d-%d", beginOffset, endOffsetInclusive());
+ return String.format(Locale.US, "bytes=%d-%d", beginOffset, endOffsetInclusive());
}
@Override
protected ToStringHelper append(ToStringHelper tsh) {
- return tsh.addValue(String.format("%d + %d", beginOffset, length));
+ return tsh.addValue(String.format(Locale.US, "%d + %d", beginOffset, length));
}
}
@@ -324,12 +325,12 @@ public ReadObjectRequest.Builder seekReadObjectRequest(ReadObjectRequest.Builder
@Override
protected String fmtAsHttpRangeHeader() throws ArithmeticException {
- return String.format("bytes=%d-%d", beginOffset, endOffsetInclusive());
+ return String.format(Locale.US, "bytes=%d-%d", beginOffset, endOffsetInclusive());
}
@Override
protected ToStringHelper append(ToStringHelper tsh) {
- return tsh.addValue(String.format("[%d, %d)", beginOffset, endOffsetExclusive));
+ return tsh.addValue(String.format(Locale.US, "[%d, %d)", beginOffset, endOffsetExclusive));
}
}
@@ -409,12 +410,12 @@ public ReadObjectRequest.Builder seekReadObjectRequest(ReadObjectRequest.Builder
@Override
protected String fmtAsHttpRangeHeader() throws ArithmeticException {
- return String.format("bytes=%d-%d", beginOffset, endOffsetInclusive);
+ return String.format(Locale.US, "bytes=%d-%d", beginOffset, endOffsetInclusive);
}
@Override
protected ToStringHelper append(ToStringHelper tsh) {
- return tsh.addValue(String.format("[%d, %d]", beginOffset, endOffsetInclusive));
+ return tsh.addValue(String.format(Locale.US, "[%d, %d]", beginOffset, endOffsetInclusive));
}
}
@@ -488,9 +489,9 @@ public ReadObjectRequest.Builder seekReadObjectRequest(ReadObjectRequest.Builder
@Override
protected String fmtAsHttpRangeHeader() throws ArithmeticException {
if (beginOffset > 0) {
- return String.format("bytes=%d-", beginOffset);
+ return String.format(Locale.US, "bytes=%d-", beginOffset);
} else if (beginOffset < 0) {
- return String.format("bytes=%d", beginOffset);
+ return String.format(Locale.US, "bytes=%d", beginOffset);
} else {
return null;
}
@@ -498,7 +499,7 @@ protected String fmtAsHttpRangeHeader() throws ArithmeticException {
@Override
protected ToStringHelper append(ToStringHelper tsh) {
- return tsh.addValue(String.format("[%d, +INF)", beginOffset));
+ return tsh.addValue(String.format(Locale.US, "[%d, +INF)", beginOffset));
}
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/Crc32cValue.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/Crc32cValue.java
index e66f04eab..8e1bea02b 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/Crc32cValue.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/Crc32cValue.java
@@ -16,6 +16,7 @@
package com.google.cloud.storage;
+import java.util.Locale;
import java.util.Objects;
abstract class Crc32cValue> {
@@ -64,7 +65,7 @@ static Crc32cLengthKnown of(int value, long length) {
}
static String fmtCrc32cValue(int value1) {
- return String.format("crc32c{0x%08x}", value1);
+ return String.format(Locale.US, "crc32c{0x%08x}", value1);
}
static final class Crc32cLengthUnknown extends Crc32cValue {
@@ -142,7 +143,7 @@ public Crc32cLengthKnown concat(Crc32cLengthKnown other) {
@Override
public String toString() {
- return String.format("crc32c{0x%08x (length = %d)}", value, length);
+ return String.format(Locale.US, "crc32c{0x%08x (length = %d)}", value, length);
}
@Override
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/CrossTransportUtils.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/CrossTransportUtils.java
index 1c5aa1d97..6adea4d5c 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/CrossTransportUtils.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/CrossTransportUtils.java
@@ -18,6 +18,7 @@
import com.google.cloud.storage.TransportCompatibility.Transport;
import java.util.Arrays;
+import java.util.Locale;
import java.util.stream.Collectors;
final class CrossTransportUtils {
@@ -49,12 +50,20 @@ static T throwTransportOnly(Class> clazz, String methodName, Transport tra
break;
default:
throw new IllegalStateException(
- String.format("Broken Java Enum: %s received value: '%s'", Transport.class, transport));
+ String.format(
+ Locale.US,
+ "Broken Java Enum: %s received value: '%s'",
+ Transport.class,
+ transport));
}
String message =
String.format(
+ Locale.US,
"%s#%s is only supported for %s transport. Please use %s to construct a compatible instance.",
- clazz.getName(), methodName, transport, builder);
+ clazz.getName(),
+ methodName,
+ transport,
+ builder);
throw new UnsupportedOperationException(message);
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java
index 4db4827ef..4ad5aa070 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java
@@ -42,6 +42,7 @@
import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.ScatteringByteChannel;
+import java.util.Locale;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
@@ -166,8 +167,10 @@ public long read(ByteBuffer[] dsts, int offset, int length) throws IOException {
} else if (metadata.getGeneration() != respMetadata.getGeneration()) {
throw closeWithError(
String.format(
+ Locale.US,
"Mismatch Generation between subsequent reads. Expected %d but received %d",
- metadata.getGeneration(), respMetadata.getGeneration()));
+ metadata.getGeneration(),
+ respMetadata.getGeneration()));
}
}
ChecksummedData checksummedData = resp.getChecksummedData();
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java
index 43e575a29..1ddd72f34 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java
@@ -96,6 +96,7 @@
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
@@ -210,10 +211,10 @@ private Tuple> resolveSettingsAndOpts() throw
// unless for Direct Google Access try and strip here if we can
switch (scheme) {
case "http":
- endpoint = String.format("%s:%s", uri.getHost(), port > 0 ? port : 80);
+ endpoint = String.format(Locale.US, "%s:%s", uri.getHost(), port > 0 ? port : 80);
break;
case "https":
- endpoint = String.format("%s:%s", uri.getHost(), port > 0 ? port : 443);
+ endpoint = String.format(Locale.US, "%s:%s", uri.getHost(), port > 0 ? port : 443);
break;
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcUtils.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcUtils.java
index 7e8101155..5fd7c5a27 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcUtils.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcUtils.java
@@ -19,6 +19,7 @@
import com.google.api.gax.grpc.GrpcCallContext;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import java.util.Locale;
final class GrpcUtils {
@@ -28,7 +29,8 @@ static GrpcCallContext contextWithBucketName(String bucketName, GrpcCallContext
if (bucketName != null && !bucketName.isEmpty()) {
return baseContext.withExtraHeaders(
ImmutableMap.of(
- "x-goog-request-params", ImmutableList.of(String.format("bucket=%s", bucketName))));
+ "x-goog-request-params",
+ ImmutableList.of(String.format(Locale.US, "bucket=%s", bucketName))));
}
return baseContext;
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/Hasher.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/Hasher.java
index d7741b7d9..a255550bb 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/Hasher.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/Hasher.java
@@ -21,6 +21,7 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.Locale;
import java.util.function.Supplier;
import javax.annotation.concurrent.Immutable;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -98,8 +99,10 @@ public void validate(Crc32cValue> expected, List b) throws IOExcep
if (!actual.eqValue(expected)) {
throw new IOException(
String.format(
+ Locale.US,
"Mismatch checksum value. Expected %s actual %s",
- expected.debugString(), actual.debugString()));
+ expected.debugString(),
+ actual.debugString()));
}
}
@@ -109,8 +112,10 @@ public void validate(Crc32cValue> expected, Supplier b) throws IOE
if (!actual.eqValue(expected)) {
throw new IOException(
String.format(
+ Locale.US,
"Mismatch checksum value. Expected %s actual %s",
- expected.debugString(), actual.debugString()));
+ expected.debugString(),
+ actual.debugString()));
}
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/HttpContentRange.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/HttpContentRange.java
index 49fc5a194..a069c2495 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/HttpContentRange.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/HttpContentRange.java
@@ -19,6 +19,7 @@
import static com.google.common.base.Preconditions.checkArgument;
import com.google.common.base.MoreObjects;
+import java.util.Locale;
import java.util.Objects;
import java.util.function.UnaryOperator;
@@ -91,7 +92,8 @@ private Incomplete(ByteRangeSpec spec) {
@Override
public String getHeaderValue() {
- return String.format("bytes %d-%d/*", spec.beginOffset(), spec.endOffsetInclusive());
+ return String.format(
+ Locale.US, "bytes %d-%d/*", spec.beginOffset(), spec.endOffsetInclusive());
}
@Override
@@ -145,7 +147,8 @@ private Total(ByteRangeSpec spec, long size) {
@Override
public String getHeaderValue() {
- return String.format("bytes %d-%d/%d", spec.beginOffset(), spec.endOffsetInclusive(), size);
+ return String.format(
+ Locale.US, "bytes %d-%d/%d", spec.beginOffset(), spec.endOffsetInclusive(), size);
}
@Override
@@ -202,7 +205,7 @@ private Size(long size) {
@Override
public String getHeaderValue() {
- return String.format("bytes */%d", size);
+ return String.format(Locale.US, "bytes */%d", size);
}
@Override
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonResumableSession.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonResumableSession.java
index e29094fd0..f21d4ce67 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonResumableSession.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/JsonResumableSession.java
@@ -23,13 +23,14 @@
import com.google.cloud.storage.spi.v1.HttpRpcContext;
import com.google.cloud.storage.spi.v1.HttpStorageRpc;
import io.opencensus.trace.EndSpanOptions;
+import java.util.Locale;
import java.util.concurrent.atomic.AtomicBoolean;
import org.checkerframework.checker.nullness.qual.Nullable;
final class JsonResumableSession {
static final String SPAN_NAME_WRITE =
- String.format("Sent.%s.write", HttpStorageRpc.class.getName());
+ String.format(Locale.US, "Sent.%s.write", HttpStorageRpc.class.getName());
static final EndSpanOptions END_SPAN_OPTIONS =
EndSpanOptions.builder().setSampleToLocalSpanStore(true).build();
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/MetadataField.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/MetadataField.java
index fb76af6e9..4070736c8 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/MetadataField.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/MetadataField.java
@@ -21,6 +21,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableMap;
import java.util.Comparator;
+import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import org.checkerframework.checker.nullness.qual.NonNull;
@@ -102,7 +103,7 @@ public long getEnd() {
}
String encode() {
- return String.format("%04d-%04d", begin, end);
+ return String.format(Locale.US, "%04d-%04d", begin, end);
}
static PartRange decode(String s) {
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java
index dc92c3420..b1b7f6501 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java
@@ -278,7 +278,7 @@ public Blob get(String bucket, String blob, BlobGetOption... options) {
Span span =
tracer
.spanBuilder("get")
- .setAttribute("gsutil.uri", String.format("gs://%s/%s", bucket, blob))
+ .setAttribute("gsutil.uri", String.format(Locale.US, "gs://%s/%s", bucket, blob))
.startSpan();
try (Scope ignore = span.makeCurrent()) {
return delegate.get(bucket, blob, options);
@@ -1477,7 +1477,7 @@ static Storage decorate(Storage delegate, OpenTelemetry otel, Transport transpor
}
private static @NonNull String fmtBucket(String bucket) {
- return String.format("gs://%s/", bucket);
+ return String.format(Locale.US, "gs://%s/", bucket);
}
private static final class TracerDecorator implements Tracer {
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/ParallelCompositeUploadWritableByteChannel.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/ParallelCompositeUploadWritableByteChannel.java
index b824acf4d..4b0a06e3d 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/ParallelCompositeUploadWritableByteChannel.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/ParallelCompositeUploadWritableByteChannel.java
@@ -63,6 +63,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
@@ -245,8 +246,10 @@ public void close() throws IOException {
buildParallelCompositeUploadException(
ApiExceptionFactory.createException(
String.format(
+ Locale.US,
"CRC32C Checksum mismatch. expected: [%s] but was: [%s]",
- expectedCrc32c, crc32c),
+ expectedCrc32c,
+ crc32c),
null,
GrpcStatusCode.of(Code.DATA_LOSS),
false),
@@ -477,6 +480,7 @@ private ApiFuture asyncCleanupAfterFailure(Throwable originalFailure) {
String message =
String.format(
+ Locale.US,
"Incomplete parallel composite upload cleanup after previous error. Unknown object ids: %s",
failedGsUris);
StorageException storageException = new StorageException(0, message, null);
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java
index 2cd231147..fd5963265 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java
@@ -24,6 +24,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashSet;
+import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -416,7 +417,7 @@ public String toJson() {
for (int i = 0; i < jsonArray.length; i++) {
char c = jsonArray[i];
if (c >= 128) { // is a unicode character
- escapedJson.append(String.format("\\u%04x", (int) c));
+ escapedJson.append(String.format(Locale.US, "\\u%04x", (int) c));
} else {
switch (c) {
case '\\':
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/ReadCursor.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/ReadCursor.java
index b65a6e257..1af690af2 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/ReadCursor.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/ReadCursor.java
@@ -17,6 +17,8 @@
import static com.google.common.base.Preconditions.checkArgument;
+import java.util.Locale;
+
/**
* Shrink wraps a beginning, offset and limit for tracking state of an individual invocation of
* {@link #read}
@@ -47,6 +49,7 @@ public long read() {
@Override
public String toString() {
- return String.format("ReadCursor{begin=%d, offset=%d, limit=%d}", beginning, offset, limit);
+ return String.format(
+ Locale.US, "ReadCursor{begin=%d, offset=%d, limit=%d}", beginning, offset, limit);
}
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/ResumableSessionFailureScenario.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/ResumableSessionFailureScenario.java
index 390b90dcf..b82dc6eeb 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/ResumableSessionFailureScenario.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/ResumableSessionFailureScenario.java
@@ -35,6 +35,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -145,7 +146,10 @@ static StorageException toStorageException(
ResumableSessionFailureScenario.toStorageException(
cause.getStatusCode(),
String.format(
- "%d %s", cause.getStatusCode(), statusMessage == null ? "" : statusMessage),
+ Locale.US,
+ "%d %s",
+ cause.getStatusCode(),
+ statusMessage == null ? "" : statusMessage),
"",
uploadId,
response,
@@ -368,8 +372,10 @@ private static void fmtWriteObjectRequest(
sb.append("\n").append(prefix).append(t2);
sb.append(
String.format(
+ Locale.US,
"checksummed_data: {range: [%d:%d]",
- writeOffset, writeOffset + checksummedData.getContent().size()));
+ writeOffset,
+ writeOffset + checksummedData.getContent().size()));
if (checksummedData.hasCrc32C()) {
sb.append(", crc32c: ").append(checksummedData.getCrc32C());
}
@@ -402,8 +408,10 @@ private static void fmtBidiWriteObjectRequest(
sb.append("\n").append(prefix).append(t2);
sb.append(
String.format(
+ Locale.US,
"checksummed_data: {range: [%d:%d]",
- writeOffset, writeOffset + checksummedData.getContent().size()));
+ writeOffset,
+ writeOffset + checksummedData.getContent().size()));
if (checksummedData.hasCrc32C()) {
sb.append(", crc32c: ").append(checksummedData.getCrc32C());
}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/RewindableContent.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/RewindableContent.java
index ef215573f..c765d61a8 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/RewindableContent.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/RewindableContent.java
@@ -31,6 +31,7 @@
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
+import java.util.Locale;
abstract class RewindableContent extends AbstractHttpContent {
@@ -65,8 +66,11 @@ public static RewindableContent of(ByteBuffer[] srcs, int srcsOffset, int srcsLe
if (!(0 <= srcsOffset && srcsOffset <= srcs.length)) {
throw new ArrayIndexOutOfBoundsException(
String.format(
+ Locale.US,
"srcsOffset out of bounds (0 <= %d && %d <= %d)",
- srcsOffset, srcsOffset, srcs.length));
+ srcsOffset,
+ srcsOffset,
+ srcs.length));
}
Preconditions.checkArgument(srcsLength >= 0, "srcsLength >= 0 (%d >= 0)", srcsLength);
int end = srcsOffset + srcsLength;
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/StorageOptions.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/StorageOptions.java
index f149db110..e0dabea4b 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/StorageOptions.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/StorageOptions.java
@@ -32,6 +32,7 @@
import io.opentelemetry.api.OpenTelemetry;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Locale;
import java.util.Properties;
import org.checkerframework.checker.nullness.qual.NonNull;
@@ -46,7 +47,10 @@ public abstract class StorageOptions extends ServiceOptions
String.format(
+ Locale.US,
"{%s} (%01.03f MiB/s) %s",
prefix,
((r.numBytes * MiB)
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java
index 286654dea..3111fa246 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java
@@ -322,7 +322,7 @@ public void submit() {
// Here we only add a annotation to at least know how much time each batch takes.
span.addAnnotation("Execute batch request");
batch.setBatchUrl(
- new GenericUrl(String.format("%s/batch/storage/v1", options.getHost())));
+ new GenericUrl(String.format(Locale.US, "%s/batch/storage/v1", options.getHost())));
batch.execute();
}
} catch (IOException ex) {
@@ -901,7 +901,7 @@ public long read(
}
if (position > 0) {
- req.getRequestHeaders().setRange(String.format("bytes=%d-", position));
+ req.getRequestHeaders().setRange(String.format(Locale.US, "bytes=%d-", position));
}
MediaHttpDownloader mediaHttpDownloader = req.getMediaHttpDownloader();
mediaHttpDownloader.setDirectDownloadEnabled(true);
@@ -1021,7 +1021,7 @@ public StorageObject queryCompletedResumableUpload(String uploadId, long totalBy
try {
GenericUrl url = new GenericUrl(uploadId);
HttpRequest req = storage.getRequestFactory().buildPutRequest(url, new EmptyContent());
- req.getHeaders().setContentRange(String.format("bytes */%s", totalBytes));
+ req.getHeaders().setContentRange(String.format(Locale.US, "bytes */%s", totalBytes));
req.setParser(storage.getObjectParser());
HttpResponse response = req.execute();
// If the response is 200
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpcSpans.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpcSpans.java
index dc4b05336..8fa049d01 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpcSpans.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpcSpans.java
@@ -17,6 +17,7 @@
package com.google.cloud.storage.spi.v1;
import io.opencensus.trace.EndSpanOptions;
+import java.util.Locale;
/** Helper class for instrumenting {@link HttpStorageRpc} with Open Census APIs. */
class HttpStorageRpcSpans {
@@ -102,7 +103,11 @@ class HttpStorageRpcSpans {
static String getTraceSpanName(String methodDescriptor) {
return String.format(
- "%s.%s.%s", SPAN_NAME_CLIENT_PREFIX, HttpStorageRpc.class.getName(), methodDescriptor);
+ Locale.US,
+ "%s.%s.%s",
+ SPAN_NAME_CLIENT_PREFIX,
+ HttpStorageRpc.class.getName(),
+ methodDescriptor);
}
private HttpStorageRpcSpans() {}
diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/BucketNameMismatchException.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/BucketNameMismatchException.java
index 039172298..dd8063b9d 100644
--- a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/BucketNameMismatchException.java
+++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/BucketNameMismatchException.java
@@ -16,12 +16,16 @@
package com.google.cloud.storage.transfermanager;
+import java.util.Locale;
+
public final class BucketNameMismatchException extends RuntimeException {
public BucketNameMismatchException(String actual, String expected) {
super(
String.format(
+ Locale.US,
"Bucket name in produced BlobInfo did not match bucket name from config. (%s != %s)",
- actual, expected));
+ actual,
+ expected));
}
}
diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/ByteRangeSpecTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/ByteRangeSpecTest.java
index abb5a9536..66e1bc968 100644
--- a/google-cloud-storage/src/test/java/com/google/cloud/storage/ByteRangeSpecTest.java
+++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/ByteRangeSpecTest.java
@@ -31,6 +31,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
+import java.util.Locale;
import java.util.stream.Stream;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -644,11 +645,11 @@ public static Iterable