From 0ef9e90d14e35eec9dcbb97107005e74a3c7d0be Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 20:31:34 -0400 Subject: [PATCH 1/6] chore(main): release 2.60.3-SNAPSHOT (#3865) :robot: I have created a release *beep* *boop* ---
2.60.3-SNAPSHOT ### Updating meta-information for bleeding-edge SNAPSHOT release.
--- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .cloudbuild/graalvm/cloudbuild-test-a.yaml | 2 +- .cloudbuild/graalvm/cloudbuild-test-b.yaml | 2 +- .cloudbuild/graalvm/cloudbuild-test-c.yaml | 2 +- .cloudbuild/graalvm/cloudbuild.yaml | 2 +- .../cloudbuild-library-generation-push.yaml | 2 +- .../library_generation.Dockerfile | 2 +- .../library_generation_airlock.Dockerfile | 2 +- WORKSPACE | 2 +- api-common-java/pom.xml | 4 +- coverage-report/pom.xml | 8 ++-- gapic-generator-java-bom/pom.xml | 34 +++++++------- gapic-generator-java-pom-parent/pom.xml | 2 +- gapic-generator-java/pom.xml | 6 +-- gax-java/dependencies.properties | 8 ++-- gax-java/gax-bom/pom.xml | 20 ++++---- gax-java/gax-grpc/pom.xml | 4 +- gax-java/gax-httpjson/pom.xml | 4 +- gax-java/gax/pom.xml | 4 +- gax-java/pom.xml | 14 +++--- .../.kokoro/presubmit/graalvm-native-a.cfg | 2 +- .../.kokoro/presubmit/graalvm-native-b.cfg | 2 +- .../.kokoro/presubmit/graalvm-native-c.cfg | 2 +- .../grpc-google-common-protos/pom.xml | 4 +- java-common-protos/pom.xml | 10 ++-- .../proto-google-common-protos/pom.xml | 4 +- java-core/google-cloud-core-bom/pom.xml | 10 ++-- java-core/google-cloud-core-grpc/pom.xml | 4 +- java-core/google-cloud-core-http/pom.xml | 4 +- java-core/google-cloud-core/pom.xml | 4 +- java-core/pom.xml | 6 +-- java-iam/grpc-google-iam-v1/pom.xml | 4 +- java-iam/grpc-google-iam-v2/pom.xml | 4 +- java-iam/grpc-google-iam-v2beta/pom.xml | 4 +- java-iam/grpc-google-iam-v3/pom.xml | 4 +- java-iam/grpc-google-iam-v3beta/pom.xml | 4 +- java-iam/pom.xml | 32 ++++++------- java-iam/proto-google-iam-v1/pom.xml | 4 +- java-iam/proto-google-iam-v2/pom.xml | 4 +- java-iam/proto-google-iam-v2beta/pom.xml | 4 +- java-iam/proto-google-iam-v3/pom.xml | 4 +- java-iam/proto-google-iam-v3beta/pom.xml | 4 +- .../dependency-convergence-check/pom.xml | 2 +- .../first-party-dependencies/pom.xml | 10 ++-- java-shared-dependencies/pom.xml | 8 ++-- .../third-party-dependencies/pom.xml | 4 +- .../upper-bound-check/pom.xml | 4 +- java-showcase/pom.xml | 2 +- sdk-platform-java-config/pom.xml | 4 +- versions.txt | 46 +++++++++---------- 49 files changed, 164 insertions(+), 164 deletions(-) diff --git a/.cloudbuild/graalvm/cloudbuild-test-a.yaml b/.cloudbuild/graalvm/cloudbuild-test-a.yaml index 9cc05a834c..447e7cbc9c 100644 --- a/.cloudbuild/graalvm/cloudbuild-test-a.yaml +++ b/.cloudbuild/graalvm/cloudbuild-test-a.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.2' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' options: machineType: 'E2_HIGHCPU_8' diff --git a/.cloudbuild/graalvm/cloudbuild-test-b.yaml b/.cloudbuild/graalvm/cloudbuild-test-b.yaml index dc2ac7adf1..ee6dc7d9a4 100644 --- a/.cloudbuild/graalvm/cloudbuild-test-b.yaml +++ b/.cloudbuild/graalvm/cloudbuild-test-b.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.2' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' options: machineType: 'E2_HIGHCPU_8' diff --git a/.cloudbuild/graalvm/cloudbuild-test-c.yaml b/.cloudbuild/graalvm/cloudbuild-test-c.yaml index 28a68dadaf..ee2b3aaf37 100644 --- a/.cloudbuild/graalvm/cloudbuild-test-c.yaml +++ b/.cloudbuild/graalvm/cloudbuild-test-c.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.2' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' options: machineType: 'E2_HIGHCPU_8' diff --git a/.cloudbuild/graalvm/cloudbuild.yaml b/.cloudbuild/graalvm/cloudbuild.yaml index fbf37b9e2f..c24899ca59 100644 --- a/.cloudbuild/graalvm/cloudbuild.yaml +++ b/.cloudbuild/graalvm/cloudbuild.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.2' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' steps: # GraalVM A build diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml index df5409bc78..3dc8d94c16 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _GAPIC_GENERATOR_JAVA_VERSION: '2.60.2' # {x-version-update:gapic-generator-java:current} + _GAPIC_GENERATOR_JAVA_VERSION: '2.60.3-SNAPSHOT' # {x-version-update:gapic-generator-java:current} _PRIVATE_IMAGE_NAME: "us-docker.pkg.dev/java-hermetic-build-prod/private-resources/java-library-generation" _PRIVATE_SHA_IMAGE_ID: "${_PRIVATE_IMAGE_NAME}:${COMMIT_SHA}" _PRIVATE_LATEST_IMAGE_ID: "${_PRIVATE_IMAGE_NAME}:latest" diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 04e052080c..8449074f59 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -21,7 +21,7 @@ FROM docker.io/library/maven:3.9.9-eclipse-temurin-17-alpine@sha256:969014ee8852 WORKDIR /sdk-platform-java COPY . . # {x-version-update-start:gapic-generator-java:current} -ENV DOCKER_GAPIC_GENERATOR_VERSION="2.60.2" +ENV DOCKER_GAPIC_GENERATOR_VERSION="2.60.3-SNAPSHOT" # {x-version-update-end} # Download the java formatter diff --git a/.cloudbuild/library_generation/library_generation_airlock.Dockerfile b/.cloudbuild/library_generation/library_generation_airlock.Dockerfile index 82e7c6a5c8..cd2efad1f2 100644 --- a/.cloudbuild/library_generation/library_generation_airlock.Dockerfile +++ b/.cloudbuild/library_generation/library_generation_airlock.Dockerfile @@ -21,7 +21,7 @@ FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:d3f0 WORKDIR /sdk-platform-java COPY . . # {x-version-update-start:gapic-generator-java:current} -ENV DOCKER_GAPIC_GENERATOR_VERSION="2.60.2" +ENV DOCKER_GAPIC_GENERATOR_VERSION="2.60.3-SNAPSHOT" # {x-version-update-end} # Download the java formatter diff --git a/WORKSPACE b/WORKSPACE index 7afec9f774..a5b262b2de 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -58,7 +58,7 @@ load("@rules_jvm_external//:defs.bzl", "maven_install") load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS") load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS") -_gapic_generator_java_version = "2.60.2" # {x-version-update:gapic-generator-java:current} +_gapic_generator_java_version = "2.60.3-SNAPSHOT" # {x-version-update:gapic-generator-java:current} maven_install( artifacts = [ diff --git a/api-common-java/pom.xml b/api-common-java/pom.xml index 6691602939..f336dbcc73 100644 --- a/api-common-java/pom.xml +++ b/api-common-java/pom.xml @@ -5,14 +5,14 @@ com.google.api api-common jar - 2.51.2 + 2.51.3-SNAPSHOT API Common Common utilities for Google APIs in Java com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent diff --git a/coverage-report/pom.xml b/coverage-report/pom.xml index f5613ab2db..3ff18a936c 100644 --- a/coverage-report/pom.xml +++ b/coverage-report/pom.xml @@ -31,22 +31,22 @@ com.google.api gax - 2.68.2 + 2.68.3-SNAPSHOT com.google.api gax-grpc - 2.68.2 + 2.68.3-SNAPSHOT com.google.api gax-httpjson - 2.68.2 + 2.68.3-SNAPSHOT com.google.api api-common - 2.51.2 + 2.51.3-SNAPSHOT diff --git a/gapic-generator-java-bom/pom.xml b/gapic-generator-java-bom/pom.xml index 51d2550152..f5a85094b9 100644 --- a/gapic-generator-java-bom/pom.xml +++ b/gapic-generator-java-bom/pom.xml @@ -4,7 +4,7 @@ com.google.api gapic-generator-java-bom pom - 2.60.2 + 2.60.3-SNAPSHOT GAPIC Generator Java BOM BOM for the libraries in gapic-generator-java repository. Users should not @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -75,81 +75,81 @@ com.google.api api-common - 2.51.2 + 2.51.3-SNAPSHOT com.google.api gax-bom - 2.68.2 + 2.68.3-SNAPSHOT pom import com.google.api gapic-generator-java - 2.60.2 + 2.60.3-SNAPSHOT com.google.api.grpc grpc-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT com.google.api.grpc proto-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT com.google.api.grpc proto-google-iam-v1 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-iam-v2 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-iam-v2beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-iam-v3 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-iam-v3beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v1 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v2 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v2beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v3 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v3beta - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index f2478bba2f..40d8adfc44 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT pom GAPIC Generator Java POM Parent https://github.com/googleapis/sdk-platform-java diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index 8904e5482e..f0fcf3dbe4 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api gapic-generator-java - 2.60.2 + 2.60.3-SNAPSHOT GAPIC Generator Java GAPIC generator Java @@ -22,7 +22,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -31,7 +31,7 @@ com.google.api gapic-generator-java-bom - 2.60.2 + 2.60.3-SNAPSHOT pom import diff --git a/gax-java/dependencies.properties b/gax-java/dependencies.properties index 70710ffd9f..da24a93f12 100644 --- a/gax-java/dependencies.properties +++ b/gax-java/dependencies.properties @@ -8,16 +8,16 @@ # Versions of oneself # {x-version-update-start:gax:current} -version.gax=2.68.2 +version.gax=2.68.3-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_grpc=2.68.2 +version.gax_grpc=2.68.3-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_bom=2.68.2 +version.gax_bom=2.68.3-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_httpjson=2.68.2 +version.gax_httpjson=2.68.3-SNAPSHOT # {x-version-update-end} # Versions for dependencies which actual artifacts differ between Bazel and Gradle. diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml index 3a88fce670..a12f792120 100644 --- a/gax-java/gax-bom/pom.xml +++ b/gax-java/gax-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api gax-bom - 2.68.2 + 2.68.3-SNAPSHOT pom GAX (Google Api eXtensions) for Java (BOM) Google Api eXtensions for Java (BOM) @@ -43,55 +43,55 @@ com.google.api gax - 2.68.2 + 2.68.3-SNAPSHOT com.google.api gax - 2.68.2 + 2.68.3-SNAPSHOT test-jar testlib com.google.api gax - 2.68.2 + 2.68.3-SNAPSHOT testlib com.google.api gax-grpc - 2.68.2 + 2.68.3-SNAPSHOT com.google.api gax-grpc - 2.68.2 + 2.68.3-SNAPSHOT test-jar testlib com.google.api gax-grpc - 2.68.2 + 2.68.3-SNAPSHOT testlib com.google.api gax-httpjson - 2.68.2 + 2.68.3-SNAPSHOT com.google.api gax-httpjson - 2.68.2 + 2.68.3-SNAPSHOT test-jar testlib com.google.api gax-httpjson - 2.68.2 + 2.68.3-SNAPSHOT testlib diff --git a/gax-java/gax-grpc/pom.xml b/gax-java/gax-grpc/pom.xml index fdd34d8e33..d0167b744f 100644 --- a/gax-java/gax-grpc/pom.xml +++ b/gax-java/gax-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-grpc - 2.68.2 + 2.68.3-SNAPSHOT jar GAX (Google Api eXtensions) for Java (gRPC) Google Api eXtensions for Java (gRPC) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.68.2 + 2.68.3-SNAPSHOT diff --git a/gax-java/gax-httpjson/pom.xml b/gax-java/gax-httpjson/pom.xml index bc882c8772..2cf24daec2 100644 --- a/gax-java/gax-httpjson/pom.xml +++ b/gax-java/gax-httpjson/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-httpjson - 2.68.2 + 2.68.3-SNAPSHOT jar GAX (Google Api eXtensions) for Java (HTTP JSON) Google Api eXtensions for Java (HTTP JSON) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.68.2 + 2.68.3-SNAPSHOT diff --git a/gax-java/gax/pom.xml b/gax-java/gax/pom.xml index c14ca1f552..284faf514f 100644 --- a/gax-java/gax/pom.xml +++ b/gax-java/gax/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax - 2.68.2 + 2.68.3-SNAPSHOT jar GAX (Google Api eXtensions) for Java (Core) Google Api eXtensions for Java (Core) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.68.2 + 2.68.3-SNAPSHOT diff --git a/gax-java/pom.xml b/gax-java/pom.xml index 728e9dc25a..6131a83347 100644 --- a/gax-java/pom.xml +++ b/gax-java/pom.xml @@ -4,14 +4,14 @@ com.google.api gax-parent pom - 2.68.2 + 2.68.3-SNAPSHOT GAX (Google Api eXtensions) for Java (Parent) Google Api eXtensions for Java (Parent) com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -50,7 +50,7 @@ com.google.api api-common - 2.51.2 + 2.51.3-SNAPSHOT com.google.auth @@ -98,24 +98,24 @@ com.google.api gax - 2.68.2 + 2.68.3-SNAPSHOT com.google.api gax - 2.68.2 + 2.68.3-SNAPSHOT test-jar testlib com.google.api.grpc proto-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT com.google.api.grpc grpc-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT io.grpc diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg index 96b4fed86f..b27fd352d8 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.3-SNAPSHOT" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg index 76f0483314..9828658e62 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.3-SNAPSHOT" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg index 277aa2338d..201f3358cd 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.3-SNAPSHOT" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/java-common-protos/grpc-google-common-protos/pom.xml b/java-common-protos/grpc-google-common-protos/pom.xml index 39370d5a27..4c47e74c88 100644 --- a/java-common-protos/grpc-google-common-protos/pom.xml +++ b/java-common-protos/grpc-google-common-protos/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT grpc-google-common-protos GRPC library for grpc-google-common-protos com.google.api.grpc google-common-protos-parent - 2.59.2 + 2.59.3-SNAPSHOT diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index 713d9b27ef..e9670eaf89 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -4,7 +4,7 @@ com.google.api.grpc google-common-protos-parent pom - 2.59.2 + 2.59.3-SNAPSHOT Google Common Protos Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -51,7 +51,7 @@ com.google.cloud third-party-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import @@ -65,7 +65,7 @@ com.google.api.grpc grpc-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT io.grpc @@ -77,7 +77,7 @@ com.google.api.grpc proto-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT com.google.guava diff --git a/java-common-protos/proto-google-common-protos/pom.xml b/java-common-protos/proto-google-common-protos/pom.xml index 645a21b5ff..9644d84aea 100644 --- a/java-common-protos/proto-google-common-protos/pom.xml +++ b/java-common-protos/proto-google-common-protos/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT proto-google-common-protos PROTO library for proto-google-common-protos com.google.api.grpc google-common-protos-parent - 2.59.2 + 2.59.3-SNAPSHOT diff --git a/java-core/google-cloud-core-bom/pom.xml b/java-core/google-cloud-core-bom/pom.xml index 9eaa813cf6..96d0ad6593 100644 --- a/java-core/google-cloud-core-bom/pom.xml +++ b/java-core/google-cloud-core-bom/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.cloud google-cloud-core-bom - 2.58.2 + 2.58.3-SNAPSHOT pom com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../../gapic-generator-java-pom-parent @@ -23,17 +23,17 @@ com.google.cloud google-cloud-core - 2.58.2 + 2.58.3-SNAPSHOT com.google.cloud google-cloud-core-grpc - 2.58.2 + 2.58.3-SNAPSHOT com.google.cloud google-cloud-core-http - 2.58.2 + 2.58.3-SNAPSHOT diff --git a/java-core/google-cloud-core-grpc/pom.xml b/java-core/google-cloud-core-grpc/pom.xml index 8e759072e7..86ace28180 100644 --- a/java-core/google-cloud-core-grpc/pom.xml +++ b/java-core/google-cloud-core-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-core-grpc - 2.58.2 + 2.58.3-SNAPSHOT jar Google Cloud Core gRPC @@ -12,7 +12,7 @@ com.google.cloud google-cloud-core-parent - 2.58.2 + 2.58.3-SNAPSHOT google-cloud-core-grpc diff --git a/java-core/google-cloud-core-http/pom.xml b/java-core/google-cloud-core-http/pom.xml index ddbb38aab6..2d5afa20ce 100644 --- a/java-core/google-cloud-core-http/pom.xml +++ b/java-core/google-cloud-core-http/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-core-http - 2.58.2 + 2.58.3-SNAPSHOT jar Google Cloud Core HTTP @@ -12,7 +12,7 @@ com.google.cloud google-cloud-core-parent - 2.58.2 + 2.58.3-SNAPSHOT google-cloud-core-http diff --git a/java-core/google-cloud-core/pom.xml b/java-core/google-cloud-core/pom.xml index 1f9e2eff7e..1fe07d5bae 100644 --- a/java-core/google-cloud-core/pom.xml +++ b/java-core/google-cloud-core/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-core - 2.58.2 + 2.58.3-SNAPSHOT jar Google Cloud Core @@ -12,7 +12,7 @@ com.google.cloud google-cloud-core-parent - 2.58.2 + 2.58.3-SNAPSHOT google-cloud-core diff --git a/java-core/pom.xml b/java-core/pom.xml index 1cbf25f09a..1527484c90 100644 --- a/java-core/pom.xml +++ b/java-core/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-core-parent pom - 2.58.2 + 2.58.3-SNAPSHOT Google Cloud Core Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -33,7 +33,7 @@ com.google.cloud google-cloud-shared-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import diff --git a/java-iam/grpc-google-iam-v1/pom.xml b/java-iam/grpc-google-iam-v1/pom.xml index acc66dd24e..275b0d9c05 100644 --- a/java-iam/grpc-google-iam-v1/pom.xml +++ b/java-iam/grpc-google-iam-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v1 - 1.54.2 + 1.54.3-SNAPSHOT grpc-google-iam-v1 GRPC library for grpc-google-iam-v1 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v2/pom.xml b/java-iam/grpc-google-iam-v2/pom.xml index 14f7aadfa0..6ce681fb51 100644 --- a/java-iam/grpc-google-iam-v2/pom.xml +++ b/java-iam/grpc-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2 - 1.54.2 + 1.54.3-SNAPSHOT grpc-google-iam-v2 GRPC library for proto-google-iam-v2 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v2beta/pom.xml b/java-iam/grpc-google-iam-v2beta/pom.xml index 919eb7c24c..c98f4ecf9f 100644 --- a/java-iam/grpc-google-iam-v2beta/pom.xml +++ b/java-iam/grpc-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2beta - 1.54.2 + 1.54.3-SNAPSHOT grpc-google-iam-v2beta GRPC library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v3/pom.xml b/java-iam/grpc-google-iam-v3/pom.xml index f65e63af98..85265bb902 100644 --- a/java-iam/grpc-google-iam-v3/pom.xml +++ b/java-iam/grpc-google-iam-v3/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v3 - 1.54.2 + 1.54.3-SNAPSHOT grpc-google-iam-v3 GRPC library for proto-google-iam-v3 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v3beta/pom.xml b/java-iam/grpc-google-iam-v3beta/pom.xml index 81d486d50f..8df986d01c 100644 --- a/java-iam/grpc-google-iam-v3beta/pom.xml +++ b/java-iam/grpc-google-iam-v3beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v3beta - 1.54.2 + 1.54.3-SNAPSHOT grpc-google-iam-v3beta GRPC library for proto-google-iam-v3beta com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/pom.xml b/java-iam/pom.xml index 57e71bf95c..72bdc919d6 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-iam-parent pom - 1.54.2 + 1.54.3-SNAPSHOT Google IAM Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -50,19 +50,19 @@ com.google.cloud third-party-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import com.google.api.grpc proto-google-iam-v3beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v3beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.guava @@ -88,59 +88,59 @@ com.google.api gax-bom - 2.68.2 + 2.68.3-SNAPSHOT pom import com.google.api api-common - 2.51.2 + 2.51.3-SNAPSHOT com.google.api.grpc proto-google-iam-v2 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v2 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-common-protos - 2.59.2 + 2.59.3-SNAPSHOT com.google.api.grpc proto-google-iam-v2beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v1 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v2beta - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-iam-v1 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc proto-google-iam-v3 - 1.54.2 + 1.54.3-SNAPSHOT com.google.api.grpc grpc-google-iam-v3 - 1.54.2 + 1.54.3-SNAPSHOT javax.annotation diff --git a/java-iam/proto-google-iam-v1/pom.xml b/java-iam/proto-google-iam-v1/pom.xml index c035af22f1..1212184642 100644 --- a/java-iam/proto-google-iam-v1/pom.xml +++ b/java-iam/proto-google-iam-v1/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v1 - 1.54.2 + 1.54.3-SNAPSHOT proto-google-iam-v1 PROTO library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/proto-google-iam-v2/pom.xml b/java-iam/proto-google-iam-v2/pom.xml index d0dc5a3857..6297301276 100644 --- a/java-iam/proto-google-iam-v2/pom.xml +++ b/java-iam/proto-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2 - 1.54.2 + 1.54.3-SNAPSHOT proto-google-iam-v2 Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/proto-google-iam-v2beta/pom.xml b/java-iam/proto-google-iam-v2beta/pom.xml index 4089e8338b..99258cf507 100644 --- a/java-iam/proto-google-iam-v2beta/pom.xml +++ b/java-iam/proto-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2beta - 1.54.2 + 1.54.3-SNAPSHOT proto-google-iam-v2beta Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/proto-google-iam-v3/pom.xml b/java-iam/proto-google-iam-v3/pom.xml index 6b35bf95e2..dd6f011d82 100644 --- a/java-iam/proto-google-iam-v3/pom.xml +++ b/java-iam/proto-google-iam-v3/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v3 - 1.54.2 + 1.54.3-SNAPSHOT proto-google-iam-v3 Proto library for proto-google-iam-v3 com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-iam/proto-google-iam-v3beta/pom.xml b/java-iam/proto-google-iam-v3beta/pom.xml index 73a89dec89..841c663dfb 100644 --- a/java-iam/proto-google-iam-v3beta/pom.xml +++ b/java-iam/proto-google-iam-v3beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v3beta - 1.54.2 + 1.54.3-SNAPSHOT proto-google-iam-v3beta Proto library for proto-google-iam-v3beta com.google.cloud google-iam-parent - 1.54.2 + 1.54.3-SNAPSHOT diff --git a/java-shared-dependencies/dependency-convergence-check/pom.xml b/java-shared-dependencies/dependency-convergence-check/pom.xml index 8358e97b00..d3eb14d34a 100644 --- a/java-shared-dependencies/dependency-convergence-check/pom.xml +++ b/java-shared-dependencies/dependency-convergence-check/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud shared-dependencies-dependency-convergence-test - 3.50.2 + 3.50.3-SNAPSHOT Dependency convergence test for certain artifacts in Google Cloud Shared Dependencies An dependency convergence test case for the shared dependencies BOM. A failure of this test case means diff --git a/java-shared-dependencies/first-party-dependencies/pom.xml b/java-shared-dependencies/first-party-dependencies/pom.xml index 0a3afdeed0..79f161f350 100644 --- a/java-shared-dependencies/first-party-dependencies/pom.xml +++ b/java-shared-dependencies/first-party-dependencies/pom.xml @@ -6,7 +6,7 @@ com.google.cloud first-party-dependencies pom - 3.50.2 + 3.50.3-SNAPSHOT Google Cloud First-party Shared Dependencies Shared first-party dependencies for Google Cloud Java libraries. @@ -33,7 +33,7 @@ com.google.api gapic-generator-java-bom - 2.60.2 + 2.60.3-SNAPSHOT pom import @@ -45,7 +45,7 @@ com.google.cloud google-cloud-core-bom - 2.58.2 + 2.58.3-SNAPSHOT pom import @@ -69,13 +69,13 @@ com.google.cloud google-cloud-core - 2.58.2 + 2.58.3-SNAPSHOT test-jar com.google.cloud google-cloud-core - 2.58.2 + 2.58.3-SNAPSHOT tests diff --git a/java-shared-dependencies/pom.xml b/java-shared-dependencies/pom.xml index 587a0c76ce..89dff9aa02 100644 --- a/java-shared-dependencies/pom.xml +++ b/java-shared-dependencies/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-shared-dependencies pom - 3.50.2 + 3.50.3-SNAPSHOT first-party-dependencies third-party-dependencies @@ -17,7 +17,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../gapic-generator-java-pom-parent @@ -31,14 +31,14 @@ com.google.cloud first-party-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import com.google.cloud third-party-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import diff --git a/java-shared-dependencies/third-party-dependencies/pom.xml b/java-shared-dependencies/third-party-dependencies/pom.xml index 3fa819a5d7..a12aee21b1 100644 --- a/java-shared-dependencies/third-party-dependencies/pom.xml +++ b/java-shared-dependencies/third-party-dependencies/pom.xml @@ -6,7 +6,7 @@ com.google.cloud third-party-dependencies pom - 3.50.2 + 3.50.3-SNAPSHOT Google Cloud Third-party Shared Dependencies Shared third-party dependencies for Google Cloud Java libraries. @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.2 + 2.60.3-SNAPSHOT ../../gapic-generator-java-pom-parent diff --git a/java-shared-dependencies/upper-bound-check/pom.xml b/java-shared-dependencies/upper-bound-check/pom.xml index d03671b313..c0146f9c4f 100644 --- a/java-shared-dependencies/upper-bound-check/pom.xml +++ b/java-shared-dependencies/upper-bound-check/pom.xml @@ -4,7 +4,7 @@ com.google.cloud shared-dependencies-upper-bound-test pom - 3.50.2 + 3.50.3-SNAPSHOT Upper bound test for Google Cloud Shared Dependencies An upper bound test case for the shared dependencies BOM. A failure of this test case means @@ -30,7 +30,7 @@ com.google.cloud google-cloud-shared-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import diff --git a/java-showcase/pom.xml b/java-showcase/pom.xml index d274d7b889..3ba62550a6 100644 --- a/java-showcase/pom.xml +++ b/java-showcase/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-shared-dependencies - 3.50.2 + 3.50.3-SNAPSHOT pom import diff --git a/sdk-platform-java-config/pom.xml b/sdk-platform-java-config/pom.xml index f7ff6e7da4..34d8f833da 100644 --- a/sdk-platform-java-config/pom.xml +++ b/sdk-platform-java-config/pom.xml @@ -4,7 +4,7 @@ com.google.cloud sdk-platform-java-config pom - 3.50.2 + 3.50.3-SNAPSHOT SDK Platform For Java Configurations Shared build configuration for Google Cloud Java libraries. @@ -17,6 +17,6 @@ - 3.50.2 + 3.50.3-SNAPSHOT \ No newline at end of file diff --git a/versions.txt b/versions.txt index e4802cbf33..ca5cb641d2 100644 --- a/versions.txt +++ b/versions.txt @@ -1,26 +1,26 @@ # Format: # module:released-version:current-version -gapic-generator-java:2.60.2:2.60.2 -api-common:2.51.2:2.51.2 -gax:2.68.2:2.68.2 -gax-grpc:2.68.2:2.68.2 -gax-httpjson:0.153.2:0.153.2 -proto-google-common-protos:2.59.2:2.59.2 -grpc-google-common-protos:2.59.2:2.59.2 -proto-google-iam-v1:1.54.2:1.54.2 -grpc-google-iam-v1:1.54.2:1.54.2 -proto-google-iam-v2beta:1.54.2:1.54.2 -grpc-google-iam-v2beta:1.54.2:1.54.2 -google-iam-policy:1.54.2:1.54.2 -proto-google-iam-v2:1.54.2:1.54.2 -grpc-google-iam-v2:1.54.2:1.54.2 -google-cloud-core:2.58.2:2.58.2 -google-cloud-shared-dependencies:3.50.2:3.50.2 -gapic-showcase:0.6.2:0.6.2 -proto-gapic-showcase-v1beta1:0.6.2:0.6.2 -grpc-gapic-showcase-v1beta1:0.6.2:0.6.2 -proto-google-iam-v3:1.54.2:1.54.2 -grpc-google-iam-v3:1.54.2:1.54.2 -proto-google-iam-v3beta:1.54.2:1.54.2 -grpc-google-iam-v3beta:1.54.2:1.54.2 +gapic-generator-java:2.60.2:2.60.3-SNAPSHOT +api-common:2.51.2:2.51.3-SNAPSHOT +gax:2.68.2:2.68.3-SNAPSHOT +gax-grpc:2.68.2:2.68.3-SNAPSHOT +gax-httpjson:0.153.2:0.153.3-SNAPSHOT +proto-google-common-protos:2.59.2:2.59.3-SNAPSHOT +grpc-google-common-protos:2.59.2:2.59.3-SNAPSHOT +proto-google-iam-v1:1.54.2:1.54.3-SNAPSHOT +grpc-google-iam-v1:1.54.2:1.54.3-SNAPSHOT +proto-google-iam-v2beta:1.54.2:1.54.3-SNAPSHOT +grpc-google-iam-v2beta:1.54.2:1.54.3-SNAPSHOT +google-iam-policy:1.54.2:1.54.3-SNAPSHOT +proto-google-iam-v2:1.54.2:1.54.3-SNAPSHOT +grpc-google-iam-v2:1.54.2:1.54.3-SNAPSHOT +google-cloud-core:2.58.2:2.58.3-SNAPSHOT +google-cloud-shared-dependencies:3.50.2:3.50.3-SNAPSHOT +gapic-showcase:0.6.2:0.6.3-SNAPSHOT +proto-gapic-showcase-v1beta1:0.6.2:0.6.3-SNAPSHOT +grpc-gapic-showcase-v1beta1:0.6.2:0.6.3-SNAPSHOT +proto-google-iam-v3:1.54.2:1.54.3-SNAPSHOT +grpc-google-iam-v3:1.54.2:1.54.3-SNAPSHOT +proto-google-iam-v3beta:1.54.2:1.54.3-SNAPSHOT +grpc-google-iam-v3beta:1.54.2:1.54.3-SNAPSHOT From 9b1a34b0dd08c0eddcf09ef5d81b225d0942f529 Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Wed, 23 Jul 2025 15:35:41 -0400 Subject: [PATCH 2/6] fix: make generation config update logs verbose (#3764) https://github.com/googleapis/java-storage/actions/runs/14629392782/job/41048556919 was a failed run of update_generation_config.sh. The error message was misleading since jq failed because the command that produced the input for such jq command had silently failed: ``` Updating files: 100% (7136/7136), done. ~/work/java-storage/java-storage/tmp-googleapis ~/work/java-storage/java-storage Already up to date. ~/work/java-storage/java-storage Update googleapis_commitish to 03baf05e13d9241ec8c19bdedb1d991b6ed7e115 in generation_config.yaml jq: parse error: Invalid numeric literal at line 1, column 7 Error: Process completed with exit code 1. ``` If we enable the `xtrace` flag, we can see it was due to a 502 when fetching the latest version of the generator: ``` Updating files: 100% (7136/7136), done. + pushd tmp-googleapis ~/google/java-storage/tmp-googleapis ~/google/java-storage + git pull Already up to date. ++ git rev-parse HEAD + latest_commit=03baf05e13d9241ec8c19bdedb1d991b6ed7e115 + popd ~/google/java-storage + rm -rf tmp-googleapis + update_config googleapis_commitish 03baf05e13d9241ec8c19bdedb1d991b6ed7e115 generation_config.yaml + local key_word=googleapis_commitish + local new_value=03baf05e13d9241ec8c19bdedb1d991b6ed7e115 + local file=generation_config.yaml + echo 'Update googleapis_commitish to 03baf05e13d9241ec8c19bdedb1d991b6ed7e115 in generation_config.yaml' Update googleapis_commitish to 03baf05e13d9241ec8c19bdedb1d991b6ed7e115 in generation_config.yaml + sed -i -e 's/^googleapis_commitish.*$/googleapis_commitish: 03baf05e13d9241ec8c19bdedb1d991b6ed7e115/' generation_config.yaml ++ get_latest_released_version com.google.api gapic-generator-java ++ local group_id=com.google.api ++ local artifact_id=gapic-generator-java +++ curl -s 'https://search.maven.org/solrsearch/select?q=g:com.google.api+AND+a:gapic-generator-java&core=gav&rows=500&wt=json' ++ json_content=' 502 Bad Gateway

502 Bad Gateway

' +++ jq -r '.response.docs[] | select(.v | test("^[0-9]+(\\.[0-9]+)*$")) | .v' +++ sort -V +++ tail -n 1 jq: parse error: Invalid numeric literal at line 2, column 0 ++ latest= ++ [[ -z '' ]] ++ echo 'The latest version of com.google.api:gapic-generator-java is empty.' ++ echo 'The returned json from maven.org is invalid: 502 Bad Gateway

502 Bad Gateway

' ++ exit 1 + latest_version='The latest version of com.google.api:gapic-generator-java is empty. The returned json from maven.org is invalid: 502 Bad Gateway

502 Bad Gateway

' ``` Such flag saves the developer a round trip for local reproduction. --- .../java_library/.github/scripts/update_generation_config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.github/scripts/update_generation_config.sh b/hermetic_build/library_generation/owlbot/templates/java_library/.github/scripts/update_generation_config.sh index 3b890a76b2..92efcf8819 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.github/scripts/update_generation_config.sh +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.github/scripts/update_generation_config.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e +set -ex # This script should be run at the root of the repository. # This script is used to update googleapis_commitish, gapic_generator_version, # and libraries_bom_version in generation configuration at the time of running From 2d02344d79f5cfdca7834aa0d6306f1b72a7505a Mon Sep 17 00:00:00 2001 From: Andy Zhao Date: Mon, 28 Jul 2025 09:07:43 -0700 Subject: [PATCH 3/6] feat(mtls): Add support for X.509-based mTLS-transport in Java GAX lib (#3852) Fixes https://github.com/googleapis/sdk-platform-java/issues/3851 - Refactors mTLS code path to use new CertificateBasedAccess class to determine mTLS behavior based on env vars. - Refactors mTLS code path to use DefaultMtlsProviderFactory from Java auth lib for creating a default mTLS provider using either the legacy SecureConnect mtls provider or the newer X.509 mtls provider, depending on availability. --- .../InstantiatingGrpcChannelProvider.java | 41 +++- .../InstantiatingGrpcChannelProviderTest.java | 52 ++++- .../com/google/api/gax/grpc/SettingsTest.java | 4 +- .../InstantiatingHttpJsonChannelProvider.java | 59 ++++- ...tantiatingHttpJsonChannelProviderTest.java | 27 ++- gax-java/gax/clirr-ignored-differences.xml | 22 ++ .../google/api/gax/rpc/EndpointContext.java | 50 +++- .../gax/rpc/mtls/CertificateBasedAccess.java | 83 +++++++ .../rpc/mtls/ContextAwareMetadataJson.java | 14 +- .../google/api/gax/rpc/mtls/MtlsProvider.java | 6 + .../api/gax/rpc/EndpointContextTest.java | 129 ++++++----- .../AbstractMtlsTransportChannelTest.java | 43 ++-- .../rpc/mtls/CertificateBasedAccessTest.java | 83 +++++++ .../api/gax/rpc/mtls/MtlsProviderTest.java | 213 ------------------ .../api/gax/rpc/testing/FakeMtlsProvider.java | 29 +-- 15 files changed, 511 insertions(+), 344 deletions(-) create mode 100644 gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/CertificateBasedAccess.java create mode 100644 gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/CertificateBasedAccessTest.java delete mode 100644 gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/MtlsProviderTest.java diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java index c62962f40c..c24c74af04 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java @@ -42,9 +42,12 @@ import com.google.api.gax.rpc.TransportChannel; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.internal.EnvironmentProvider; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.api.gax.rpc.mtls.CertificateBasedAccess; import com.google.auth.ApiKeyCredentials; import com.google.auth.Credentials; +import com.google.auth.mtls.CertificateSourceUnavailableException; +import com.google.auth.mtls.DefaultMtlsProviderFactory; +import com.google.auth.mtls.MtlsProvider; import com.google.auth.oauth2.ComputeEngineCredentials; import com.google.auth.oauth2.SecureSessionAgent; import com.google.auth.oauth2.SecureSessionAgentConfig; @@ -150,6 +153,7 @@ public final class InstantiatingGrpcChannelProvider implements TransportChannelP @Nullable private final Boolean allowNonDefaultServiceAccount; @VisibleForTesting final ImmutableMap directPathServiceConfig; @Nullable private final MtlsProvider mtlsProvider; + private final CertificateBasedAccess certificateBasedAccess; @Nullable private final SecureSessionAgent s2aConfigProvider; private final List allowedHardBoundTokenTypes; @VisibleForTesting final Map headersWithDuplicatesRemoved = new HashMap<>(); @@ -183,6 +187,7 @@ private InstantiatingGrpcChannelProvider(Builder builder) { this.mtlsEndpoint = builder.mtlsEndpoint; this.allowedHardBoundTokenTypes = builder.allowedHardBoundTokenTypes; this.mtlsProvider = builder.mtlsProvider; + this.certificateBasedAccess = builder.certificateBasedAccess; this.s2aConfigProvider = builder.s2aConfigProvider; this.envProvider = builder.envProvider; this.interceptorProvider = builder.interceptorProvider; @@ -484,7 +489,10 @@ boolean canUseDirectPathWithUniverseDomain() { @VisibleForTesting ChannelCredentials createMtlsChannelCredentials() throws IOException, GeneralSecurityException { - if (mtlsProvider.useMtlsClientCertificate()) { + if (mtlsProvider == null) { + return null; + } + if (certificateBasedAccess.useMtlsClientCertificate()) { KeyStore mtlsKeyStore = mtlsProvider.getKeyStore(); if (mtlsKeyStore != null) { KeyManagerFactory factory = @@ -853,7 +861,8 @@ public static final class Builder { private boolean useS2A; private EnvironmentProvider envProvider; private SecureSessionAgent s2aConfigProvider = SecureSessionAgent.create(); - private MtlsProvider mtlsProvider = new MtlsProvider(); + @Nullable private MtlsProvider mtlsProvider; + private CertificateBasedAccess certificateBasedAccess; @Nullable private GrpcInterceptorProvider interceptorProvider; @Nullable private Integer maxInboundMessageSize; @Nullable private Integer maxInboundMetadataSize; @@ -904,6 +913,7 @@ private Builder(InstantiatingGrpcChannelProvider provider) { this.allowedHardBoundTokenTypes = provider.allowedHardBoundTokenTypes; this.directPathServiceConfig = provider.directPathServiceConfig; this.mtlsProvider = provider.mtlsProvider; + this.certificateBasedAccess = provider.certificateBasedAccess; this.s2aConfigProvider = provider.s2aConfigProvider; } @@ -994,6 +1004,12 @@ Builder setMtlsProvider(MtlsProvider mtlsProvider) { return this; } + @VisibleForTesting + Builder setCertificateBasedAccess(CertificateBasedAccess certificateBasedAccess) { + this.certificateBasedAccess = certificateBasedAccess; + return this; + } + @VisibleForTesting Builder setS2AConfigProvider(SecureSessionAgent s2aConfigProvider) { this.s2aConfigProvider = s2aConfigProvider; @@ -1269,6 +1285,25 @@ CallCredentials createHardBoundTokensCallCredentials( } public InstantiatingGrpcChannelProvider build() { + if (certificateBasedAccess == null) { + certificateBasedAccess = CertificateBasedAccess.createWithSystemEnv(); + } + if (certificateBasedAccess.useMtlsClientCertificate()) { + if (mtlsProvider == null) { + // Attempt to create default MtlsProvider from environment. + try { + mtlsProvider = DefaultMtlsProviderFactory.create(); + } catch (CertificateSourceUnavailableException e) { + // This is okay. Leave mtlsProvider as null so that we will not auto-upgrade + // to mTLS endpoints. See https://google.aip.dev/auth/4114. + } catch (IOException e) { + LOG.log( + Level.WARNING, + "DefaultMtlsProviderFactory encountered unexpected IOException: " + e.getMessage()); + } + } + } + if (isMtlsS2AHardBoundTokensEnabled()) { // Set a {@code ComputeEngineCredentials} instance to be per-RPC call credentials, // which will be used to fetch MTLS_S2A hard bound tokens from the metdata server. diff --git a/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java b/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java index 86203ce47d..5c4dfca8c4 100644 --- a/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java +++ b/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java @@ -46,10 +46,11 @@ import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.internal.EnvironmentProvider; import com.google.api.gax.rpc.mtls.AbstractMtlsTransportChannelTest; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.api.gax.rpc.mtls.CertificateBasedAccess; import com.google.auth.ApiKeyCredentials; import com.google.auth.Credentials; import com.google.auth.http.AuthHttpConstants; +import com.google.auth.mtls.MtlsProvider; import com.google.auth.oauth2.CloudShellCredentials; import com.google.auth.oauth2.ComputeEngineCredentials; import com.google.auth.oauth2.SecureSessionAgent; @@ -92,6 +93,7 @@ class InstantiatingGrpcChannelProviderTest extends AbstractMtlsTransportChannelT private static final String API_KEY_AUTH_HEADER_KEY = "x-goog-api-key"; private static String originalOSName; private ComputeEngineCredentials computeEngineCredentials; + private CertificateBasedAccess certificateBasedAccess; @BeforeAll public static void setupClass() { @@ -101,6 +103,9 @@ public static void setupClass() { @BeforeEach public void setup() throws IOException { computeEngineCredentials = Mockito.mock(ComputeEngineCredentials.class); + certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "never" : "false"); } @AfterEach @@ -208,6 +213,7 @@ void testWithPoolSize() throws IOException { TransportChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .build() .withExecutor((Executor) executor) .withHeaders(Collections.emptyMap()) @@ -277,6 +283,7 @@ private void testWithInterceptors(int numChannels) throws Exception { InstantiatingGrpcChannelProvider channelProvider = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setEndpoint("localhost:8080") .setPoolSize(numChannels) .setHeaderProvider(Mockito.mock(HeaderProvider.class)) @@ -310,6 +317,7 @@ void testChannelConfigurator() throws IOException { // Invoke the provider InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setEndpoint("localhost:8080") .setHeaderProvider(Mockito.mock(HeaderProvider.class)) .setExecutor(Mockito.mock(Executor.class)) @@ -331,6 +339,7 @@ void testWithGCECredentials() throws IOException { TransportChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .build() .withExecutor((Executor) executor) @@ -414,6 +423,7 @@ void testWithNonGCECredentials() throws IOException { InstantiatingGrpcChannelProvider.newBuilder() .setAttemptDirectPath(true) .setChannelConfigurator(channelConfigurator) + .setCertificateBasedAccess(certificateBasedAccess) .build() .withExecutor((Executor) executor) .withHeaders(Collections.emptyMap()) @@ -442,6 +452,7 @@ void testWithDirectPathDisabled() throws IOException { InstantiatingGrpcChannelProvider.newBuilder() .setAttemptDirectPath(false) .setChannelConfigurator(channelConfigurator) + .setCertificateBasedAccess(certificateBasedAccess) .build() .withExecutor((Executor) executor) .withHeaders(Collections.emptyMap()) @@ -469,6 +480,7 @@ void testWithNoDirectPathFlagSet() throws IOException { TransportChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder() .setChannelConfigurator(channelConfigurator) + .setCertificateBasedAccess(certificateBasedAccess) .build() .withExecutor((Executor) executor) .withHeaders(Collections.emptyMap()) @@ -488,6 +500,7 @@ void testWithIPv6Address() throws IOException { TransportChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .build() .withExecutor((Executor) executor) .withHeaders(Collections.emptyMap()) @@ -513,6 +526,7 @@ void testWithPrimeChannel() throws IOException { .setHeaderProvider(Mockito.mock(HeaderProvider.class)) .setExecutor(Mockito.mock(Executor.class)) .setChannelPrimer(mockChannelPrimer) + .setCertificateBasedAccess(certificateBasedAccess) .build(); provider.getTransportChannel().shutdownNow(); @@ -526,7 +540,9 @@ void testWithPrimeChannel() throws IOException { @Test void testWithDefaultDirectPathServiceConfig() { InstantiatingGrpcChannelProvider provider = - InstantiatingGrpcChannelProvider.newBuilder().build(); + InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) + .build(); ImmutableMap defaultServiceConfig = provider.directPathServiceConfig; @@ -591,6 +607,7 @@ void testWithCustomDirectPathServiceConfig() { InstantiatingGrpcChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder() .setDirectPathServiceConfig(passedServiceConfig) + .setCertificateBasedAccess(certificateBasedAccess) .build(); ImmutableMap defaultServiceConfig = provider.directPathServiceConfig; @@ -598,12 +615,14 @@ void testWithCustomDirectPathServiceConfig() { } @Override - protected Object getMtlsObjectFromTransportChannel(MtlsProvider provider) + protected Object getMtlsObjectFromTransportChannel( + MtlsProvider provider, CertificateBasedAccess certificateBasedAccess) throws IOException, GeneralSecurityException { InstantiatingGrpcChannelProvider channelProvider = InstantiatingGrpcChannelProvider.newBuilder() .setEndpoint("localhost:8080") .setMtlsProvider(provider) + .setCertificateBasedAccess(certificateBasedAccess) .setHeaderProvider(Mockito.mock(HeaderProvider.class)) .setExecutor(Mockito.mock(Executor.class)) .build(); @@ -632,7 +651,10 @@ private void createAndCloseTransportChannel(InstantiatingGrpcChannelProvider pro FakeLogHandler logHandler = new FakeLogHandler(); InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler); InstantiatingGrpcChannelProvider provider = - createChannelProviderBuilderForDirectPathLogTests().setAttemptDirectPathXds().build(); + createChannelProviderBuilderForDirectPathLogTests() + .setAttemptDirectPathXds() + .setCertificateBasedAccess(certificateBasedAccess) + .build(); createAndCloseTransportChannel(provider); assertThat(logHandler.getAllMessages()) .contains( @@ -647,7 +669,9 @@ void testLogDirectPathMisconfig_AttemptDirectPathNotSetAndAttemptDirectPathXdsSe InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler); InstantiatingGrpcChannelProvider provider = - createChannelProviderBuilderForDirectPathLogTests().build(); + createChannelProviderBuilderForDirectPathLogTests() + .setCertificateBasedAccess(certificateBasedAccess) + .build(); createAndCloseTransportChannel(provider); assertThat(logHandler.getAllMessages()) .contains( @@ -663,6 +687,7 @@ void testLogDirectPathMisconfig_shouldNotLogInTheBuilder() { InstantiatingGrpcChannelProvider.newBuilder() .setAttemptDirectPathXds() .setAttemptDirectPath(true) + .setCertificateBasedAccess(certificateBasedAccess) .build(); assertThat(logHandler.getAllMessages()).isEmpty(); @@ -680,6 +705,7 @@ void testLogDirectPathMisconfigWrongCredential() throws Exception { .setHeaderProvider(Mockito.mock(HeaderProvider.class)) .setExecutor(Mockito.mock(Executor.class)) .setEndpoint(DEFAULT_ENDPOINT) + .setCertificateBasedAccess(certificateBasedAccess) .build(); TransportChannel transportChannel = provider.getTransportChannel(); @@ -706,6 +732,7 @@ void testLogDirectPathMisconfigNotOnGCE() throws Exception { .setHeaderProvider(Mockito.mock(HeaderProvider.class)) .setExecutor(Mockito.mock(Executor.class)) .setEndpoint(DEFAULT_ENDPOINT) + .setCertificateBasedAccess(certificateBasedAccess) .build(); TransportChannel transportChannel = provider.getTransportChannel(); @@ -731,6 +758,7 @@ public void canUseDirectPath_happyPath() throws IOException { .thenReturn("false"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT) @@ -758,6 +786,7 @@ public void canUseDirectPath_boundTokenNotEnabledWithNonComputeCredentials() { .thenReturn("false"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setAllowHardBoundTokenTypes(Collections.singletonList(HardBoundTokenTypes.ALTS)) .setCredentials(credentials) @@ -782,6 +811,7 @@ public void canUseDirectPath_happyPathWithBoundToken() throws IOException { .thenReturn(ComputeEngineCredentials.newBuilder()); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setAllowHardBoundTokenTypes(Collections.singletonList(HardBoundTokenTypes.ALTS)) @@ -809,6 +839,7 @@ public void canUseDirectPath_directPathEnvVarDisabled() throws IOException { .thenReturn("true"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT) @@ -829,6 +860,7 @@ public void canUseDirectPath_directPathEnvVarNotSet_attemptDirectPathIsTrue() { System.setProperty("os.name", "Linux"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT); @@ -842,6 +874,7 @@ public void canUseDirectPath_directPathEnvVarNotSet_attemptDirectPathIsFalse() { System.setProperty("os.name", "Linux"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(false) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT); @@ -861,6 +894,7 @@ public void canUseDirectPath_nonComputeCredentials() { .thenReturn("false"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(credentials) .setEndpoint(DEFAULT_ENDPOINT) @@ -880,6 +914,7 @@ public void canUseDirectPath_isNotOnComputeEngine_invalidOsNameSystemProperty() .thenReturn("false"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT) @@ -899,6 +934,7 @@ public void canUseDirectPath_isNotOnComputeEngine_invalidSystemProductName() { .thenReturn("false"); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT) @@ -921,6 +957,7 @@ public void canUseDirectPath_isNotOnComputeEngine_unableToGetSystemProductName() .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(DEFAULT_ENDPOINT) + .setCertificateBasedAccess(certificateBasedAccess) .setEnvProvider(envProvider); InstantiatingGrpcChannelProvider provider = new InstantiatingGrpcChannelProvider(builder, ""); Truth.assertThat(provider.canUseDirectPath()).isFalse(); @@ -937,6 +974,7 @@ public void canUseDirectPath_nonGDUUniverseDomain() { String nonGDUEndpoint = "test.random.com:443"; InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setAttemptDirectPath(true) .setCredentials(computeEngineCredentials) .setEndpoint(nonGDUEndpoint) @@ -966,6 +1004,7 @@ void providersInitializedWithConflictingApiKeyCredentialHeaders_removesDuplicate ApiKeyCredentials apiKeyCredentials = ApiKeyCredentials.create(correctApiKey); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setCredentials(apiKeyCredentials) .setHeaderProvider(getHeaderProviderWithApiKeyHeader()) .setEndpoint("test.random.com:443"); @@ -983,6 +1022,7 @@ void providersInitializedWithConflictingNonApiKeyCredentialHeaders_doesNotRemove header.put(AuthHttpConstants.AUTHORIZATION, authProvidedHeader); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setCredentials(computeEngineCredentials) .setHeaderProvider(FixedHeaderProvider.create(header)) .setEndpoint("test.random.com:443"); @@ -1011,6 +1051,7 @@ void buildProvider_handlesNullCredentialsMetadataRequest() throws IOException { Mockito.when(credentials.getRequestMetadata()).thenReturn(null); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setHeaderProvider(getHeaderProviderWithApiKeyHeader()) .setEndpoint("test.random.com:443"); @@ -1028,6 +1069,7 @@ void buildProvider_handlesErrorRetrievingCredentialsMetadataRequest() throws IOE .thenThrow(new IOException("Error getting request metadata")); InstantiatingGrpcChannelProvider.Builder builder = InstantiatingGrpcChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) .setHeaderProvider(getHeaderProviderWithApiKeyHeader()) .setEndpoint("test.random.com:443"); InstantiatingGrpcChannelProvider provider = builder.build(); diff --git a/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java b/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java index f08a3c3a89..a1ab8a8e8e 100644 --- a/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java +++ b/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/SettingsTest.java @@ -51,8 +51,8 @@ import com.google.api.gax.rpc.StubSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; -import com.google.api.gax.rpc.mtls.MtlsProvider; import com.google.auth.Credentials; +import com.google.auth.mtls.MtlsProvider; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -83,7 +83,7 @@ private static class FakeStubSettings extends StubSettings { public static final int DEFAULT_SERVICE_PORT = 443; public static final String DEFAULT_SERVICE_ENDPOINT = DEFAULT_SERVICE_ADDRESS + ':' + DEFAULT_SERVICE_PORT; - public static final MtlsProvider DEFAULT_MTLS_PROVIDER = new MtlsProvider(); + public static final MtlsProvider DEFAULT_MTLS_PROVIDER = null; public static final ImmutableList DEFAULT_SERVICE_SCOPES = ImmutableList.builder() .add("https://www.googleapis.com/auth/pubsub") diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java index 1171ef1b59..528018ec75 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java @@ -36,8 +36,11 @@ import com.google.api.gax.rpc.FixedHeaderProvider; import com.google.api.gax.rpc.HeaderProvider; import com.google.api.gax.rpc.TransportChannelProvider; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.api.gax.rpc.mtls.CertificateBasedAccess; import com.google.auth.Credentials; +import com.google.auth.mtls.CertificateSourceUnavailableException; +import com.google.auth.mtls.DefaultMtlsProviderFactory; +import com.google.auth.mtls.MtlsProvider; import com.google.common.annotations.VisibleForTesting; import java.io.IOException; import java.security.GeneralSecurityException; @@ -45,6 +48,9 @@ import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; /** * InstantiatingHttpJsonChannelProvider is a TransportChannelProvider which constructs a {@link @@ -61,12 +67,16 @@ @InternalExtensionOnly public final class InstantiatingHttpJsonChannelProvider implements TransportChannelProvider { + @VisibleForTesting + static final Logger LOG = Logger.getLogger(InstantiatingHttpJsonChannelProvider.class.getName()); + private final Executor executor; private final HeaderProvider headerProvider; private final HttpJsonInterceptorProvider interceptorProvider; private final String endpoint; private final HttpTransport httpTransport; - private final MtlsProvider mtlsProvider; + @Nullable private final MtlsProvider mtlsProvider; + private final CertificateBasedAccess certificateBasedAccess; private InstantiatingHttpJsonChannelProvider( Executor executor, @@ -74,13 +84,15 @@ private InstantiatingHttpJsonChannelProvider( HttpJsonInterceptorProvider interceptorProvider, String endpoint, HttpTransport httpTransport, - MtlsProvider mtlsProvider) { + MtlsProvider mtlsProvider, + CertificateBasedAccess certificateBasedAccess) { this.executor = executor; this.headerProvider = headerProvider; this.interceptorProvider = interceptorProvider; this.endpoint = endpoint; this.httpTransport = httpTransport; this.mtlsProvider = mtlsProvider; + this.certificateBasedAccess = certificateBasedAccess; } /** @@ -173,7 +185,10 @@ public TransportChannelProvider withCredentials(Credentials credentials) { } HttpTransport createHttpTransport() throws IOException, GeneralSecurityException { - if (mtlsProvider.useMtlsClientCertificate()) { + if (mtlsProvider == null) { + return null; + } + if (certificateBasedAccess.useMtlsClientCertificate()) { KeyStore mtlsKeyStore = mtlsProvider.getKeyStore(); if (mtlsKeyStore != null) { return new NetHttpTransport.Builder().trustCertificates(null, mtlsKeyStore, "").build(); @@ -237,7 +252,8 @@ public static final class Builder { private HttpJsonInterceptorProvider interceptorProvider; private String endpoint; private HttpTransport httpTransport; - private MtlsProvider mtlsProvider = new MtlsProvider(); + private MtlsProvider mtlsProvider; + private CertificateBasedAccess certificateBasedAccess; private Builder() {} @@ -247,6 +263,7 @@ private Builder(InstantiatingHttpJsonChannelProvider provider) { this.endpoint = provider.endpoint; this.httpTransport = provider.httpTransport; this.mtlsProvider = provider.mtlsProvider; + this.certificateBasedAccess = provider.certificateBasedAccess; this.interceptorProvider = provider.interceptorProvider; } @@ -317,9 +334,39 @@ Builder setMtlsProvider(MtlsProvider mtlsProvider) { return this; } + @VisibleForTesting + Builder setCertificateBasedAccess(CertificateBasedAccess certificateBasedAccess) { + this.certificateBasedAccess = certificateBasedAccess; + return this; + } + public InstantiatingHttpJsonChannelProvider build() { + if (certificateBasedAccess == null) { + certificateBasedAccess = CertificateBasedAccess.createWithSystemEnv(); + } + if (certificateBasedAccess.useMtlsClientCertificate()) { + if (mtlsProvider == null) { + // Attempt to create default MtlsProvider from environment. + try { + mtlsProvider = DefaultMtlsProviderFactory.create(); + } catch (CertificateSourceUnavailableException e) { + // This is okay. Leave mtlsProvider as null so that we will not auto-upgrade + // to mTLS endpoints. See https://google.aip.dev/auth/4114. + } catch (IOException e) { + LOG.log( + Level.WARNING, + "DefaultMtlsProviderFactory encountered unexpected IOException: " + e.getMessage()); + } + } + } return new InstantiatingHttpJsonChannelProvider( - executor, headerProvider, interceptorProvider, endpoint, httpTransport, mtlsProvider); + executor, + headerProvider, + interceptorProvider, + endpoint, + httpTransport, + mtlsProvider, + certificateBasedAccess); } } } diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProviderTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProviderTest.java index 3e6b2d56d1..17ad9f2cbf 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProviderTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProviderTest.java @@ -35,7 +35,8 @@ import com.google.api.gax.rpc.HeaderProvider; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.mtls.AbstractMtlsTransportChannelTest; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.api.gax.rpc.mtls.CertificateBasedAccess; +import com.google.auth.mtls.MtlsProvider; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.Collections; @@ -43,6 +44,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -50,13 +52,24 @@ class InstantiatingHttpJsonChannelProviderTest extends AbstractMtlsTransportChan private static final String DEFAULT_ENDPOINT = "localhost:8080"; private static final Map DEFAULT_HEADER_MAP = Collections.emptyMap(); + private CertificateBasedAccess certificateBasedAccess; + + @BeforeEach + public void setup() throws IOException { + certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "never" : "false"); + } @Test void basicTest() throws IOException { ScheduledExecutorService executor = new ScheduledThreadPoolExecutor(1); executor.shutdown(); - TransportChannelProvider provider = InstantiatingHttpJsonChannelProvider.newBuilder().build(); + TransportChannelProvider provider = + InstantiatingHttpJsonChannelProvider.newBuilder() + .setCertificateBasedAccess(certificateBasedAccess) + .build(); assertThat(provider.needsEndpoint()).isTrue(); provider = provider.withEndpoint(DEFAULT_ENDPOINT); @@ -108,7 +121,10 @@ void basicTest() throws IOException { @Test void managedChannelUsesDefaultChannelExecutor() throws IOException { InstantiatingHttpJsonChannelProvider instantiatingHttpJsonChannelProvider = - InstantiatingHttpJsonChannelProvider.newBuilder().setEndpoint(DEFAULT_ENDPOINT).build(); + InstantiatingHttpJsonChannelProvider.newBuilder() + .setEndpoint(DEFAULT_ENDPOINT) + .setCertificateBasedAccess(certificateBasedAccess) + .build(); instantiatingHttpJsonChannelProvider = (InstantiatingHttpJsonChannelProvider) instantiatingHttpJsonChannelProvider.withHeaders(DEFAULT_HEADER_MAP); @@ -140,6 +156,7 @@ void managedChannelUsesCustomExecutor() throws IOException { InstantiatingHttpJsonChannelProvider.newBuilder() .setEndpoint(DEFAULT_ENDPOINT) .setExecutor(executor) + .setCertificateBasedAccess(certificateBasedAccess) .build(); instantiatingHttpJsonChannelProvider = (InstantiatingHttpJsonChannelProvider) @@ -164,12 +181,14 @@ void managedChannelUsesCustomExecutor() throws IOException { } @Override - protected Object getMtlsObjectFromTransportChannel(MtlsProvider provider) + protected Object getMtlsObjectFromTransportChannel( + MtlsProvider provider, CertificateBasedAccess certificateBasedAccess) throws IOException, GeneralSecurityException { InstantiatingHttpJsonChannelProvider channelProvider = InstantiatingHttpJsonChannelProvider.newBuilder() .setEndpoint("localhost:8080") .setMtlsProvider(provider) + .setCertificateBasedAccess(certificateBasedAccess) .setHeaderProvider(Mockito.mock(HeaderProvider.class)) .setExecutor(Mockito.mock(Executor.class)) .build(); diff --git a/gax-java/gax/clirr-ignored-differences.xml b/gax-java/gax/clirr-ignored-differences.xml index 4e0a8816c1..3b0228f94e 100644 --- a/gax-java/gax/clirr-ignored-differences.xml +++ b/gax-java/gax/clirr-ignored-differences.xml @@ -128,4 +128,26 @@ com/google/api/gax/rpc/TransportChannelProvider * needsMtlsEndpoint() + + 7013 + com/google/api/gax/rpc/EndpointContext + com.google.api.gax.rpc.mtls.CertificateBasedAccess certificateBasedAccess() + + + 7006 + com/google/api/gax/rpc/EndpointContext + com.google.api.gax.rpc.mtls.MtlsProvider mtlsProvider()Add commentMore actions + com.google.auth.mtls.MtlsProvider + + + 7013 + com/google/api/gax/rpc/EndpointContext$Builder + com.google.api.gax.rpc.EndpointContext$Builder setCertificateBasedAccess(com.google.api.gax.rpc.mtls.CertificateBasedAccess) + + + 7005 + com/google/api/gax/rpc/EndpointContext$Builder + com.google.api.gax.rpc.EndpointContext$Builder setMtlsProvider(com.google.api.gax.rpc.mtls.MtlsProvider) + com.google.api.gax.rpc.EndpointContext$Builder setMtlsProvider(com.google.auth.mtls.MtlsProvider) + diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index 2db7361e3a..bf2e98f882 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -31,13 +31,18 @@ import com.google.api.core.InternalApi; import com.google.api.gax.rpc.internal.EnvironmentProvider; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.api.gax.rpc.mtls.CertificateBasedAccess; import com.google.auth.Credentials; +import com.google.auth.mtls.CertificateSourceUnavailableException; +import com.google.auth.mtls.DefaultMtlsProviderFactory; +import com.google.auth.mtls.MtlsProvider; import com.google.auth.oauth2.ComputeEngineCredentials; import com.google.auto.value.AutoValue; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.annotation.Nullable; /** @@ -50,6 +55,8 @@ @AutoValue public abstract class EndpointContext { + @VisibleForTesting static final Logger LOG = Logger.getLogger(EndpointContext.class.getName()); + private static final EndpointContext INSTANCE; // static block initialization for exception handling @@ -117,6 +124,9 @@ public static EndpointContext getDefaultInstance() { @Nullable public abstract MtlsProvider mtlsProvider(); + @Nullable + abstract CertificateBasedAccess certificateBasedAccess(); + public abstract boolean usingGDCH(); abstract String resolvedUniverseDomain(); @@ -212,6 +222,8 @@ public abstract static class Builder { public abstract Builder setMtlsProvider(MtlsProvider mtlsProvider); + abstract Builder setCertificateBasedAccess(CertificateBasedAccess certificateBasedAccess); + public abstract Builder setUsingGDCH(boolean usingGDCH); public abstract Builder setResolvedEndpoint(String resolvedEndpoint); @@ -238,8 +250,11 @@ public abstract static class Builder { abstract boolean switchToMtlsEndpointAllowed(); + @Nullable abstract MtlsProvider mtlsProvider(); + abstract CertificateBasedAccess certificateBasedAccess(); + abstract boolean usingGDCH(); abstract String resolvedUniverseDomain(); @@ -272,7 +287,22 @@ private String determineUniverseDomain() { /** Determines the fully resolved endpoint and universe domain values */ private String determineEndpoint() throws IOException { - MtlsProvider mtlsProvider = mtlsProvider() == null ? new MtlsProvider() : mtlsProvider(); + CertificateBasedAccess certificateBasedAccess = + certificateBasedAccess() == null + ? CertificateBasedAccess.createWithSystemEnv() + : certificateBasedAccess(); + MtlsProvider mtlsProvider = mtlsProvider(); + if (mtlsProvider == null) { + try { + mtlsProvider = DefaultMtlsProviderFactory.create(); + } catch (CertificateSourceUnavailableException e) { + // This is okay. Leave mtlsProvider as null; + } catch (IOException e) { + LOG.log( + Level.WARNING, + "DefaultMtlsProviderFactory encountered unexpected IOException: " + e.getMessage()); + } + } // TransportChannelProvider's endpoint will override the ClientSettings' endpoint String customEndpoint = transportChannelProviderEndpoint() == null @@ -294,7 +324,11 @@ private String determineEndpoint() throws IOException { String endpoint = mtlsEndpointResolver( - customEndpoint, mtlsEndpoint(), switchToMtlsEndpointAllowed(), mtlsProvider); + customEndpoint, + mtlsEndpoint(), + switchToMtlsEndpointAllowed(), + mtlsProvider, + certificateBasedAccess); // Check if mTLS is configured with non-GDU if (endpoint.equals(mtlsEndpoint()) @@ -351,16 +385,18 @@ String mtlsEndpointResolver( String endpoint, String mtlsEndpoint, boolean switchToMtlsEndpointAllowed, - MtlsProvider mtlsProvider) + MtlsProvider mtlsProvider, + CertificateBasedAccess certificateBasedAccess) throws IOException { - if (switchToMtlsEndpointAllowed && mtlsProvider != null) { - switch (mtlsProvider.getMtlsEndpointUsagePolicy()) { + if (switchToMtlsEndpointAllowed && certificateBasedAccess != null && mtlsProvider != null) { + switch (certificateBasedAccess.getMtlsEndpointUsagePolicy()) { case ALWAYS: return mtlsEndpoint; case NEVER: return endpoint; default: - if (mtlsProvider.useMtlsClientCertificate() && mtlsProvider.getKeyStore() != null) { + if (certificateBasedAccess.useMtlsClientCertificate() + && mtlsProvider.getKeyStore() != null) { return mtlsEndpoint; } return endpoint; diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/CertificateBasedAccess.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/CertificateBasedAccess.java new file mode 100644 index 0000000000..6f722bff60 --- /dev/null +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/CertificateBasedAccess.java @@ -0,0 +1,83 @@ +/* + * Copyright 2025 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.google.api.gax.rpc.mtls; + +import com.google.api.core.InternalApi; +import com.google.api.gax.rpc.internal.EnvironmentProvider; + +/** + * Utility class for handling certificate-based access configurations. + * + *

This class handles the processing of GOOGLE_API_USE_CLIENT_CERTIFICATE and + * GOOGLE_API_USE_MTLS_ENDPOINT environment variables according to https://google.aip.dev/auth/4114 + */ +@InternalApi +public class CertificateBasedAccess { + + private final EnvironmentProvider envProvider; + + /** The EnvironmentProvider mechanism supports env var injection for unit tests. */ + public CertificateBasedAccess(EnvironmentProvider envProvider) { + this.envProvider = envProvider; + } + + public static CertificateBasedAccess createWithSystemEnv() { + return new CertificateBasedAccess(System::getenv); + } + + /** + * The policy for mutual TLS endpoint usage. NEVER means always use regular endpoint; ALWAYS means + * always use mTLS endpoint; AUTO means auto switch to mTLS endpoint if client certificate exists + * and should be used. + */ + public enum MtlsEndpointUsagePolicy { + NEVER, + AUTO, + ALWAYS; + } + + /** Returns if mutual TLS client certificate should be used. */ + public boolean useMtlsClientCertificate() { + String useClientCertificate = envProvider.getenv("GOOGLE_API_USE_CLIENT_CERTIFICATE"); + return "true".equals(useClientCertificate); + } + + /** Returns the current mutual TLS endpoint usage policy. */ + public MtlsEndpointUsagePolicy getMtlsEndpointUsagePolicy() { + String mtlsEndpointUsagePolicy = envProvider.getenv("GOOGLE_API_USE_MTLS_ENDPOINT"); + if ("never".equals(mtlsEndpointUsagePolicy)) { + return MtlsEndpointUsagePolicy.NEVER; + } else if ("always".equals(mtlsEndpointUsagePolicy)) { + return MtlsEndpointUsagePolicy.ALWAYS; + } + return MtlsEndpointUsagePolicy.AUTO; + } +} diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/ContextAwareMetadataJson.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/ContextAwareMetadataJson.java index 25d7d27de7..9e92ac5ce0 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/ContextAwareMetadataJson.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/ContextAwareMetadataJson.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2025 Google LLC * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -32,12 +32,18 @@ import com.google.api.client.json.GenericJson; import com.google.api.client.util.Key; -import com.google.api.core.BetaApi; import com.google.common.collect.ImmutableList; import java.util.List; -/** Data class representing context_aware_metadata.json file. */ -@BetaApi +/** + * Data class representing context_aware_metadata.json file. + * + *

This class is deprecated. It has been replaced by + * com.google.auth.mtls.ContextAwareMetadataJson from the Java auth library. + * + *

Note: This class is for Google cloud internal use only. + */ +@Deprecated public class ContextAwareMetadataJson extends GenericJson { /** Cert provider command */ @Key("cert_provider_command") diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/MtlsProvider.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/MtlsProvider.java index c24fc80d6f..88e423c47c 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/MtlsProvider.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/mtls/MtlsProvider.java @@ -48,8 +48,14 @@ /** * Provider class for mutual TLS. It is used to configure the mutual TLS in the transport with the * default client certificate on device. + * + *

This class is deprecated. It has been replaced by com.google.auth.mtls.SecureConnectProvider + * from the Java auth library. + * + *

Note: This class is for Google cloud internal use only. */ @BetaApi +@Deprecated public class MtlsProvider { interface ProcessProvider { public Process createProcess(InputStream metadata) throws IOException; diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java index 59342927ca..ef64ccd726 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java @@ -34,9 +34,10 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.rpc.internal.EnvironmentProvider; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.api.gax.rpc.mtls.CertificateBasedAccess; import com.google.api.gax.rpc.testing.FakeMtlsProvider; import com.google.auth.Credentials; +import com.google.auth.mtls.MtlsProvider; import com.google.auth.oauth2.ComputeEngineCredentials; import com.google.common.truth.Truth; import io.grpc.Status; @@ -53,12 +54,15 @@ class EndpointContextTest { @BeforeEach void setUp() throws IOException { + MtlsProvider mtlsProvider = + new FakeMtlsProvider(FakeMtlsProvider.createTestMtlsKeyStore(), "", false); defaultEndpointContextBuilder = EndpointContext.newBuilder() .setServiceName("test") .setUniverseDomain(Credentials.GOOGLE_DEFAULT_UNIVERSE) .setClientSettingsEndpoint(DEFAULT_ENDPOINT) - .setMtlsEndpoint(DEFAULT_MTLS_ENDPOINT); + .setMtlsEndpoint(DEFAULT_MTLS_ENDPOINT) + .setMtlsProvider(mtlsProvider); statusCode = Mockito.mock(StatusCode.class); Mockito.when(statusCode.getCode()).thenReturn(StatusCode.Code.UNAUTHENTICATED); Mockito.when(statusCode.getTransportCode()).thenReturn(Status.Code.UNAUTHENTICATED); @@ -66,107 +70,111 @@ void setUp() throws IOException { @Test void mtlsEndpointResolver_switchToMtlsAllowedIsFalse() throws IOException { - boolean useClientCertificate = true; boolean throwExceptionForGetKeyStore = false; MtlsProvider mtlsProvider = new FakeMtlsProvider( - useClientCertificate, - MtlsProvider.MtlsEndpointUsagePolicy.AUTO, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - throwExceptionForGetKeyStore); + FakeMtlsProvider.createTestMtlsKeyStore(), "", throwExceptionForGetKeyStore); boolean switchToMtlsEndpointAllowed = false; + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true"); Truth.assertThat( defaultEndpointContextBuilder.mtlsEndpointResolver( - DEFAULT_ENDPOINT, DEFAULT_MTLS_ENDPOINT, switchToMtlsEndpointAllowed, mtlsProvider)) + DEFAULT_ENDPOINT, + DEFAULT_MTLS_ENDPOINT, + switchToMtlsEndpointAllowed, + mtlsProvider, + certificateBasedAccess)) .isEqualTo(DEFAULT_ENDPOINT); } @Test void mtlsEndpointResolver_switchToMtlsAllowedIsTrue_mtlsUsageAuto() throws IOException { - boolean useClientCertificate = true; boolean throwExceptionForGetKeyStore = false; MtlsProvider mtlsProvider = new FakeMtlsProvider( - useClientCertificate, - MtlsProvider.MtlsEndpointUsagePolicy.AUTO, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - throwExceptionForGetKeyStore); + FakeMtlsProvider.createTestMtlsKeyStore(), "", throwExceptionForGetKeyStore); boolean switchToMtlsEndpointAllowed = true; + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true"); Truth.assertThat( defaultEndpointContextBuilder.mtlsEndpointResolver( - DEFAULT_ENDPOINT, DEFAULT_MTLS_ENDPOINT, switchToMtlsEndpointAllowed, mtlsProvider)) + DEFAULT_ENDPOINT, + DEFAULT_MTLS_ENDPOINT, + switchToMtlsEndpointAllowed, + mtlsProvider, + certificateBasedAccess)) .isEqualTo(DEFAULT_MTLS_ENDPOINT); } @Test void mtlsEndpointResolver_switchToMtlsAllowedIsTrue_mtlsUsageAlways() throws IOException { - boolean useClientCertificate = true; boolean throwExceptionForGetKeyStore = false; MtlsProvider mtlsProvider = new FakeMtlsProvider( - useClientCertificate, - MtlsProvider.MtlsEndpointUsagePolicy.ALWAYS, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - throwExceptionForGetKeyStore); + FakeMtlsProvider.createTestMtlsKeyStore(), "", throwExceptionForGetKeyStore); boolean switchToMtlsEndpointAllowed = true; + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "always" : "true"); Truth.assertThat( defaultEndpointContextBuilder.mtlsEndpointResolver( - DEFAULT_ENDPOINT, DEFAULT_MTLS_ENDPOINT, switchToMtlsEndpointAllowed, mtlsProvider)) + DEFAULT_ENDPOINT, + DEFAULT_MTLS_ENDPOINT, + switchToMtlsEndpointAllowed, + mtlsProvider, + certificateBasedAccess)) .isEqualTo(DEFAULT_MTLS_ENDPOINT); } @Test void mtlsEndpointResolver_switchToMtlsAllowedIsTrue_mtlsUsageNever() throws IOException { - boolean useClientCertificate = true; boolean throwExceptionForGetKeyStore = false; MtlsProvider mtlsProvider = new FakeMtlsProvider( - useClientCertificate, - MtlsProvider.MtlsEndpointUsagePolicy.NEVER, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - throwExceptionForGetKeyStore); + FakeMtlsProvider.createTestMtlsKeyStore(), "", throwExceptionForGetKeyStore); boolean switchToMtlsEndpointAllowed = true; + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "never" : "true"); Truth.assertThat( defaultEndpointContextBuilder.mtlsEndpointResolver( - DEFAULT_ENDPOINT, DEFAULT_MTLS_ENDPOINT, switchToMtlsEndpointAllowed, mtlsProvider)) + DEFAULT_ENDPOINT, + DEFAULT_MTLS_ENDPOINT, + switchToMtlsEndpointAllowed, + mtlsProvider, + certificateBasedAccess)) .isEqualTo(DEFAULT_ENDPOINT); } @Test void mtlsEndpointResolver_switchToMtlsAllowedIsTrue_useCertificateIsFalse_nullMtlsKeystore() throws IOException { - boolean useClientCertificate = false; boolean throwExceptionForGetKeyStore = false; - MtlsProvider mtlsProvider = - new FakeMtlsProvider( - useClientCertificate, - MtlsProvider.MtlsEndpointUsagePolicy.AUTO, - null, - "", - throwExceptionForGetKeyStore); + MtlsProvider mtlsProvider = new FakeMtlsProvider(null, "", throwExceptionForGetKeyStore); boolean switchToMtlsEndpointAllowed = true; + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "false"); Truth.assertThat( defaultEndpointContextBuilder.mtlsEndpointResolver( - DEFAULT_ENDPOINT, DEFAULT_MTLS_ENDPOINT, switchToMtlsEndpointAllowed, mtlsProvider)) + DEFAULT_ENDPOINT, + DEFAULT_MTLS_ENDPOINT, + switchToMtlsEndpointAllowed, + mtlsProvider, + certificateBasedAccess)) .isEqualTo(DEFAULT_ENDPOINT); } @Test void mtlsEndpointResolver_getKeyStore_throwsIOException() throws IOException { - boolean useClientCertificate = true; boolean throwExceptionForGetKeyStore = true; - MtlsProvider mtlsProvider = - new FakeMtlsProvider( - useClientCertificate, - MtlsProvider.MtlsEndpointUsagePolicy.AUTO, - null, - "", - throwExceptionForGetKeyStore); + MtlsProvider mtlsProvider = new FakeMtlsProvider(null, "", throwExceptionForGetKeyStore); boolean switchToMtlsEndpointAllowed = true; + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true"); assertThrows( IOException.class, () -> @@ -174,7 +182,8 @@ void mtlsEndpointResolver_getKeyStore_throwsIOException() throws IOException { DEFAULT_ENDPOINT, DEFAULT_MTLS_ENDPOINT, switchToMtlsEndpointAllowed, - mtlsProvider)); + mtlsProvider, + certificateBasedAccess)); } @Test @@ -260,18 +269,17 @@ void endpointContextBuild_noUniverseDomain_noEndpoints() throws IOException { @Test void endpointContextBuild_mtlsConfigured_GDU() throws IOException { MtlsProvider mtlsProvider = - new FakeMtlsProvider( - true, - MtlsProvider.MtlsEndpointUsagePolicy.ALWAYS, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - false); + new FakeMtlsProvider(FakeMtlsProvider.createTestMtlsKeyStore(), "", false); + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "always" : "true"); EndpointContext endpointContext = defaultEndpointContextBuilder .setClientSettingsEndpoint(null) .setTransportChannelProviderEndpoint(null) .setSwitchToMtlsEndpointAllowed(true) .setMtlsProvider(mtlsProvider) + .setCertificateBasedAccess(certificateBasedAccess) .build(); Truth.assertThat(endpointContext.resolvedEndpoint()).isEqualTo(DEFAULT_MTLS_ENDPOINT); Truth.assertThat(endpointContext.resolvedUniverseDomain()) @@ -282,19 +290,18 @@ void endpointContextBuild_mtlsConfigured_GDU() throws IOException { void endpointContextBuild_mtlsConfigured_nonGDU_throwsIllegalArgumentException() throws IOException { MtlsProvider mtlsProvider = - new FakeMtlsProvider( - true, - MtlsProvider.MtlsEndpointUsagePolicy.ALWAYS, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - false); + new FakeMtlsProvider(FakeMtlsProvider.createTestMtlsKeyStore(), "", false); + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "always" : "true"); EndpointContext.Builder endpointContextBuilder = defaultEndpointContextBuilder .setUniverseDomain("random.com") .setClientSettingsEndpoint(null) .setTransportChannelProviderEndpoint(null) .setSwitchToMtlsEndpointAllowed(true) - .setMtlsProvider(mtlsProvider); + .setMtlsProvider(mtlsProvider) + .setCertificateBasedAccess(certificateBasedAccess); IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, endpointContextBuilder::build); Truth.assertThat(exception.getMessage()) diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/AbstractMtlsTransportChannelTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/AbstractMtlsTransportChannelTest.java index 1251dc47d1..bea4674b76 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/AbstractMtlsTransportChannelTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/AbstractMtlsTransportChannelTest.java @@ -35,8 +35,8 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.google.api.gax.rpc.mtls.MtlsProvider.MtlsEndpointUsagePolicy; import com.google.api.gax.rpc.testing.FakeMtlsProvider; +import com.google.auth.mtls.MtlsProvider; import java.io.IOException; import java.security.GeneralSecurityException; import org.junit.jupiter.api.Test; @@ -48,42 +48,49 @@ public abstract class AbstractMtlsTransportChannelTest { * GrpcTransportChannel, the mTLS object is the ChannelCredentials. The transport channel is mTLS * if and only if the related mTLS object is not null. */ - protected abstract Object getMtlsObjectFromTransportChannel(MtlsProvider provider) + protected abstract Object getMtlsObjectFromTransportChannel( + MtlsProvider provider, CertificateBasedAccess certificateBasedAccess) throws IOException, GeneralSecurityException; @Test void testNotUseClientCertificate() throws IOException, GeneralSecurityException { - MtlsProvider provider = - new FakeMtlsProvider(false, MtlsEndpointUsagePolicy.AUTO, null, "", false); - assertNull(getMtlsObjectFromTransportChannel(provider)); + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "false"); + MtlsProvider provider = new FakeMtlsProvider(null, "", false); + assertNull(getMtlsObjectFromTransportChannel(provider, certificateBasedAccess)); } @Test void testUseClientCertificate() throws IOException, GeneralSecurityException { + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true"); MtlsProvider provider = - new FakeMtlsProvider( - true, - MtlsEndpointUsagePolicy.AUTO, - FakeMtlsProvider.createTestMtlsKeyStore(), - "", - false); - assertNotNull(getMtlsObjectFromTransportChannel(provider)); + new FakeMtlsProvider(FakeMtlsProvider.createTestMtlsKeyStore(), "", false); + assertNotNull(getMtlsObjectFromTransportChannel(provider, certificateBasedAccess)); } @Test void testNoClientCertificate() throws IOException, GeneralSecurityException { - MtlsProvider provider = - new FakeMtlsProvider(true, MtlsEndpointUsagePolicy.AUTO, null, "", false); - assertNull(getMtlsObjectFromTransportChannel(provider)); + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true"); + MtlsProvider provider = new FakeMtlsProvider(null, "", false); + assertNull(getMtlsObjectFromTransportChannel(provider, certificateBasedAccess)); } @Test void testGetKeyStoreThrows() throws GeneralSecurityException { // Test the case where provider.getKeyStore() throws. - MtlsProvider provider = - new FakeMtlsProvider(true, MtlsEndpointUsagePolicy.AUTO, null, "", true); + CertificateBasedAccess certificateBasedAccess = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true"); + MtlsProvider provider = new FakeMtlsProvider(null, "", true); IOException actual = - assertThrows(IOException.class, () -> getMtlsObjectFromTransportChannel(provider)); + assertThrows( + IOException.class, + () -> getMtlsObjectFromTransportChannel(provider, certificateBasedAccess)); assertTrue(actual.getMessage().contains("getKeyStore throws exception")); } } diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/CertificateBasedAccessTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/CertificateBasedAccessTest.java new file mode 100644 index 0000000000..e328e0af47 --- /dev/null +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/CertificateBasedAccessTest.java @@ -0,0 +1,83 @@ +/* + * Copyright 2021 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.google.api.gax.rpc.mtls; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +class CertificateBasedAccessTest { + + @Test + void testUseMtlsEndpointAlways() { + CertificateBasedAccess cba = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "always" : "false"); + assertEquals( + CertificateBasedAccess.MtlsEndpointUsagePolicy.ALWAYS, cba.getMtlsEndpointUsagePolicy()); + } + + @Test + void testUseMtlsEndpointAuto() { + CertificateBasedAccess cba = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "false"); + assertEquals( + CertificateBasedAccess.MtlsEndpointUsagePolicy.AUTO, cba.getMtlsEndpointUsagePolicy()); + } + + @Test + void testUseMtlsEndpointNever() { + CertificateBasedAccess cba = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "never" : "false"); + assertEquals( + CertificateBasedAccess.MtlsEndpointUsagePolicy.NEVER, cba.getMtlsEndpointUsagePolicy()); + } + + @Test + void testUseMtlsClientCertificateTrue() { + CertificateBasedAccess cba = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_CLIENT_CERTIFICATE") ? "true" : "auto"); + assertTrue(cba.useMtlsClientCertificate()); + } + + @Test + void testUseMtlsClientCertificateFalse() { + CertificateBasedAccess cba = + new CertificateBasedAccess( + name -> name.equals("GOOGLE_API_USE_CLIENT_CERTIFICATE") ? "false" : "auto"); + assertFalse(cba.useMtlsClientCertificate()); + } +} diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/MtlsProviderTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/MtlsProviderTest.java deleted file mode 100644 index 9835b4c120..0000000000 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/mtls/MtlsProviderTest.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google LLC nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package com.google.api.gax.rpc.mtls; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.security.GeneralSecurityException; -import java.util.List; -import org.junit.jupiter.api.Test; - -class MtlsProviderTest { - - private static class TestCertProviderCommandProcess extends Process { - - private boolean runForever; - private int exitValue; - - public TestCertProviderCommandProcess(int exitValue, boolean runForever) { - this.runForever = runForever; - this.exitValue = exitValue; - } - - @Override - public OutputStream getOutputStream() { - return null; - } - - @Override - public InputStream getInputStream() { - return null; - } - - @Override - public InputStream getErrorStream() { - return null; - } - - @Override - public int waitFor() throws InterruptedException { - return 0; - } - - @Override - public int exitValue() { - if (runForever) { - throw new IllegalThreadStateException(); - } - return exitValue; - } - - @Override - public void destroy() {} - } - - static class TestProcessProvider implements MtlsProvider.ProcessProvider { - - private int exitCode; - - public TestProcessProvider(int exitCode) { - this.exitCode = exitCode; - } - - @Override - public Process createProcess(InputStream metadata) throws IOException { - return new TestCertProviderCommandProcess(exitCode, false); - } - } - - @Test - void testUseMtlsEndpointAlways() { - MtlsProvider mtlsProvider = - new MtlsProvider( - name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "always" : "false", - new TestProcessProvider(0), - "/path/to/missing/file"); - assertEquals( - MtlsProvider.MtlsEndpointUsagePolicy.ALWAYS, mtlsProvider.getMtlsEndpointUsagePolicy()); - } - - @Test - void testUseMtlsEndpointAuto() { - MtlsProvider mtlsProvider = - new MtlsProvider( - name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "false", - new TestProcessProvider(0), - "/path/to/missing/file"); - assertEquals( - MtlsProvider.MtlsEndpointUsagePolicy.AUTO, mtlsProvider.getMtlsEndpointUsagePolicy()); - } - - @Test - void testUseMtlsEndpointNever() { - MtlsProvider mtlsProvider = - new MtlsProvider( - name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "never" : "false", - new TestProcessProvider(0), - "/path/to/missing/file"); - assertEquals( - MtlsProvider.MtlsEndpointUsagePolicy.NEVER, mtlsProvider.getMtlsEndpointUsagePolicy()); - } - - @Test - void testUseMtlsClientCertificateTrue() { - MtlsProvider mtlsProvider = - new MtlsProvider( - name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "true", - new TestProcessProvider(0), - "/path/to/missing/file"); - assertTrue(mtlsProvider.useMtlsClientCertificate()); - } - - @Test - void testUseMtlsClientCertificateFalse() { - MtlsProvider mtlsProvider = - new MtlsProvider( - name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "auto" : "false", - new TestProcessProvider(0), - "/path/to/missing/file"); - assertFalse(mtlsProvider.useMtlsClientCertificate()); - } - - @Test - void testGetKeyStore() throws IOException { - MtlsProvider mtlsProvider = - new MtlsProvider( - name -> name.equals("GOOGLE_API_USE_MTLS_ENDPOINT") ? "always" : "false", - new TestProcessProvider(0), - "/path/to/missing/file"); - assertNull(mtlsProvider.getKeyStore()); - } - - @Test - void testGetKeyStoreNonZeroExitCode() - throws IOException, InterruptedException, GeneralSecurityException { - InputStream metadata = - this.getClass() - .getClassLoader() - .getResourceAsStream("com/google/api/gax/rpc/mtls/mtlsCertAndKey.pem"); - IOException actual = - assertThrows( - IOException.class, - () -> MtlsProvider.getKeyStore(metadata, new TestProcessProvider(1))); - assertTrue( - actual.getMessage().contains("Cert provider command failed with exit code: 1"), - "expected to fail with nonzero exit code"); - } - - @Test - void testExtractCertificateProviderCommand() throws IOException { - InputStream inputStream = - this.getClass() - .getClassLoader() - .getResourceAsStream("com/google/api/gax/rpc/mtls/mtls_context_aware_metadata.json"); - List command = MtlsProvider.extractCertificateProviderCommand(inputStream); - assertEquals(2, command.size()); - assertEquals("some_binary", command.get(0)); - assertEquals("some_argument", command.get(1)); - } - - @Test - void testRunCertificateProviderCommandSuccess() throws IOException, InterruptedException { - Process certCommandProcess = new TestCertProviderCommandProcess(0, false); - int exitValue = MtlsProvider.runCertificateProviderCommand(certCommandProcess, 100); - assertEquals(0, exitValue); - } - - @Test - void testRunCertificateProviderCommandTimeout() throws InterruptedException { - Process certCommandProcess = new TestCertProviderCommandProcess(0, true); - IOException actual = - assertThrows( - IOException.class, - () -> MtlsProvider.runCertificateProviderCommand(certCommandProcess, 100)); - assertTrue( - actual.getMessage().contains("cert provider command timed out"), - "expected to fail with timeout"); - } -} diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeMtlsProvider.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeMtlsProvider.java index e5f5c3a91a..abe374dac6 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeMtlsProvider.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeMtlsProvider.java @@ -32,42 +32,24 @@ import com.google.api.client.util.SecurityUtils; import com.google.api.core.InternalApi; -import com.google.api.gax.rpc.mtls.MtlsProvider; +import com.google.auth.mtls.MtlsProvider; import java.io.IOException; import java.io.InputStream; import java.security.GeneralSecurityException; import java.security.KeyStore; @InternalApi("for testing") -public class FakeMtlsProvider extends MtlsProvider { - private boolean useClientCertificate; - private MtlsEndpointUsagePolicy mtlsEndpointUsagePolicy; +public class FakeMtlsProvider implements MtlsProvider { private KeyStore keyStore; private boolean throwExceptionForGetKeyStore; public FakeMtlsProvider( - boolean useClientCertificate, - MtlsEndpointUsagePolicy mtlsEndpointUsagePolicy, - KeyStore keystore, - String keyStorePassword, - boolean throwExceptionForGetKeyStore) { + KeyStore keystore, String keyStorePassword, boolean throwExceptionForGetKeyStore) { super(); - this.useClientCertificate = useClientCertificate; - this.mtlsEndpointUsagePolicy = mtlsEndpointUsagePolicy; this.keyStore = keystore; this.throwExceptionForGetKeyStore = throwExceptionForGetKeyStore; } - @Override - public boolean useMtlsClientCertificate() { - return useClientCertificate; - } - - @Override - public MtlsEndpointUsagePolicy getMtlsEndpointUsagePolicy() { - return mtlsEndpointUsagePolicy; - } - @Override public KeyStore getKeyStore() throws IOException { if (throwExceptionForGetKeyStore) { @@ -76,6 +58,11 @@ public KeyStore getKeyStore() throws IOException { return keyStore; } + @Override + public boolean isAvailable() throws IOException { + return true; + } + public static KeyStore createTestMtlsKeyStore() throws IOException { try { InputStream certAndKey = From 9cae675f0ff44227cea60e6802769e82cce948f2 Mon Sep 17 00:00:00 2001 From: Mridula <66699525+mpeddada1@users.noreply.github.com> Date: Tue, 29 Jul 2025 16:32:48 -0400 Subject: [PATCH 4/6] fix: improve error messaging for LRO CancellationException (#3873) --- .../api/gax/longrunning/OperationTimedPollAlgorithm.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/longrunning/OperationTimedPollAlgorithm.java b/gax-java/gax/src/main/java/com/google/api/gax/longrunning/OperationTimedPollAlgorithm.java index 0b2f225dfd..933d660dd7 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/longrunning/OperationTimedPollAlgorithm.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/longrunning/OperationTimedPollAlgorithm.java @@ -91,7 +91,10 @@ public boolean shouldRetry(TimedAttemptSettings nextAttemptSettings) if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log( Level.WARNING, - "The task has been cancelled. Please refer to " + "The long running operation request is no longer being tracked. " + + "Possible reasons include a timeout or " + + "exceeding the maximum number of poll attempts." + + " Please refer to " + LRO_TROUBLESHOOTING_LINK + " for more information"); } From 597faa479c4dd15fd3309942e776aa9924cb0beb Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Mon, 4 Aug 2025 12:06:56 -0400 Subject: [PATCH 5/6] chore: update googleapis commit at Wed Jul 23 02:42:20 UTC 2025 (#3866) chore: update googleapis commit at Wed Jul 23 02:42:20 UTC 2025 --- generation_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generation_config.yaml b/generation_config.yaml index af1fc35663..b3fc43f62c 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,4 +1,4 @@ -googleapis_commitish: 0da61b4af3b87dd71dd557457b5099e23154b297 +googleapis_commitish: efe27dbe161b24710f4e95415e8f38922ae6f453 # the libraries are ordered with respect to library name, which is # java-{library.library_name} or java-{library.api-shortname} when # library.library_name is not defined. From 47b4f680b6a7ab495a7e4bfb8fba7135d0b24f06 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 4 Aug 2025 13:47:25 -0400 Subject: [PATCH 6/6] chore(main): release 2.61.0 (#3867) :robot: I have created a release *beep* *boop* ---

2.61.0 ## [2.61.0](https://github.com/googleapis/sdk-platform-java/compare/v2.60.2...v2.61.0) (2025-08-04) ### Features * **mtls:** Add support for X.509-based mTLS-transport in Java GAX lib ([#3852](https://github.com/googleapis/sdk-platform-java/issues/3852)) ([2d02344](https://github.com/googleapis/sdk-platform-java/commit/2d02344d79f5cfdca7834aa0d6306f1b72a7505a)) ### Bug Fixes * improve error messaging for LRO CancellationException ([#3873](https://github.com/googleapis/sdk-platform-java/issues/3873)) ([9cae675](https://github.com/googleapis/sdk-platform-java/commit/9cae675f0ff44227cea60e6802769e82cce948f2)) * make generation config update logs verbose ([#3764](https://github.com/googleapis/sdk-platform-java/issues/3764)) ([9b1a34b](https://github.com/googleapis/sdk-platform-java/commit/9b1a34b0dd08c0eddcf09ef5d81b225d0942f529))
--- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .cloudbuild/graalvm/cloudbuild-test-a.yaml | 2 +- .cloudbuild/graalvm/cloudbuild-test-b.yaml | 2 +- .cloudbuild/graalvm/cloudbuild-test-c.yaml | 2 +- .cloudbuild/graalvm/cloudbuild.yaml | 2 +- .../cloudbuild-library-generation-push.yaml | 2 +- .../library_generation.Dockerfile | 2 +- .../library_generation_airlock.Dockerfile | 2 +- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 ++++++ WORKSPACE | 2 +- api-common-java/pom.xml | 4 +- coverage-report/pom.xml | 8 ++-- gapic-generator-java-bom/pom.xml | 34 +++++++------- gapic-generator-java-pom-parent/pom.xml | 2 +- gapic-generator-java/pom.xml | 6 +-- gax-java/README.md | 12 ++--- gax-java/dependencies.properties | 8 ++-- gax-java/gax-bom/pom.xml | 20 ++++---- gax-java/gax-grpc/pom.xml | 4 +- gax-java/gax-httpjson/pom.xml | 4 +- gax-java/gax/pom.xml | 4 +- gax-java/pom.xml | 14 +++--- .../.kokoro/presubmit/graalvm-native-a.cfg | 2 +- .../.kokoro/presubmit/graalvm-native-b.cfg | 2 +- .../.kokoro/presubmit/graalvm-native-c.cfg | 2 +- .../grpc-google-common-protos/pom.xml | 4 +- java-common-protos/pom.xml | 10 ++-- .../proto-google-common-protos/pom.xml | 4 +- java-core/google-cloud-core-bom/pom.xml | 10 ++-- java-core/google-cloud-core-grpc/pom.xml | 4 +- java-core/google-cloud-core-http/pom.xml | 4 +- java-core/google-cloud-core/pom.xml | 4 +- java-core/pom.xml | 6 +-- java-iam/grpc-google-iam-v1/pom.xml | 4 +- java-iam/grpc-google-iam-v2/pom.xml | 4 +- java-iam/grpc-google-iam-v2beta/pom.xml | 4 +- java-iam/grpc-google-iam-v3/pom.xml | 4 +- java-iam/grpc-google-iam-v3beta/pom.xml | 4 +- java-iam/pom.xml | 32 ++++++------- java-iam/proto-google-iam-v1/pom.xml | 4 +- java-iam/proto-google-iam-v2/pom.xml | 4 +- java-iam/proto-google-iam-v2beta/pom.xml | 4 +- java-iam/proto-google-iam-v3/pom.xml | 4 +- java-iam/proto-google-iam-v3beta/pom.xml | 4 +- java-shared-dependencies/README.md | 2 +- .../dependency-convergence-check/pom.xml | 2 +- .../first-party-dependencies/pom.xml | 10 ++-- java-shared-dependencies/pom.xml | 8 ++-- .../third-party-dependencies/pom.xml | 4 +- .../upper-bound-check/pom.xml | 4 +- java-showcase/pom.xml | 2 +- sdk-platform-java-config/pom.xml | 4 +- versions.txt | 46 +++++++++---------- 53 files changed, 185 insertions(+), 172 deletions(-) diff --git a/.cloudbuild/graalvm/cloudbuild-test-a.yaml b/.cloudbuild/graalvm/cloudbuild-test-a.yaml index 447e7cbc9c..5e9b41cec7 100644 --- a/.cloudbuild/graalvm/cloudbuild-test-a.yaml +++ b/.cloudbuild/graalvm/cloudbuild-test-a.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.51.0' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' options: machineType: 'E2_HIGHCPU_8' diff --git a/.cloudbuild/graalvm/cloudbuild-test-b.yaml b/.cloudbuild/graalvm/cloudbuild-test-b.yaml index ee6dc7d9a4..797d876b61 100644 --- a/.cloudbuild/graalvm/cloudbuild-test-b.yaml +++ b/.cloudbuild/graalvm/cloudbuild-test-b.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.51.0' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' options: machineType: 'E2_HIGHCPU_8' diff --git a/.cloudbuild/graalvm/cloudbuild-test-c.yaml b/.cloudbuild/graalvm/cloudbuild-test-c.yaml index ee2b3aaf37..32c5bde711 100644 --- a/.cloudbuild/graalvm/cloudbuild-test-c.yaml +++ b/.cloudbuild/graalvm/cloudbuild-test-c.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.51.0' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' options: machineType: 'E2_HIGHCPU_8' diff --git a/.cloudbuild/graalvm/cloudbuild.yaml b/.cloudbuild/graalvm/cloudbuild.yaml index c24899ca59..e8a31c4656 100644 --- a/.cloudbuild/graalvm/cloudbuild.yaml +++ b/.cloudbuild/graalvm/cloudbuild.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _SHARED_DEPENDENCIES_VERSION: '3.50.3-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current} + _SHARED_DEPENDENCIES_VERSION: '3.51.0' # {x-version-update:google-cloud-shared-dependencies:current} _JAVA_SHARED_CONFIG_VERSION: '1.16.1' steps: # GraalVM A build diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml index 3dc8d94c16..425a040f0e 100644 --- a/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml +++ b/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml @@ -14,7 +14,7 @@ timeout: 7200s # 2 hours substitutions: - _GAPIC_GENERATOR_JAVA_VERSION: '2.60.3-SNAPSHOT' # {x-version-update:gapic-generator-java:current} + _GAPIC_GENERATOR_JAVA_VERSION: '2.61.0' # {x-version-update:gapic-generator-java:current} _PRIVATE_IMAGE_NAME: "us-docker.pkg.dev/java-hermetic-build-prod/private-resources/java-library-generation" _PRIVATE_SHA_IMAGE_ID: "${_PRIVATE_IMAGE_NAME}:${COMMIT_SHA}" _PRIVATE_LATEST_IMAGE_ID: "${_PRIVATE_IMAGE_NAME}:latest" diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile index 8449074f59..f6b5e94dd0 100644 --- a/.cloudbuild/library_generation/library_generation.Dockerfile +++ b/.cloudbuild/library_generation/library_generation.Dockerfile @@ -21,7 +21,7 @@ FROM docker.io/library/maven:3.9.9-eclipse-temurin-17-alpine@sha256:969014ee8852 WORKDIR /sdk-platform-java COPY . . # {x-version-update-start:gapic-generator-java:current} -ENV DOCKER_GAPIC_GENERATOR_VERSION="2.60.3-SNAPSHOT" +ENV DOCKER_GAPIC_GENERATOR_VERSION="2.61.0" # {x-version-update-end} # Download the java formatter diff --git a/.cloudbuild/library_generation/library_generation_airlock.Dockerfile b/.cloudbuild/library_generation/library_generation_airlock.Dockerfile index cd2efad1f2..49e832dd7f 100644 --- a/.cloudbuild/library_generation/library_generation_airlock.Dockerfile +++ b/.cloudbuild/library_generation/library_generation_airlock.Dockerfile @@ -21,7 +21,7 @@ FROM us-docker.pkg.dev/artifact-foundry-prod/docker-3p-trusted/maven@sha256:d3f0 WORKDIR /sdk-platform-java COPY . . # {x-version-update-start:gapic-generator-java:current} -ENV DOCKER_GAPIC_GENERATOR_VERSION="2.60.3-SNAPSHOT" +ENV DOCKER_GAPIC_GENERATOR_VERSION="2.61.0" # {x-version-update-end} # Download the java formatter diff --git a/.release-please-manifest.json b/.release-please-manifest.json index beb07f9857..71f800fe01 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.60.2" + ".": "2.61.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index c31e603711..9f7999fd14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [2.61.0](https://github.com/googleapis/sdk-platform-java/compare/v2.60.2...v2.61.0) (2025-08-04) + + +### Features + +* **mtls:** Add support for X.509-based mTLS-transport in Java GAX lib ([#3852](https://github.com/googleapis/sdk-platform-java/issues/3852)) ([2d02344](https://github.com/googleapis/sdk-platform-java/commit/2d02344d79f5cfdca7834aa0d6306f1b72a7505a)) + + +### Bug Fixes + +* improve error messaging for LRO CancellationException ([#3873](https://github.com/googleapis/sdk-platform-java/issues/3873)) ([9cae675](https://github.com/googleapis/sdk-platform-java/commit/9cae675f0ff44227cea60e6802769e82cce948f2)) +* make generation config update logs verbose ([#3764](https://github.com/googleapis/sdk-platform-java/issues/3764)) ([9b1a34b](https://github.com/googleapis/sdk-platform-java/commit/9b1a34b0dd08c0eddcf09ef5d81b225d0942f529)) + ## [2.60.2](https://github.com/googleapis/sdk-platform-java/compare/v2.60.1...v2.60.2) (2025-07-22) diff --git a/WORKSPACE b/WORKSPACE index a5b262b2de..1a75eac3c4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -58,7 +58,7 @@ load("@rules_jvm_external//:defs.bzl", "maven_install") load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_ARTIFACTS") load("@io_grpc_grpc_java//:repositories.bzl", "IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS") -_gapic_generator_java_version = "2.60.3-SNAPSHOT" # {x-version-update:gapic-generator-java:current} +_gapic_generator_java_version = "2.61.0" # {x-version-update:gapic-generator-java:current} maven_install( artifacts = [ diff --git a/api-common-java/pom.xml b/api-common-java/pom.xml index f336dbcc73..899ada92c8 100644 --- a/api-common-java/pom.xml +++ b/api-common-java/pom.xml @@ -5,14 +5,14 @@ com.google.api api-common jar - 2.51.3-SNAPSHOT + 2.52.0 API Common Common utilities for Google APIs in Java com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent diff --git a/coverage-report/pom.xml b/coverage-report/pom.xml index 3ff18a936c..5e50408b82 100644 --- a/coverage-report/pom.xml +++ b/coverage-report/pom.xml @@ -31,22 +31,22 @@ com.google.api gax - 2.68.3-SNAPSHOT + 2.69.0 com.google.api gax-grpc - 2.68.3-SNAPSHOT + 2.69.0 com.google.api gax-httpjson - 2.68.3-SNAPSHOT + 2.69.0 com.google.api api-common - 2.51.3-SNAPSHOT + 2.52.0
diff --git a/gapic-generator-java-bom/pom.xml b/gapic-generator-java-bom/pom.xml index f5a85094b9..6eb47fbab3 100644 --- a/gapic-generator-java-bom/pom.xml +++ b/gapic-generator-java-bom/pom.xml @@ -4,7 +4,7 @@ com.google.api gapic-generator-java-bom pom - 2.60.3-SNAPSHOT + 2.61.0 GAPIC Generator Java BOM BOM for the libraries in gapic-generator-java repository. Users should not @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -75,81 +75,81 @@ com.google.api api-common - 2.51.3-SNAPSHOT + 2.52.0 com.google.api gax-bom - 2.68.3-SNAPSHOT + 2.69.0 pom import com.google.api gapic-generator-java - 2.60.3-SNAPSHOT + 2.61.0 com.google.api.grpc grpc-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 com.google.api.grpc proto-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 com.google.api.grpc proto-google-iam-v1 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-iam-v2 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-iam-v2beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-iam-v3 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-iam-v3beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v1 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v2 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v2beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v3 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v3beta - 1.54.3-SNAPSHOT + 1.55.0
diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index 40d8adfc44..ecaed83989 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 pom GAPIC Generator Java POM Parent https://github.com/googleapis/sdk-platform-java diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index f0fcf3dbe4..db74e2e996 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api gapic-generator-java - 2.60.3-SNAPSHOT + 2.61.0 GAPIC Generator Java GAPIC generator Java @@ -22,7 +22,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -31,7 +31,7 @@ com.google.api gapic-generator-java-bom - 2.60.3-SNAPSHOT + 2.61.0 pom import diff --git a/gax-java/README.md b/gax-java/README.md index b6d5523b9e..ed9787f4af 100644 --- a/gax-java/README.md +++ b/gax-java/README.md @@ -34,27 +34,27 @@ If you are using Maven, add this to your pom.xml file com.google.api gax - 2.68.2 + 2.69.0 com.google.api gax-grpc - 2.68.2 + 2.69.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.api:gax:2.68.2', - 'com.google.api:gax-grpc:2.68.2' +compile 'com.google.api:gax:2.69.0', + 'com.google.api:gax-grpc:2.69.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.api" % "gax" % "2.68.2" -libraryDependencies += "com.google.api" % "gax-grpc" % "2.68.2" +libraryDependencies += "com.google.api" % "gax" % "2.69.0" +libraryDependencies += "com.google.api" % "gax-grpc" % "2.69.0" ``` [//]: # ({x-version-update-end}) diff --git a/gax-java/dependencies.properties b/gax-java/dependencies.properties index da24a93f12..52acc0bb44 100644 --- a/gax-java/dependencies.properties +++ b/gax-java/dependencies.properties @@ -8,16 +8,16 @@ # Versions of oneself # {x-version-update-start:gax:current} -version.gax=2.68.3-SNAPSHOT +version.gax=2.69.0 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_grpc=2.68.3-SNAPSHOT +version.gax_grpc=2.69.0 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_bom=2.68.3-SNAPSHOT +version.gax_bom=2.69.0 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_httpjson=2.68.3-SNAPSHOT +version.gax_httpjson=2.69.0 # {x-version-update-end} # Versions for dependencies which actual artifacts differ between Bazel and Gradle. diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml index a12f792120..9988977930 100644 --- a/gax-java/gax-bom/pom.xml +++ b/gax-java/gax-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api gax-bom - 2.68.3-SNAPSHOT + 2.69.0 pom GAX (Google Api eXtensions) for Java (BOM) Google Api eXtensions for Java (BOM) @@ -43,55 +43,55 @@ com.google.api gax - 2.68.3-SNAPSHOT + 2.69.0 com.google.api gax - 2.68.3-SNAPSHOT + 2.69.0 test-jar testlib com.google.api gax - 2.68.3-SNAPSHOT + 2.69.0 testlib com.google.api gax-grpc - 2.68.3-SNAPSHOT + 2.69.0 com.google.api gax-grpc - 2.68.3-SNAPSHOT + 2.69.0 test-jar testlib com.google.api gax-grpc - 2.68.3-SNAPSHOT + 2.69.0 testlib com.google.api gax-httpjson - 2.68.3-SNAPSHOT + 2.69.0 com.google.api gax-httpjson - 2.68.3-SNAPSHOT + 2.69.0 test-jar testlib com.google.api gax-httpjson - 2.68.3-SNAPSHOT + 2.69.0 testlib
diff --git a/gax-java/gax-grpc/pom.xml b/gax-java/gax-grpc/pom.xml index d0167b744f..8aaac9a9d5 100644 --- a/gax-java/gax-grpc/pom.xml +++ b/gax-java/gax-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-grpc - 2.68.3-SNAPSHOT + 2.69.0 jar GAX (Google Api eXtensions) for Java (gRPC) Google Api eXtensions for Java (gRPC) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.68.3-SNAPSHOT + 2.69.0 diff --git a/gax-java/gax-httpjson/pom.xml b/gax-java/gax-httpjson/pom.xml index 2cf24daec2..0fdf35be2e 100644 --- a/gax-java/gax-httpjson/pom.xml +++ b/gax-java/gax-httpjson/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-httpjson - 2.68.3-SNAPSHOT + 2.69.0 jar GAX (Google Api eXtensions) for Java (HTTP JSON) Google Api eXtensions for Java (HTTP JSON) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.68.3-SNAPSHOT + 2.69.0 diff --git a/gax-java/gax/pom.xml b/gax-java/gax/pom.xml index 284faf514f..319ba2ab2d 100644 --- a/gax-java/gax/pom.xml +++ b/gax-java/gax/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax - 2.68.3-SNAPSHOT + 2.69.0 jar GAX (Google Api eXtensions) for Java (Core) Google Api eXtensions for Java (Core) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.68.3-SNAPSHOT + 2.69.0 diff --git a/gax-java/pom.xml b/gax-java/pom.xml index 6131a83347..2da2cb2d17 100644 --- a/gax-java/pom.xml +++ b/gax-java/pom.xml @@ -4,14 +4,14 @@ com.google.api gax-parent pom - 2.68.3-SNAPSHOT + 2.69.0 GAX (Google Api eXtensions) for Java (Parent) Google Api eXtensions for Java (Parent) com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -50,7 +50,7 @@ com.google.api api-common - 2.51.3-SNAPSHOT + 2.52.0 com.google.auth @@ -98,24 +98,24 @@ com.google.api gax - 2.68.3-SNAPSHOT + 2.69.0 com.google.api gax - 2.68.3-SNAPSHOT + 2.69.0 test-jar testlib com.google.api.grpc proto-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 com.google.api.grpc grpc-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 io.grpc diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg index b27fd352d8..783727ef01 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.3-SNAPSHOT" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.51.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg index 9828658e62..83c7afee07 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.3-SNAPSHOT" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.51.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg index 201f3358cd..3a9bbf8c3a 100644 --- a/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg +++ b/hermetic_build/library_generation/owlbot/templates/java_library/.kokoro/presubmit/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.3-SNAPSHOT" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.51.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/java-common-protos/grpc-google-common-protos/pom.xml b/java-common-protos/grpc-google-common-protos/pom.xml index 4c47e74c88..36e89251df 100644 --- a/java-common-protos/grpc-google-common-protos/pom.xml +++ b/java-common-protos/grpc-google-common-protos/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 grpc-google-common-protos GRPC library for grpc-google-common-protos com.google.api.grpc google-common-protos-parent - 2.59.3-SNAPSHOT + 2.60.0 diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index e9670eaf89..57b8b59d7b 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -4,7 +4,7 @@ com.google.api.grpc google-common-protos-parent pom - 2.59.3-SNAPSHOT + 2.60.0 Google Common Protos Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -51,7 +51,7 @@ com.google.cloud third-party-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import @@ -65,7 +65,7 @@ com.google.api.grpc grpc-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 io.grpc @@ -77,7 +77,7 @@ com.google.api.grpc proto-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 com.google.guava diff --git a/java-common-protos/proto-google-common-protos/pom.xml b/java-common-protos/proto-google-common-protos/pom.xml index 9644d84aea..de29635a55 100644 --- a/java-common-protos/proto-google-common-protos/pom.xml +++ b/java-common-protos/proto-google-common-protos/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 proto-google-common-protos PROTO library for proto-google-common-protos com.google.api.grpc google-common-protos-parent - 2.59.3-SNAPSHOT + 2.60.0 diff --git a/java-core/google-cloud-core-bom/pom.xml b/java-core/google-cloud-core-bom/pom.xml index 96d0ad6593..bf4516e07e 100644 --- a/java-core/google-cloud-core-bom/pom.xml +++ b/java-core/google-cloud-core-bom/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.cloud google-cloud-core-bom - 2.58.3-SNAPSHOT + 2.59.0 pom com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../../gapic-generator-java-pom-parent @@ -23,17 +23,17 @@ com.google.cloud google-cloud-core - 2.58.3-SNAPSHOT + 2.59.0 com.google.cloud google-cloud-core-grpc - 2.58.3-SNAPSHOT + 2.59.0 com.google.cloud google-cloud-core-http - 2.58.3-SNAPSHOT + 2.59.0 diff --git a/java-core/google-cloud-core-grpc/pom.xml b/java-core/google-cloud-core-grpc/pom.xml index 86ace28180..e78151e295 100644 --- a/java-core/google-cloud-core-grpc/pom.xml +++ b/java-core/google-cloud-core-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-core-grpc - 2.58.3-SNAPSHOT + 2.59.0 jar Google Cloud Core gRPC @@ -12,7 +12,7 @@ com.google.cloud google-cloud-core-parent - 2.58.3-SNAPSHOT + 2.59.0 google-cloud-core-grpc diff --git a/java-core/google-cloud-core-http/pom.xml b/java-core/google-cloud-core-http/pom.xml index 2d5afa20ce..c3dadf8820 100644 --- a/java-core/google-cloud-core-http/pom.xml +++ b/java-core/google-cloud-core-http/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-core-http - 2.58.3-SNAPSHOT + 2.59.0 jar Google Cloud Core HTTP @@ -12,7 +12,7 @@ com.google.cloud google-cloud-core-parent - 2.58.3-SNAPSHOT + 2.59.0 google-cloud-core-http diff --git a/java-core/google-cloud-core/pom.xml b/java-core/google-cloud-core/pom.xml index 1fe07d5bae..0a41c7d271 100644 --- a/java-core/google-cloud-core/pom.xml +++ b/java-core/google-cloud-core/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-core - 2.58.3-SNAPSHOT + 2.59.0 jar Google Cloud Core @@ -12,7 +12,7 @@ com.google.cloud google-cloud-core-parent - 2.58.3-SNAPSHOT + 2.59.0 google-cloud-core diff --git a/java-core/pom.xml b/java-core/pom.xml index 1527484c90..c9547c9324 100644 --- a/java-core/pom.xml +++ b/java-core/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-core-parent pom - 2.58.3-SNAPSHOT + 2.59.0 Google Cloud Core Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -33,7 +33,7 @@ com.google.cloud google-cloud-shared-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import diff --git a/java-iam/grpc-google-iam-v1/pom.xml b/java-iam/grpc-google-iam-v1/pom.xml index 275b0d9c05..7b85b81eff 100644 --- a/java-iam/grpc-google-iam-v1/pom.xml +++ b/java-iam/grpc-google-iam-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v1 - 1.54.3-SNAPSHOT + 1.55.0 grpc-google-iam-v1 GRPC library for grpc-google-iam-v1 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/grpc-google-iam-v2/pom.xml b/java-iam/grpc-google-iam-v2/pom.xml index 6ce681fb51..fe7d32f76a 100644 --- a/java-iam/grpc-google-iam-v2/pom.xml +++ b/java-iam/grpc-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2 - 1.54.3-SNAPSHOT + 1.55.0 grpc-google-iam-v2 GRPC library for proto-google-iam-v2 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/grpc-google-iam-v2beta/pom.xml b/java-iam/grpc-google-iam-v2beta/pom.xml index c98f4ecf9f..b7857fc47e 100644 --- a/java-iam/grpc-google-iam-v2beta/pom.xml +++ b/java-iam/grpc-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2beta - 1.54.3-SNAPSHOT + 1.55.0 grpc-google-iam-v2beta GRPC library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/grpc-google-iam-v3/pom.xml b/java-iam/grpc-google-iam-v3/pom.xml index 85265bb902..6339efaf50 100644 --- a/java-iam/grpc-google-iam-v3/pom.xml +++ b/java-iam/grpc-google-iam-v3/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v3 - 1.54.3-SNAPSHOT + 1.55.0 grpc-google-iam-v3 GRPC library for proto-google-iam-v3 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/grpc-google-iam-v3beta/pom.xml b/java-iam/grpc-google-iam-v3beta/pom.xml index 8df986d01c..786211820c 100644 --- a/java-iam/grpc-google-iam-v3beta/pom.xml +++ b/java-iam/grpc-google-iam-v3beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v3beta - 1.54.3-SNAPSHOT + 1.55.0 grpc-google-iam-v3beta GRPC library for proto-google-iam-v3beta com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/pom.xml b/java-iam/pom.xml index 72bdc919d6..f0e6339207 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-iam-parent pom - 1.54.3-SNAPSHOT + 1.55.0 Google IAM Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -50,19 +50,19 @@ com.google.cloud third-party-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import com.google.api.grpc proto-google-iam-v3beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v3beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.guava @@ -88,59 +88,59 @@ com.google.api gax-bom - 2.68.3-SNAPSHOT + 2.69.0 pom import com.google.api api-common - 2.51.3-SNAPSHOT + 2.52.0 com.google.api.grpc proto-google-iam-v2 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v2 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-common-protos - 2.59.3-SNAPSHOT + 2.60.0 com.google.api.grpc proto-google-iam-v2beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v1 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v2beta - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-iam-v1 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc proto-google-iam-v3 - 1.54.3-SNAPSHOT + 1.55.0 com.google.api.grpc grpc-google-iam-v3 - 1.54.3-SNAPSHOT + 1.55.0 javax.annotation diff --git a/java-iam/proto-google-iam-v1/pom.xml b/java-iam/proto-google-iam-v1/pom.xml index 1212184642..f182936b3b 100644 --- a/java-iam/proto-google-iam-v1/pom.xml +++ b/java-iam/proto-google-iam-v1/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v1 - 1.54.3-SNAPSHOT + 1.55.0 proto-google-iam-v1 PROTO library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/proto-google-iam-v2/pom.xml b/java-iam/proto-google-iam-v2/pom.xml index 6297301276..1ab74eec4b 100644 --- a/java-iam/proto-google-iam-v2/pom.xml +++ b/java-iam/proto-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2 - 1.54.3-SNAPSHOT + 1.55.0 proto-google-iam-v2 Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/proto-google-iam-v2beta/pom.xml b/java-iam/proto-google-iam-v2beta/pom.xml index 99258cf507..1391828de2 100644 --- a/java-iam/proto-google-iam-v2beta/pom.xml +++ b/java-iam/proto-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2beta - 1.54.3-SNAPSHOT + 1.55.0 proto-google-iam-v2beta Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/proto-google-iam-v3/pom.xml b/java-iam/proto-google-iam-v3/pom.xml index dd6f011d82..dbbe35d5e5 100644 --- a/java-iam/proto-google-iam-v3/pom.xml +++ b/java-iam/proto-google-iam-v3/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v3 - 1.54.3-SNAPSHOT + 1.55.0 proto-google-iam-v3 Proto library for proto-google-iam-v3 com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-iam/proto-google-iam-v3beta/pom.xml b/java-iam/proto-google-iam-v3beta/pom.xml index 841c663dfb..6a27ef63d9 100644 --- a/java-iam/proto-google-iam-v3beta/pom.xml +++ b/java-iam/proto-google-iam-v3beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v3beta - 1.54.3-SNAPSHOT + 1.55.0 proto-google-iam-v3beta Proto library for proto-google-iam-v3beta com.google.cloud google-iam-parent - 1.54.3-SNAPSHOT + 1.55.0 diff --git a/java-shared-dependencies/README.md b/java-shared-dependencies/README.md index 35650a5c2a..4f230feed1 100644 --- a/java-shared-dependencies/README.md +++ b/java-shared-dependencies/README.md @@ -14,7 +14,7 @@ If you are using Maven, add this to the `dependencyManagement` section. com.google.cloud google-cloud-shared-dependencies - 3.50.2 + 3.51.0 pom import diff --git a/java-shared-dependencies/dependency-convergence-check/pom.xml b/java-shared-dependencies/dependency-convergence-check/pom.xml index d3eb14d34a..82692d0f25 100644 --- a/java-shared-dependencies/dependency-convergence-check/pom.xml +++ b/java-shared-dependencies/dependency-convergence-check/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud shared-dependencies-dependency-convergence-test - 3.50.3-SNAPSHOT + 3.51.0 Dependency convergence test for certain artifacts in Google Cloud Shared Dependencies An dependency convergence test case for the shared dependencies BOM. A failure of this test case means diff --git a/java-shared-dependencies/first-party-dependencies/pom.xml b/java-shared-dependencies/first-party-dependencies/pom.xml index 79f161f350..f00060da7f 100644 --- a/java-shared-dependencies/first-party-dependencies/pom.xml +++ b/java-shared-dependencies/first-party-dependencies/pom.xml @@ -6,7 +6,7 @@ com.google.cloud first-party-dependencies pom - 3.50.3-SNAPSHOT + 3.51.0 Google Cloud First-party Shared Dependencies Shared first-party dependencies for Google Cloud Java libraries. @@ -33,7 +33,7 @@ com.google.api gapic-generator-java-bom - 2.60.3-SNAPSHOT + 2.61.0 pom import @@ -45,7 +45,7 @@ com.google.cloud google-cloud-core-bom - 2.58.3-SNAPSHOT + 2.59.0 pom import @@ -69,13 +69,13 @@ com.google.cloud google-cloud-core - 2.58.3-SNAPSHOT + 2.59.0 test-jar com.google.cloud google-cloud-core - 2.58.3-SNAPSHOT + 2.59.0 tests diff --git a/java-shared-dependencies/pom.xml b/java-shared-dependencies/pom.xml index 89dff9aa02..354b518626 100644 --- a/java-shared-dependencies/pom.xml +++ b/java-shared-dependencies/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-shared-dependencies pom - 3.50.3-SNAPSHOT + 3.51.0 first-party-dependencies third-party-dependencies @@ -17,7 +17,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../gapic-generator-java-pom-parent @@ -31,14 +31,14 @@ com.google.cloud first-party-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import com.google.cloud third-party-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import diff --git a/java-shared-dependencies/third-party-dependencies/pom.xml b/java-shared-dependencies/third-party-dependencies/pom.xml index a12aee21b1..b690d521d9 100644 --- a/java-shared-dependencies/third-party-dependencies/pom.xml +++ b/java-shared-dependencies/third-party-dependencies/pom.xml @@ -6,7 +6,7 @@ com.google.cloud third-party-dependencies pom - 3.50.3-SNAPSHOT + 3.51.0 Google Cloud Third-party Shared Dependencies Shared third-party dependencies for Google Cloud Java libraries. @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.60.3-SNAPSHOT + 2.61.0 ../../gapic-generator-java-pom-parent diff --git a/java-shared-dependencies/upper-bound-check/pom.xml b/java-shared-dependencies/upper-bound-check/pom.xml index c0146f9c4f..ab88b43a28 100644 --- a/java-shared-dependencies/upper-bound-check/pom.xml +++ b/java-shared-dependencies/upper-bound-check/pom.xml @@ -4,7 +4,7 @@ com.google.cloud shared-dependencies-upper-bound-test pom - 3.50.3-SNAPSHOT + 3.51.0 Upper bound test for Google Cloud Shared Dependencies An upper bound test case for the shared dependencies BOM. A failure of this test case means @@ -30,7 +30,7 @@ com.google.cloud google-cloud-shared-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import diff --git a/java-showcase/pom.xml b/java-showcase/pom.xml index 3ba62550a6..d596dccdd1 100644 --- a/java-showcase/pom.xml +++ b/java-showcase/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-shared-dependencies - 3.50.3-SNAPSHOT + 3.51.0 pom import diff --git a/sdk-platform-java-config/pom.xml b/sdk-platform-java-config/pom.xml index 34d8f833da..bc8b183c8b 100644 --- a/sdk-platform-java-config/pom.xml +++ b/sdk-platform-java-config/pom.xml @@ -4,7 +4,7 @@ com.google.cloud sdk-platform-java-config pom - 3.50.3-SNAPSHOT + 3.51.0 SDK Platform For Java Configurations Shared build configuration for Google Cloud Java libraries. @@ -17,6 +17,6 @@ - 3.50.3-SNAPSHOT + 3.51.0 \ No newline at end of file diff --git a/versions.txt b/versions.txt index ca5cb641d2..60bb09730a 100644 --- a/versions.txt +++ b/versions.txt @@ -1,26 +1,26 @@ # Format: # module:released-version:current-version -gapic-generator-java:2.60.2:2.60.3-SNAPSHOT -api-common:2.51.2:2.51.3-SNAPSHOT -gax:2.68.2:2.68.3-SNAPSHOT -gax-grpc:2.68.2:2.68.3-SNAPSHOT -gax-httpjson:0.153.2:0.153.3-SNAPSHOT -proto-google-common-protos:2.59.2:2.59.3-SNAPSHOT -grpc-google-common-protos:2.59.2:2.59.3-SNAPSHOT -proto-google-iam-v1:1.54.2:1.54.3-SNAPSHOT -grpc-google-iam-v1:1.54.2:1.54.3-SNAPSHOT -proto-google-iam-v2beta:1.54.2:1.54.3-SNAPSHOT -grpc-google-iam-v2beta:1.54.2:1.54.3-SNAPSHOT -google-iam-policy:1.54.2:1.54.3-SNAPSHOT -proto-google-iam-v2:1.54.2:1.54.3-SNAPSHOT -grpc-google-iam-v2:1.54.2:1.54.3-SNAPSHOT -google-cloud-core:2.58.2:2.58.3-SNAPSHOT -google-cloud-shared-dependencies:3.50.2:3.50.3-SNAPSHOT -gapic-showcase:0.6.2:0.6.3-SNAPSHOT -proto-gapic-showcase-v1beta1:0.6.2:0.6.3-SNAPSHOT -grpc-gapic-showcase-v1beta1:0.6.2:0.6.3-SNAPSHOT -proto-google-iam-v3:1.54.2:1.54.3-SNAPSHOT -grpc-google-iam-v3:1.54.2:1.54.3-SNAPSHOT -proto-google-iam-v3beta:1.54.2:1.54.3-SNAPSHOT -grpc-google-iam-v3beta:1.54.2:1.54.3-SNAPSHOT +gapic-generator-java:2.61.0:2.61.0 +api-common:2.52.0:2.52.0 +gax:2.69.0:2.69.0 +gax-grpc:2.69.0:2.69.0 +gax-httpjson:0.154.0:0.154.0 +proto-google-common-protos:2.60.0:2.60.0 +grpc-google-common-protos:2.60.0:2.60.0 +proto-google-iam-v1:1.55.0:1.55.0 +grpc-google-iam-v1:1.55.0:1.55.0 +proto-google-iam-v2beta:1.55.0:1.55.0 +grpc-google-iam-v2beta:1.55.0:1.55.0 +google-iam-policy:1.55.0:1.55.0 +proto-google-iam-v2:1.55.0:1.55.0 +grpc-google-iam-v2:1.55.0:1.55.0 +google-cloud-core:2.59.0:2.59.0 +google-cloud-shared-dependencies:3.51.0:3.51.0 +gapic-showcase:0.7.0:0.7.0 +proto-gapic-showcase-v1beta1:0.7.0:0.7.0 +grpc-gapic-showcase-v1beta1:0.7.0:0.7.0 +proto-google-iam-v3:1.55.0:1.55.0 +grpc-google-iam-v3:1.55.0:1.55.0 +proto-google-iam-v3beta:1.55.0:1.55.0 +grpc-google-iam-v3beta:1.55.0:1.55.0