---
generation_config.yaml | 2 +-
.../main/java/com/google/api/ClientProto.java | 91 ++++++-------
.../java/com/google/api/HttpBodyProto.java | 4 +-
.../java/com/google/api/PythonSettings.java | 124 ++++++++++++++++++
.../main/java/com/google/api/QuotaLimit.java | 28 ++--
.../com/google/api/QuotaLimitOrBuilder.java | 8 +-
.../src/main/proto/google/api/client.proto | 6 +
.../src/main/proto/google/api/httpbody.proto | 1 -
.../src/main/proto/google/api/quota.proto | 4 +-
9 files changed, 199 insertions(+), 69 deletions(-)
diff --git a/generation_config.yaml b/generation_config.yaml
index 484c904e7a..b6b681dc07 100644
--- a/generation_config.yaml
+++ b/generation_config.yaml
@@ -1,4 +1,4 @@
-googleapis_commitish: 537fd482f6bb8afb3a146d9b21673a8eb27958bd
+googleapis_commitish: 6b5d85c66e0885b1665040f6f80b2401f60c1068
# 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.
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ClientProto.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ClientProto.java
index 3f33631b0f..86a8da410d 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ClientProto.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/ClientProto.java
@@ -292,53 +292,54 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "alue\030\002 \001(\t:\0028\001\"A\n\013CppSettings\0222\n\006common\030"
+ "\001 \001(\0132\".google.api.CommonLanguageSetting"
+ "s\"A\n\013PhpSettings\0222\n\006common\030\001 \001(\0132\".googl"
- + "e.api.CommonLanguageSettings\"\313\001\n\016PythonS"
+ + "e.api.CommonLanguageSettings\"\364\001\n\016PythonS"
+ "ettings\0222\n\006common\030\001 \001(\0132\".google.api.Com"
+ "monLanguageSettings\022N\n\025experimental_feat"
+ "ures\030\002 \001(\0132/.google.api.PythonSettings.E"
- + "xperimentalFeatures\0325\n\024ExperimentalFeatu"
- + "res\022\035\n\025rest_async_io_enabled\030\001 \001(\010\"B\n\014No"
- + "deSettings\0222\n\006common\030\001 \001(\0132\".google.api."
- + "CommonLanguageSettings\"\252\003\n\016DotnetSetting"
- + "s\0222\n\006common\030\001 \001(\0132\".google.api.CommonLan"
- + "guageSettings\022I\n\020renamed_services\030\002 \003(\0132"
- + "/.google.api.DotnetSettings.RenamedServi"
- + "cesEntry\022K\n\021renamed_resources\030\003 \003(\01320.go"
- + "ogle.api.DotnetSettings.RenamedResources"
- + "Entry\022\031\n\021ignored_resources\030\004 \003(\t\022 \n\030forc"
- + "ed_namespace_aliases\030\005 \003(\t\022\036\n\026handwritte"
- + "n_signatures\030\006 \003(\t\0326\n\024RenamedServicesEnt"
- + "ry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0327\n\025Re"
- + "namedResourcesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005valu"
- + "e\030\002 \001(\t:\0028\001\"B\n\014RubySettings\0222\n\006common\030\001 "
- + "\001(\0132\".google.api.CommonLanguageSettings\""
- + "@\n\nGoSettings\0222\n\006common\030\001 \001(\0132\".google.a"
- + "pi.CommonLanguageSettings\"\317\002\n\016MethodSett"
- + "ings\022\020\n\010selector\030\001 \001(\t\022<\n\014long_running\030\002"
- + " \001(\0132&.google.api.MethodSettings.LongRun"
- + "ning\022\035\n\025auto_populated_fields\030\003 \003(\t\032\315\001\n\013"
- + "LongRunning\0225\n\022initial_poll_delay\030\001 \001(\0132"
- + "\031.google.protobuf.Duration\022\035\n\025poll_delay"
- + "_multiplier\030\002 \001(\002\0221\n\016max_poll_delay\030\003 \001("
- + "\0132\031.google.protobuf.Duration\0225\n\022total_po"
- + "ll_timeout\030\004 \001(\0132\031.google.protobuf.Durat"
- + "ion\"+\n\030SelectiveGapicGeneration\022\017\n\007metho"
- + "ds\030\001 \003(\t*\243\001\n\031ClientLibraryOrganization\022+"
- + "\n\'CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIE"
- + "D\020\000\022\t\n\005CLOUD\020\001\022\007\n\003ADS\020\002\022\n\n\006PHOTOS\020\003\022\017\n\013S"
- + "TREET_VIEW\020\004\022\014\n\010SHOPPING\020\005\022\007\n\003GEO\020\006\022\021\n\rG"
- + "ENERATIVE_AI\020\007*g\n\030ClientLibraryDestinati"
- + "on\022*\n&CLIENT_LIBRARY_DESTINATION_UNSPECI"
- + "FIED\020\000\022\n\n\006GITHUB\020\n\022\023\n\017PACKAGE_MANAGER\020\024:"
- + "9\n\020method_signature\022\036.google.protobuf.Me"
- + "thodOptions\030\233\010 \003(\t:6\n\014default_host\022\037.goo"
- + "gle.protobuf.ServiceOptions\030\231\010 \001(\t:6\n\014oa"
- + "uth_scopes\022\037.google.protobuf.ServiceOpti"
- + "ons\030\232\010 \001(\t:8\n\013api_version\022\037.google.proto"
- + "buf.ServiceOptions\030\301\272\253\372\001 \001(\tBi\n\016com.goog"
- + "le.apiB\013ClientProtoP\001ZAgoogle.golang.org"
- + "/genproto/googleapis/api/annotations;ann"
- + "otations\242\002\004GAPIb\006proto3"
+ + "xperimentalFeatures\032^\n\024ExperimentalFeatu"
+ + "res\022\035\n\025rest_async_io_enabled\030\001 \001(\010\022\'\n\037pr"
+ + "otobuf_pythonic_types_enabled\030\002 \001(\010\"B\n\014N"
+ + "odeSettings\0222\n\006common\030\001 \001(\0132\".google.api"
+ + ".CommonLanguageSettings\"\252\003\n\016DotnetSettin"
+ + "gs\0222\n\006common\030\001 \001(\0132\".google.api.CommonLa"
+ + "nguageSettings\022I\n\020renamed_services\030\002 \003(\013"
+ + "2/.google.api.DotnetSettings.RenamedServ"
+ + "icesEntry\022K\n\021renamed_resources\030\003 \003(\01320.g"
+ + "oogle.api.DotnetSettings.RenamedResource"
+ + "sEntry\022\031\n\021ignored_resources\030\004 \003(\t\022 \n\030for"
+ + "ced_namespace_aliases\030\005 \003(\t\022\036\n\026handwritt"
+ + "en_signatures\030\006 \003(\t\0326\n\024RenamedServicesEn"
+ + "try\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0327\n\025R"
+ + "enamedResourcesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005val"
+ + "ue\030\002 \001(\t:\0028\001\"B\n\014RubySettings\0222\n\006common\030\001"
+ + " \001(\0132\".google.api.CommonLanguageSettings"
+ + "\"@\n\nGoSettings\0222\n\006common\030\001 \001(\0132\".google."
+ + "api.CommonLanguageSettings\"\317\002\n\016MethodSet"
+ + "tings\022\020\n\010selector\030\001 \001(\t\022<\n\014long_running\030"
+ + "\002 \001(\0132&.google.api.MethodSettings.LongRu"
+ + "nning\022\035\n\025auto_populated_fields\030\003 \003(\t\032\315\001\n"
+ + "\013LongRunning\0225\n\022initial_poll_delay\030\001 \001(\013"
+ + "2\031.google.protobuf.Duration\022\035\n\025poll_dela"
+ + "y_multiplier\030\002 \001(\002\0221\n\016max_poll_delay\030\003 \001"
+ + "(\0132\031.google.protobuf.Duration\0225\n\022total_p"
+ + "oll_timeout\030\004 \001(\0132\031.google.protobuf.Dura"
+ + "tion\"+\n\030SelectiveGapicGeneration\022\017\n\007meth"
+ + "ods\030\001 \003(\t*\243\001\n\031ClientLibraryOrganization\022"
+ + "+\n\'CLIENT_LIBRARY_ORGANIZATION_UNSPECIFI"
+ + "ED\020\000\022\t\n\005CLOUD\020\001\022\007\n\003ADS\020\002\022\n\n\006PHOTOS\020\003\022\017\n\013"
+ + "STREET_VIEW\020\004\022\014\n\010SHOPPING\020\005\022\007\n\003GEO\020\006\022\021\n\r"
+ + "GENERATIVE_AI\020\007*g\n\030ClientLibraryDestinat"
+ + "ion\022*\n&CLIENT_LIBRARY_DESTINATION_UNSPEC"
+ + "IFIED\020\000\022\n\n\006GITHUB\020\n\022\023\n\017PACKAGE_MANAGER\020\024"
+ + ":9\n\020method_signature\022\036.google.protobuf.M"
+ + "ethodOptions\030\233\010 \003(\t:6\n\014default_host\022\037.go"
+ + "ogle.protobuf.ServiceOptions\030\231\010 \001(\t:6\n\014o"
+ + "auth_scopes\022\037.google.protobuf.ServiceOpt"
+ + "ions\030\232\010 \001(\t:8\n\013api_version\022\037.google.prot"
+ + "obuf.ServiceOptions\030\301\272\253\372\001 \001(\tBi\n\016com.goo"
+ + "gle.apiB\013ClientProtoP\001ZAgoogle.golang.or"
+ + "g/genproto/googleapis/api/annotations;an"
+ + "notations\242\002\004GAPIb\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -433,7 +434,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_google_api_PythonSettings_ExperimentalFeatures_descriptor,
new java.lang.String[] {
- "RestAsyncIoEnabled",
+ "RestAsyncIoEnabled", "ProtobufPythonicTypesEnabled",
});
internal_static_google_api_NodeSettings_descriptor = getDescriptor().getMessageTypes().get(7);
internal_static_google_api_NodeSettings_fieldAccessorTable =
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBodyProto.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBodyProto.java
index 97e6daa43f..c43d36461d 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBodyProto.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/HttpBodyProto.java
@@ -44,10 +44,10 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
"\n\031google/api/httpbody.proto\022\ngoogle.api\032"
+ "\031google/protobuf/any.proto\"X\n\010HttpBody\022\024"
+ "\n\014content_type\030\001 \001(\t\022\014\n\004data\030\002 \001(\014\022(\n\nex"
- + "tensions\030\003 \003(\0132\024.google.protobuf.AnyBh\n\016"
+ + "tensions\030\003 \003(\0132\024.google.protobuf.AnyBe\n\016"
+ "com.google.apiB\rHttpBodyProtoP\001Z;google."
+ "golang.org/genproto/googleapis/api/httpb"
- + "ody;httpbody\370\001\001\242\002\004GAPIb\006proto3"
+ + "ody;httpbody\242\002\004GAPIb\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/PythonSettings.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/PythonSettings.java
index bda54c7919..2f84ad752c 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/PythonSettings.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/PythonSettings.java
@@ -78,6 +78,22 @@ public interface ExperimentalFeaturesOrBuilder
* @return The restAsyncIoEnabled.
*/
boolean getRestAsyncIoEnabled();
+
+ /**
+ *
+ *
+ *
+ * Enables generation of protobuf code using new types that are more
+ * Pythonic which are included in `protobuf>=5.29.x`. This feature will be
+ * enabled by default 1 month after launching the feature in preview
+ * packages.
+ *
+ *
+ * bool protobuf_pythonic_types_enabled = 2;
+ *
+ * @return The protobufPythonicTypesEnabled.
+ */
+ boolean getProtobufPythonicTypesEnabled();
}
/**
*
@@ -144,6 +160,27 @@ public boolean getRestAsyncIoEnabled() {
return restAsyncIoEnabled_;
}
+ public static final int PROTOBUF_PYTHONIC_TYPES_ENABLED_FIELD_NUMBER = 2;
+ private boolean protobufPythonicTypesEnabled_ = false;
+ /**
+ *
+ *
+ *
+ * Enables generation of protobuf code using new types that are more
+ * Pythonic which are included in `protobuf>=5.29.x`. This feature will be
+ * enabled by default 1 month after launching the feature in preview
+ * packages.
+ *
+ *
+ * bool protobuf_pythonic_types_enabled = 2;
+ *
+ * @return The protobufPythonicTypesEnabled.
+ */
+ @java.lang.Override
+ public boolean getProtobufPythonicTypesEnabled() {
+ return protobufPythonicTypesEnabled_;
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -161,6 +198,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (restAsyncIoEnabled_ != false) {
output.writeBool(1, restAsyncIoEnabled_);
}
+ if (protobufPythonicTypesEnabled_ != false) {
+ output.writeBool(2, protobufPythonicTypesEnabled_);
+ }
getUnknownFields().writeTo(output);
}
@@ -173,6 +213,10 @@ public int getSerializedSize() {
if (restAsyncIoEnabled_ != false) {
size += com.google.protobuf.CodedOutputStream.computeBoolSize(1, restAsyncIoEnabled_);
}
+ if (protobufPythonicTypesEnabled_ != false) {
+ size +=
+ com.google.protobuf.CodedOutputStream.computeBoolSize(2, protobufPythonicTypesEnabled_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -190,6 +234,8 @@ public boolean equals(final java.lang.Object obj) {
(com.google.api.PythonSettings.ExperimentalFeatures) obj;
if (getRestAsyncIoEnabled() != other.getRestAsyncIoEnabled()) return false;
+ if (getProtobufPythonicTypesEnabled() != other.getProtobufPythonicTypesEnabled())
+ return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -203,6 +249,9 @@ public int hashCode() {
hash = (19 * hash) + getDescriptor().hashCode();
hash = (37 * hash) + REST_ASYNC_IO_ENABLED_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getRestAsyncIoEnabled());
+ hash = (37 * hash) + PROTOBUF_PYTHONIC_TYPES_ENABLED_FIELD_NUMBER;
+ hash =
+ (53 * hash) + com.google.protobuf.Internal.hashBoolean(getProtobufPythonicTypesEnabled());
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -347,6 +396,7 @@ public Builder clear() {
super.clear();
bitField0_ = 0;
restAsyncIoEnabled_ = false;
+ protobufPythonicTypesEnabled_ = false;
return this;
}
@@ -386,6 +436,9 @@ private void buildPartial0(com.google.api.PythonSettings.ExperimentalFeatures re
if (((from_bitField0_ & 0x00000001) != 0)) {
result.restAsyncIoEnabled_ = restAsyncIoEnabled_;
}
+ if (((from_bitField0_ & 0x00000002) != 0)) {
+ result.protobufPythonicTypesEnabled_ = protobufPythonicTypesEnabled_;
+ }
}
@java.lang.Override
@@ -439,6 +492,9 @@ public Builder mergeFrom(com.google.api.PythonSettings.ExperimentalFeatures othe
if (other.getRestAsyncIoEnabled() != false) {
setRestAsyncIoEnabled(other.getRestAsyncIoEnabled());
}
+ if (other.getProtobufPythonicTypesEnabled() != false) {
+ setProtobufPythonicTypesEnabled(other.getProtobufPythonicTypesEnabled());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -471,6 +527,12 @@ public Builder mergeFrom(
bitField0_ |= 0x00000001;
break;
} // case 8
+ case 16:
+ {
+ protobufPythonicTypesEnabled_ = input.readBool();
+ bitField0_ |= 0x00000002;
+ break;
+ } // case 16
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -552,6 +614,68 @@ public Builder clearRestAsyncIoEnabled() {
return this;
}
+ private boolean protobufPythonicTypesEnabled_;
+ /**
+ *
+ *
+ *
+ * Enables generation of protobuf code using new types that are more
+ * Pythonic which are included in `protobuf>=5.29.x`. This feature will be
+ * enabled by default 1 month after launching the feature in preview
+ * packages.
+ *
+ *
+ * bool protobuf_pythonic_types_enabled = 2;
+ *
+ * @return The protobufPythonicTypesEnabled.
+ */
+ @java.lang.Override
+ public boolean getProtobufPythonicTypesEnabled() {
+ return protobufPythonicTypesEnabled_;
+ }
+ /**
+ *
+ *
+ *
+ * Enables generation of protobuf code using new types that are more
+ * Pythonic which are included in `protobuf>=5.29.x`. This feature will be
+ * enabled by default 1 month after launching the feature in preview
+ * packages.
+ *
+ *
+ * bool protobuf_pythonic_types_enabled = 2;
+ *
+ * @param value The protobufPythonicTypesEnabled to set.
+ * @return This builder for chaining.
+ */
+ public Builder setProtobufPythonicTypesEnabled(boolean value) {
+
+ protobufPythonicTypesEnabled_ = value;
+ bitField0_ |= 0x00000002;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ *
+ * Enables generation of protobuf code using new types that are more
+ * Pythonic which are included in `protobuf>=5.29.x`. This feature will be
+ * enabled by default 1 month after launching the feature in preview
+ * packages.
+ *
+ *
+ * bool protobuf_pythonic_types_enabled = 2;
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearProtobufPythonicTypesEnabled() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ protobufPythonicTypesEnabled_ = false;
+ onChanged();
+ return this;
+ }
+
@java.lang.Override
public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java
index 6bbe88f418..3a7b46b386 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java
@@ -392,8 +392,8 @@ public com.google.protobuf.ByteString getMetricBytes() {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -423,8 +423,8 @@ public java.lang.String getUnit() {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -1909,8 +1909,8 @@ public Builder setMetricBytes(com.google.protobuf.ByteString value) {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -1939,8 +1939,8 @@ public java.lang.String getUnit() {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -1969,8 +1969,8 @@ public com.google.protobuf.ByteString getUnitBytes() {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -1998,8 +1998,8 @@ public Builder setUnit(java.lang.String value) {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -2023,8 +2023,8 @@ public Builder clearUnit() {
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
diff --git a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimitOrBuilder.java b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimitOrBuilder.java
index c74a69f111..f420d609db 100644
--- a/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimitOrBuilder.java
+++ b/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/QuotaLimitOrBuilder.java
@@ -214,8 +214,8 @@ public interface QuotaLimitOrBuilder
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
@@ -234,8 +234,8 @@ public interface QuotaLimitOrBuilder
*
*
* Specify the unit of the quota limit. It uses the same syntax as
- * [Metric.unit][]. The supported unit kinds are determined by the quota
- * backend system.
+ * [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ * unit kinds are determined by the quota backend system.
*
* Here are some examples:
* * "1/min/{project}" for quota per minute per project.
diff --git a/java-common-protos/proto-google-common-protos/src/main/proto/google/api/client.proto b/java-common-protos/proto-google-common-protos/src/main/proto/google/api/client.proto
index 7ba1db3da0..6003be5307 100644
--- a/java-common-protos/proto-google-common-protos/src/main/proto/google/api/client.proto
+++ b/java-common-protos/proto-google-common-protos/src/main/proto/google/api/client.proto
@@ -275,6 +275,12 @@ message PythonSettings {
// This feature will be enabled by default 1 month after launching the
// feature in preview packages.
bool rest_async_io_enabled = 1;
+
+ // Enables generation of protobuf code using new types that are more
+ // Pythonic which are included in `protobuf>=5.29.x`. This feature will be
+ // enabled by default 1 month after launching the feature in preview
+ // packages.
+ bool protobuf_pythonic_types_enabled = 2;
}
// Some settings.
diff --git a/java-common-protos/proto-google-common-protos/src/main/proto/google/api/httpbody.proto b/java-common-protos/proto-google-common-protos/src/main/proto/google/api/httpbody.proto
index 920612dc72..32952715de 100644
--- a/java-common-protos/proto-google-common-protos/src/main/proto/google/api/httpbody.proto
+++ b/java-common-protos/proto-google-common-protos/src/main/proto/google/api/httpbody.proto
@@ -18,7 +18,6 @@ package google.api;
import "google/protobuf/any.proto";
-option cc_enable_arenas = true;
option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody";
option java_multiple_files = true;
option java_outer_classname = "HttpBodyProto";
diff --git a/java-common-protos/proto-google-common-protos/src/main/proto/google/api/quota.proto b/java-common-protos/proto-google-common-protos/src/main/proto/google/api/quota.proto
index eb80cb6f02..25adb344cd 100644
--- a/java-common-protos/proto-google-common-protos/src/main/proto/google/api/quota.proto
+++ b/java-common-protos/proto-google-common-protos/src/main/proto/google/api/quota.proto
@@ -161,8 +161,8 @@ message QuotaLimit {
string metric = 8;
// Specify the unit of the quota limit. It uses the same syntax as
- // [Metric.unit][]. The supported unit kinds are determined by the quota
- // backend system.
+ // [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
+ // unit kinds are determined by the quota backend system.
//
// Here are some examples:
// * "1/min/{project}" for quota per minute per project.
From 18b1bb5425bef4dab6d356f0941f847a66bfe011 Mon Sep 17 00:00:00 2001
From: Mridula <66699525+mpeddada1@users.noreply.github.com>
Date: Thu, 14 Nov 2024 13:34:28 -0500
Subject: [PATCH 26/29] chore: replace graalvm cloud-devrel-kokoro-resources
with java-graalvm-ci-prod checks as required (#3375)
The GraalVM `cloud-devrel-kokoro-resources` checks are deprecated and
will be removed soon in favor of java-graalvm-ci-prod checks.
---
.github/sync-repo-settings.yaml | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index 32f4a9e84e..de3babb001 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -14,8 +14,12 @@ branchProtectionRules:
- build (17)
- cla/google
- compatibility
- - graalvm-presubmit-sdk-platform-java-a (cloud-devrel-kokoro-resources)
- - graalvm-presubmit-sdk-platform-java-b (cloud-devrel-kokoro-resources)
+ - graalvm-presubmit-sdk-platform-java-a (java-graalvm-ci-prod)
+ - graalvm-presubmit-sdk-platform-java-b (java-graalvm-ci-prod)
+ - graalvm-presubmit-sdk-platform-java-a-downstream-kms (java-graalvm-ci-prod)
+ - graalvm-presubmit-sdk-platform-java-b-downstream-kms (java-graalvm-ci-prod)
+ - graalvm-presubmit-sdk-platform-java-a-downstream-kmsinventory (java-graalvm-ci-prod)
+ - graalvm-presubmit-sdk-platform-java-b-downstream-kmsinventory (java-graalvm-ci-prod)
- library_generation
- library-generation-integration-tests
- library-generation-lint-python
From c624b8902fae5d451af759692ace86f64a2401bd Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 14 Nov 2024 19:34:46 +0100
Subject: [PATCH 27/29] build(deps): update dependency
com.google.cloud:google-cloud-shared-config to v1.12.0 (#3372)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.google.cloud:google-cloud-shared-config](https://redirect.github.com/googleapis/java-shared-config)
| `1.11.3` -> `1.12.0` |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.
---
### Release Notes
googleapis/java-shared-config
(com.google.cloud:google-cloud-shared-config)
###
[`v1.12.0`](https://redirect.github.com/googleapis/java-shared-config/blob/HEAD/CHANGELOG.md#1120-2024-11-13)
[Compare
Source](https://redirect.github.com/googleapis/java-shared-config/compare/v1.11.3...v1.12.0)
##### Features
- Maven profile for Airlock
([#928](https://redirect.github.com/googleapis/java-shared-config/issues/928))
([10da584](https://redirect.github.com/googleapis/java-shared-config/commit/10da5843f6c3fa50c3fff4a4fd01326a1cc68158))
- Publish graalvm images to new java-graalvm-ci-prod project
([#922](https://redirect.github.com/googleapis/java-shared-config/issues/922))
([69ccd0f](https://redirect.github.com/googleapis/java-shared-config/commit/69ccd0f0dce6d4b3b01ac067000007292d7fff95))
##### Dependencies
- Update actions/checkout digest to
[`11bd719`](https://redirect.github.com/googleapis/java-shared-config/commit/11bd719)
([#919](https://redirect.github.com/googleapis/java-shared-config/issues/919))
([eb0ae86](https://redirect.github.com/googleapis/java-shared-config/commit/eb0ae8622b330045efd76cf6d14f0a9b79071fd7))
- Update dependency com.puppycrawl.tools:checkstyle to v10.20.1
([#932](https://redirect.github.com/googleapis/java-shared-config/issues/932))
([ba72db5](https://redirect.github.com/googleapis/java-shared-config/commit/ba72db54f809e8a1dbed4f70736328e3f6bf06ee))
- Update dependency org.graalvm.sdk:graal-sdk to v24.1.1
([#923](https://redirect.github.com/googleapis/java-shared-config/issues/923))
([b22170a](https://redirect.github.com/googleapis/java-shared-config/commit/b22170a8fb8fddfb79927ab98cb2e299152cbc8e))
- Update dependency org.graalvm.sdk:nativeimage to v24.1.1
([#924](https://redirect.github.com/googleapis/java-shared-config/issues/924))
([fa97ca8](https://redirect.github.com/googleapis/java-shared-config/commit/fa97ca825159016aee31dbac7e9967a572b02a33))
- Update dependency org.junit.vintage:junit-vintage-engine to v5.11.3
([#917](https://redirect.github.com/googleapis/java-shared-config/issues/917))
([13766a3](https://redirect.github.com/googleapis/java-shared-config/commit/13766a3837c647398f2c8fea6a3b089287f07a25))
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/googleapis/sdk-platform-java).
---------
Co-authored-by: Mridula Peddada
---
.cloudbuild/graalvm/cloudbuild-test-a-downstream-kms.yaml | 2 +-
.../graalvm/cloudbuild-test-a-downstream-kmsinventory.yaml | 2 +-
.cloudbuild/graalvm/cloudbuild-test-a.yaml | 2 +-
.cloudbuild/graalvm/cloudbuild-test-b-downstream-kms.yaml | 2 +-
.../graalvm/cloudbuild-test-b-downstream-kmsinventory.yaml | 2 +-
.cloudbuild/graalvm/cloudbuild-test-b.yaml | 2 +-
.cloudbuild/graalvm/cloudbuild.yaml | 2 +-
.cloudbuild/graalvm/graalvm_a.Dockerfile | 2 +-
.cloudbuild/graalvm/graalvm_b.Dockerfile | 2 +-
gapic-generator-java-pom-parent/pom.xml | 2 +-
gax-java/gax-bom/pom.xml | 2 +-
java-shared-dependencies/first-party-dependencies/pom.xml | 2 +-
java-shared-dependencies/upper-bound-check/pom.xml | 2 +-
sdk-platform-java-config/pom.xml | 2 +-
showcase/pom.xml | 2 +-
15 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kms.yaml b/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kms.yaml
index c98834f70b..0eee4025d3 100644
--- a/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kms.yaml
+++ b/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kms.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.30.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY
diff --git a/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kmsinventory.yaml b/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kmsinventory.yaml
index 126eaa080c..d6d0671483 100644
--- a/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kmsinventory.yaml
+++ b/.cloudbuild/graalvm/cloudbuild-test-a-downstream-kmsinventory.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.30.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY
diff --git a/.cloudbuild/graalvm/cloudbuild-test-a.yaml b/.cloudbuild/graalvm/cloudbuild-test-a.yaml
index 89df4c6f53..eaf624d153 100644
--- a/.cloudbuild/graalvm/cloudbuild-test-a.yaml
+++ b/.cloudbuild/graalvm/cloudbuild-test-a.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.39.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY
diff --git a/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kms.yaml b/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kms.yaml
index a97495c32d..9e1625da88 100644
--- a/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kms.yaml
+++ b/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kms.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.30.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY
diff --git a/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kmsinventory.yaml b/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kmsinventory.yaml
index 94e516c8b7..c8945500b1 100644
--- a/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kmsinventory.yaml
+++ b/.cloudbuild/graalvm/cloudbuild-test-b-downstream-kmsinventory.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.30.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY
diff --git a/.cloudbuild/graalvm/cloudbuild-test-b.yaml b/.cloudbuild/graalvm/cloudbuild-test-b.yaml
index 211b91a9df..88291f8e9a 100644
--- a/.cloudbuild/graalvm/cloudbuild-test-b.yaml
+++ b/.cloudbuild/graalvm/cloudbuild-test-b.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.39.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY
diff --git a/.cloudbuild/graalvm/cloudbuild.yaml b/.cloudbuild/graalvm/cloudbuild.yaml
index e9c573815b..5b77cfa253 100644
--- a/.cloudbuild/graalvm/cloudbuild.yaml
+++ b/.cloudbuild/graalvm/cloudbuild.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_SHARED_DEPENDENCIES_VERSION: '3.39.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
- _JAVA_SHARED_CONFIG_VERSION: '1.11.3'
+ _JAVA_SHARED_CONFIG_VERSION: '1.12.0'
steps:
# GraalVM A build
- name: gcr.io/cloud-builders/docker
diff --git a/.cloudbuild/graalvm/graalvm_a.Dockerfile b/.cloudbuild/graalvm/graalvm_a.Dockerfile
index 40fa809aa8..ce8a048e43 100644
--- a/.cloudbuild/graalvm/graalvm_a.Dockerfile
+++ b/.cloudbuild/graalvm/graalvm_a.Dockerfile
@@ -15,5 +15,5 @@
ARG JAVA_SHARED_CONFIG_VERSION
-FROM gcr.io/cloud-devrel-public-resources/graalvm_a:$JAVA_SHARED_CONFIG_VERSION
+FROM us-docker.pkg.dev/java-graalvm-ci-prod/graalvm-integration-testing/graalvm_a:$JAVA_SHARED_CONFIG_VERSION
diff --git a/.cloudbuild/graalvm/graalvm_b.Dockerfile b/.cloudbuild/graalvm/graalvm_b.Dockerfile
index 8bd84e53ed..51611691b1 100644
--- a/.cloudbuild/graalvm/graalvm_b.Dockerfile
+++ b/.cloudbuild/graalvm/graalvm_b.Dockerfile
@@ -15,4 +15,4 @@
ARG JAVA_SHARED_CONFIG_VERSION
-FROM gcr.io/cloud-devrel-public-resources/graalvm_b:$JAVA_SHARED_CONFIG_VERSION
\ No newline at end of file
+FROM us-docker.pkg.dev/java-graalvm-ci-prod/graalvm-integration-testing/graalvm_b:$JAVA_SHARED_CONFIG_VERSION
\ No newline at end of file
diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml
index cbf713fe68..092f986006 100644
--- a/gapic-generator-java-pom-parent/pom.xml
+++ b/gapic-generator-java-pom-parent/pom.xml
@@ -15,7 +15,7 @@
com.google.cloud
google-cloud-shared-config
- 1.11.3
+ 1.12.0
diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml
index 671ef04c3a..f41a79b431 100644
--- a/gax-java/gax-bom/pom.xml
+++ b/gax-java/gax-bom/pom.xml
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-shared-config
- 1.11.3
+ 1.12.0
diff --git a/java-shared-dependencies/first-party-dependencies/pom.xml b/java-shared-dependencies/first-party-dependencies/pom.xml
index 166decace2..3d964aad90 100644
--- a/java-shared-dependencies/first-party-dependencies/pom.xml
+++ b/java-shared-dependencies/first-party-dependencies/pom.xml
@@ -15,7 +15,7 @@
com.google.cloud
google-cloud-shared-config
- 1.11.3
+ 1.12.0
diff --git a/java-shared-dependencies/upper-bound-check/pom.xml b/java-shared-dependencies/upper-bound-check/pom.xml
index 801d22eb12..f73e806cf8 100644
--- a/java-shared-dependencies/upper-bound-check/pom.xml
+++ b/java-shared-dependencies/upper-bound-check/pom.xml
@@ -16,7 +16,7 @@
com.google.cloud
google-cloud-shared-config
- 1.11.3
+ 1.12.0
diff --git a/sdk-platform-java-config/pom.xml b/sdk-platform-java-config/pom.xml
index 1bd948a324..c7ab4ff801 100644
--- a/sdk-platform-java-config/pom.xml
+++ b/sdk-platform-java-config/pom.xml
@@ -13,7 +13,7 @@
com.google.cloud
google-cloud-shared-config
- 1.11.3
+ 1.12.0
diff --git a/showcase/pom.xml b/showcase/pom.xml
index 6cbcdf92ab..0bbd8a425b 100644
--- a/showcase/pom.xml
+++ b/showcase/pom.xml
@@ -15,7 +15,7 @@
com.google.cloud
google-cloud-shared-config
- 1.11.3
+ 1.12.0
From f202c3b550936168b9876860853876aa6d51c6a1 Mon Sep 17 00:00:00 2001
From: Diego Marquez
Date: Thu, 14 Nov 2024 14:18:33 -0500
Subject: [PATCH 28/29] feat: introduce `java.time` to java-core (#3330)
## In this PR:
* Modify publicly exposed methods to offer a `java.time` alternative
(suffixed with `Duration`). These methods will now hold the actual
implementation, whereas the old signatures will encapsulate the new
ones. Example: `retryDelay(org.threeten.bp.Duration)` encapsulates
`retryDelayDuration(java.time.Duration)`
## Notes
### _CLIRR_
```
[ERROR] 7012: com.google.cloud.testing.BaseEmulatorHelper$EmulatorRunner: Method 'public int waitForDuration(java.time.Duration)' has been added to an interface
```
This new interface method was added. However, we ignore this change
alert because the method has a `default` implementation.
### Addressing a behavior change in `Timestamp`
#### Problem
When using java.time functions, parsing a datetime string with offset
produces a wrong time object (offset is not added to the effective epoch
seconds).
#### Context
Full context in
https://github.com/googleapis/sdk-platform-java/pull/3330/files#r1828424787
https://github.com/adoptium/jdk/commit/c6d209b505932b43d58502b119b86a6fa5b5338e
was introduced as a fix (in Java 9) meant for [this
issue](https://bugs.openjdk.org/browse/JDK-8066982).
In java 8, this means that the offset value is stored separately in a
variable that is not respected by the parsing functions before this fix.
The workaround is to use `appendZoneOrOffsetId()`, which stores the
offset value in the `zone` variable of a parsing context, which is
[respected as of java
8](https://github.com/adoptium/jdk8u/blob/31b88042fba46e87fba83e8bfd43ae0ecb5a9afd/jdk/src/share/classes/java/time/format/Parsed.java#L589-L591).
Additionally, under the consideration of this having unwanted side
effects, we expanded the test suite to test for more edge and normal
cases using an offset string. We also
[searched](https://bugs.openjdk.org/browse/JDK-8202948?jql=affectedVersion%20%3D%20%228%22%20AND%20text%20~%20%22offset%22)
the JDK's issue tracking database and found somewhat similar issues with
parsing and offsets but no workaround that addressed our specific
situation. This is also cause of no backports of the
[fix](https://github.com/adoptium/jdk/commit/c6d209b505932b43d58502b119b86a6fa5b5338e)
for Java 9 into Java 8.
#### Outcome
The behavior is kept the same as stated by our tests and downstream
checks
---
.../clirr-ignored-differences.xml | 6 ++
.../java/com/google/cloud/RetryOption.java | 39 +++++++---
.../java/com/google/cloud/ServiceOptions.java | 12 ++--
.../main/java/com/google/cloud/Timestamp.java | 30 +++++---
.../cloud/testing/BaseEmulatorHelper.java | 58 ++++++++++++---
.../com/google/cloud/RetryOptionTest.java | 45 ++++++++----
.../com/google/cloud/SerializationTest.java | 4 +-
.../java/com/google/cloud/TimestampTest.java | 72 +++++++++++++++++--
.../cloud/testing/BaseEmulatorHelperTest.java | 40 +++++++++--
9 files changed, 247 insertions(+), 59 deletions(-)
diff --git a/java-core/google-cloud-core/clirr-ignored-differences.xml b/java-core/google-cloud-core/clirr-ignored-differences.xml
index 0f7f80a7b4..6792bcb968 100644
--- a/java-core/google-cloud-core/clirr-ignored-differences.xml
+++ b/java-core/google-cloud-core/clirr-ignored-differences.xml
@@ -12,4 +12,10 @@
com/google/cloud/ReadChannel
long limit()
+
+
+ 7012
+ com/google/cloud/testing/BaseEmulatorHelper$EmulatorRunner
+ int waitForDuration(java.time.Duration)
+
diff --git a/java-core/google-cloud-core/src/main/java/com/google/cloud/RetryOption.java b/java-core/google-cloud-core/src/main/java/com/google/cloud/RetryOption.java
index a1069b48a2..f69b0d1c76 100644
--- a/java-core/google-cloud-core/src/main/java/com/google/cloud/RetryOption.java
+++ b/java-core/google-cloud-core/src/main/java/com/google/cloud/RetryOption.java
@@ -16,12 +16,13 @@
package com.google.cloud;
+import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.api.core.BetaApi;
+import com.google.api.core.ObsoleteApi;
import com.google.api.gax.retrying.RetrySettings;
import java.io.Serializable;
-import org.threeten.bp.Duration;
/**
* This class represents an options wrapper around the {@link RetrySettings} class and is an
@@ -51,13 +52,25 @@ private RetryOption(OptionType type, Object value) {
this.value = checkNotNull(value);
}
- /** See {@link RetrySettings#getTotalTimeout()}. */
- public static RetryOption totalTimeout(Duration totalTimeout) {
+ /** This method is obsolete. Use {@link #totalTimeoutDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use totalTimeouDuration() instead")
+ public static RetryOption totalTimeout(org.threeten.bp.Duration totalTimeout) {
+ return totalTimeoutDuration(toJavaTimeDuration(totalTimeout));
+ }
+
+ /** See {@link RetrySettings#getTotalTimeoutDuration()}. */
+ public static RetryOption totalTimeoutDuration(java.time.Duration totalTimeout) {
return new RetryOption(OptionType.TOTAL_TIMEOUT, totalTimeout);
}
- /** See {@link RetrySettings#getInitialRetryDelay()}. */
- public static RetryOption initialRetryDelay(Duration initialRetryDelay) {
+ /** This method is obsolete. Use {@link #initialRetryDelayDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use initialRetryDelayDuration() instead")
+ public static RetryOption initialRetryDelay(org.threeten.bp.Duration initialRetryDelay) {
+ return initialRetryDelayDuration(toJavaTimeDuration(initialRetryDelay));
+ }
+
+ /** See {@link RetrySettings#getInitialRetryDelayDuration()}. */
+ public static RetryOption initialRetryDelayDuration(java.time.Duration initialRetryDelay) {
return new RetryOption(OptionType.INITIAL_RETRY_DELAY, initialRetryDelay);
}
@@ -66,8 +79,14 @@ public static RetryOption retryDelayMultiplier(double retryDelayMultiplier) {
return new RetryOption(OptionType.RETRY_DELAY_MULTIPLIER, retryDelayMultiplier);
}
- /** See {@link RetrySettings#getMaxRetryDelay()}. */
- public static RetryOption maxRetryDelay(Duration maxRetryDelay) {
+ /** This method is obsolete. Use {@link #maxRetryDelayDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use maxRetryDelayDuration() instead")
+ public static RetryOption maxRetryDelay(org.threeten.bp.Duration maxRetryDelay) {
+ return maxRetryDelayDuration(toJavaTimeDuration(maxRetryDelay));
+ }
+
+ /** See {@link RetrySettings#getMaxRetryDelayDuration()}. */
+ public static RetryOption maxRetryDelayDuration(java.time.Duration maxRetryDelay) {
return new RetryOption(OptionType.MAX_RETRY_DELAY, maxRetryDelay);
}
@@ -124,16 +143,16 @@ public static RetrySettings mergeToSettings(RetrySettings settings, RetryOption.
for (RetryOption option : options) {
switch (option.type) {
case TOTAL_TIMEOUT:
- builder.setTotalTimeout((Duration) option.value);
+ builder.setTotalTimeoutDuration((java.time.Duration) option.value);
break;
case INITIAL_RETRY_DELAY:
- builder.setInitialRetryDelay((Duration) option.value);
+ builder.setInitialRetryDelayDuration((java.time.Duration) option.value);
break;
case RETRY_DELAY_MULTIPLIER:
builder.setRetryDelayMultiplier((Double) option.value);
break;
case MAX_RETRY_DELAY:
- builder.setMaxRetryDelay((Duration) option.value);
+ builder.setMaxRetryDelayDuration((java.time.Duration) option.value);
break;
case MAX_ATTEMPTS:
builder.setMaxAttempts((Integer) option.value);
diff --git a/java-core/google-cloud-core/src/main/java/com/google/cloud/ServiceOptions.java b/java-core/google-cloud-core/src/main/java/com/google/cloud/ServiceOptions.java
index 985fac4804..92aaa9d6a9 100644
--- a/java-core/google-cloud-core/src/main/java/com/google/cloud/ServiceOptions.java
+++ b/java-core/google-cloud-core/src/main/java/com/google/cloud/ServiceOptions.java
@@ -63,6 +63,7 @@
import java.io.Serializable;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
+import java.time.Duration;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
@@ -70,7 +71,6 @@
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.threeten.bp.Duration;
/**
* Abstract class representing service options.
@@ -787,13 +787,13 @@ public static RetrySettings getNoRetrySettings() {
private static RetrySettings.Builder getDefaultRetrySettingsBuilder() {
return RetrySettings.newBuilder()
.setMaxAttempts(6)
- .setInitialRetryDelay(Duration.ofMillis(1000L))
- .setMaxRetryDelay(Duration.ofMillis(32_000L))
+ .setInitialRetryDelayDuration(Duration.ofMillis(1000L))
+ .setMaxRetryDelayDuration(Duration.ofMillis(32_000L))
.setRetryDelayMultiplier(2.0)
- .setTotalTimeout(Duration.ofMillis(50_000L))
- .setInitialRpcTimeout(Duration.ofMillis(50_000L))
+ .setTotalTimeoutDuration(Duration.ofMillis(50_000L))
+ .setInitialRpcTimeoutDuration(Duration.ofMillis(50_000L))
.setRpcTimeoutMultiplier(1.0)
- .setMaxRpcTimeout(Duration.ofMillis(50_000L));
+ .setMaxRpcTimeoutDuration(Duration.ofMillis(50_000L));
}
protected abstract Set getScopes();
diff --git a/java-core/google-cloud-core/src/main/java/com/google/cloud/Timestamp.java b/java-core/google-cloud-core/src/main/java/com/google/cloud/Timestamp.java
index e0308c3836..d24cb2a37e 100644
--- a/java-core/google-cloud-core/src/main/java/com/google/cloud/Timestamp.java
+++ b/java-core/google-cloud-core/src/main/java/com/google/cloud/Timestamp.java
@@ -18,18 +18,19 @@
import static com.google.common.base.Preconditions.checkArgument;
+import com.google.api.core.ObsoleteApi;
import com.google.protobuf.util.Timestamps;
import java.io.Serializable;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.format.DateTimeParseException;
+import java.time.temporal.TemporalAccessor;
import java.util.Date;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
-import org.threeten.bp.Instant;
-import org.threeten.bp.LocalDateTime;
-import org.threeten.bp.ZoneOffset;
-import org.threeten.bp.format.DateTimeFormatter;
-import org.threeten.bp.format.DateTimeFormatterBuilder;
-import org.threeten.bp.format.DateTimeParseException;
-import org.threeten.bp.temporal.TemporalAccessor;
/**
* Represents a timestamp with nanosecond precision. Timestamps cover the range [0001-01-01,
@@ -54,7 +55,7 @@ public final class Timestamp implements Comparable, Serializable {
new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.optionalStart()
- .appendOffsetId()
+ .appendZoneOrOffsetId()
.optionalEnd()
.toFormatter()
.withZone(ZoneOffset.UTC);
@@ -189,6 +190,17 @@ public com.google.protobuf.Timestamp toProto() {
return com.google.protobuf.Timestamp.newBuilder().setSeconds(seconds).setNanos(nanos).build();
}
+ /** This method is obsolete. Use {@link #parseTimestampDuration(String)} instead */
+ @ObsoleteApi("Use parseTimestampDuration(String) instead")
+ public static Timestamp parseTimestamp(String timestamp) {
+ try {
+ return parseTimestampDuration(timestamp);
+ } catch (DateTimeParseException ex) {
+ throw new org.threeten.bp.format.DateTimeParseException(
+ ex.getMessage(), ex.getParsedString(), ex.getErrorIndex());
+ }
+ }
+
/**
* Creates a Timestamp instance from the given string. Input string should be in the RFC 3339
* format, like '2020-12-01T10:15:30.000Z' or with the timezone offset, such as
@@ -198,7 +210,7 @@ public com.google.protobuf.Timestamp toProto() {
* @return created Timestamp
* @throws DateTimeParseException if unable to parse
*/
- public static Timestamp parseTimestamp(String timestamp) {
+ public static Timestamp parseTimestampDuration(String timestamp) {
TemporalAccessor temporalAccessor = timestampParser.parse(timestamp);
Instant instant = Instant.from(temporalAccessor);
return ofTimeSecondsAndNanos(instant.getEpochSecond(), instant.getNano());
diff --git a/java-core/google-cloud-core/src/main/java/com/google/cloud/testing/BaseEmulatorHelper.java b/java-core/google-cloud-core/src/main/java/com/google/cloud/testing/BaseEmulatorHelper.java
index 9679c6299c..93f7ea0f59 100644
--- a/java-core/google-cloud-core/src/main/java/com/google/cloud/testing/BaseEmulatorHelper.java
+++ b/java-core/google-cloud-core/src/main/java/com/google/cloud/testing/BaseEmulatorHelper.java
@@ -16,8 +16,12 @@
package com.google.cloud.testing;
+import static com.google.api.gax.util.TimeConversionUtils.toJavaTimeDuration;
+import static com.google.api.gax.util.TimeConversionUtils.toThreetenDuration;
+
import com.google.api.core.CurrentMillisClock;
import com.google.api.core.InternalApi;
+import com.google.api.core.ObsoleteApi;
import com.google.cloud.ExceptionHandler;
import com.google.cloud.RetryHelper;
import com.google.cloud.ServiceOptions;
@@ -56,7 +60,6 @@
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
-import org.threeten.bp.Duration;
/** Utility class to start and stop a local service which is used by unit testing. */
@InternalApi
@@ -112,14 +115,21 @@ protected final void startProcess(String blockUntilOutput)
}
}
+ /** This method is obsolete. Use {@link #waitForProcessDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use waitForProcessDuration(java.time.Duration) instead")
+ protected final int waitForProcess(org.threeten.bp.Duration timeout)
+ throws IOException, InterruptedException, TimeoutException {
+ return waitForProcessDuration(toJavaTimeDuration(timeout));
+ }
+
/**
* Waits for the local service's subprocess to terminate, and stop any possible thread listening
* for its output.
*/
- protected final int waitForProcess(Duration timeout)
+ protected final int waitForProcessDuration(java.time.Duration timeout)
throws IOException, InterruptedException, TimeoutException {
if (activeRunner != null) {
- int exitCode = activeRunner.waitFor(timeout);
+ int exitCode = activeRunner.waitForDuration(timeout);
activeRunner = null;
return exitCode;
}
@@ -130,7 +140,7 @@ protected final int waitForProcess(Duration timeout)
return 0;
}
- private static int waitForProcess(final Process process, Duration timeout)
+ private static int waitForProcess(final Process process, java.time.Duration timeout)
throws InterruptedException, TimeoutException {
if (process == null) {
return 0;
@@ -180,10 +190,17 @@ public String getProjectId() {
/** Starts the local emulator. */
public abstract void start() throws IOException, InterruptedException;
- /** Stops the local emulator. */
- public abstract void stop(Duration timeout)
+ /** This method is obsolete. Use {@link #stopDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use stopDuration() instead")
+ public abstract void stop(org.threeten.bp.Duration timeout)
throws IOException, InterruptedException, TimeoutException;
+ /** Stops the local emulator. */
+ public void stopDuration(java.time.Duration timeout)
+ throws IOException, InterruptedException, TimeoutException {
+ stop(toThreetenDuration(timeout));
+ }
+
/** Resets the internal state of the emulator. */
public abstract void reset() throws IOException;
@@ -226,8 +243,15 @@ protected interface EmulatorRunner {
/** Starts the emulator associated to this runner. */
void start() throws IOException;
+ /** This method is obsolete. Use {@link #waitForDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use waitForDuration() instead")
+ int waitFor(org.threeten.bp.Duration timeout) throws InterruptedException, TimeoutException;
+
/** Wait for the emulator associated to this runner to terminate, returning the exit status. */
- int waitFor(Duration timeout) throws InterruptedException, TimeoutException;
+ default int waitForDuration(java.time.Duration timeout)
+ throws InterruptedException, TimeoutException {
+ return waitFor(toThreetenDuration(timeout));
+ }
/** Returns the process associated to the emulator, if any. */
Process getProcess();
@@ -263,9 +287,17 @@ public void start() throws IOException {
log.fine("Starting emulator via Google Cloud SDK");
process = CommandWrapper.create().setCommand(commandText).setRedirectErrorStream().start();
}
+ /** This method is obsolete. Use {@link #waitForDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use waitForDuration() instead")
+ @Override
+ public int waitFor(org.threeten.bp.Duration timeout)
+ throws InterruptedException, TimeoutException {
+ return waitForDuration(toJavaTimeDuration(timeout));
+ }
@Override
- public int waitFor(Duration timeout) throws InterruptedException, TimeoutException {
+ public int waitForDuration(java.time.Duration timeout)
+ throws InterruptedException, TimeoutException {
return waitForProcess(process, timeout);
}
@@ -374,8 +406,16 @@ public Path call() throws IOException {
.start();
}
+ /** This method is obsolete. Use {@link #waitForDuration(java.time.Duration)} instead */
+ @ObsoleteApi("Use waitForDuration() instead")
@Override
- public int waitFor(Duration timeout) throws InterruptedException, TimeoutException {
+ public int waitFor(org.threeten.bp.Duration timeout)
+ throws InterruptedException, TimeoutException {
+ return waitForDuration(toJavaTimeDuration(timeout));
+ }
+
+ public int waitForDuration(java.time.Duration timeout)
+ throws InterruptedException, TimeoutException {
return waitForProcess(process, timeout);
}
diff --git a/java-core/google-cloud-core/src/test/java/com/google/cloud/RetryOptionTest.java b/java-core/google-cloud-core/src/test/java/com/google/cloud/RetryOptionTest.java
index a458d31f67..192cc21f5f 100644
--- a/java-core/google-cloud-core/src/test/java/com/google/cloud/RetryOptionTest.java
+++ b/java-core/google-cloud-core/src/test/java/com/google/cloud/RetryOptionTest.java
@@ -20,27 +20,30 @@
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import com.google.api.gax.retrying.RetrySettings;
+import java.time.Duration;
import org.junit.jupiter.api.Test;
-import org.threeten.bp.Duration;
class RetryOptionTest {
+ private static final long TOTAL_TIMEOUT_MILLIS = 420l;
+ private static final long INITIAL_RETRY_DELAY_MILLIS = 42l;
+ private static final long MAX_RETRY_DELAY_MILLIS = 100l;
private static final RetryOption TOTAL_TIMEOUT =
- RetryOption.totalTimeout(Duration.ofMillis(420L));
+ RetryOption.totalTimeoutDuration(Duration.ofMillis(TOTAL_TIMEOUT_MILLIS));
private static final RetryOption INITIAL_RETRY_DELAY =
- RetryOption.initialRetryDelay(Duration.ofMillis(42L));
+ RetryOption.initialRetryDelayDuration(Duration.ofMillis(INITIAL_RETRY_DELAY_MILLIS));
private static final RetryOption RETRY_DELAY_MULTIPLIER = RetryOption.retryDelayMultiplier(1.5);
private static final RetryOption MAX_RETRY_DELAY =
- RetryOption.maxRetryDelay(Duration.ofMillis(100));
+ RetryOption.maxRetryDelayDuration(Duration.ofMillis(MAX_RETRY_DELAY_MILLIS));
private static final RetryOption MAX_ATTEMPTS = RetryOption.maxAttempts(100);
private static final RetryOption JITTERED = RetryOption.jittered(false);
private static final RetrySettings retrySettings =
RetrySettings.newBuilder()
- .setTotalTimeout(Duration.ofMillis(420L))
- .setInitialRetryDelay(Duration.ofMillis(42L))
+ .setTotalTimeoutDuration(Duration.ofMillis(420L))
+ .setInitialRetryDelayDuration(Duration.ofMillis(42L))
.setRetryDelayMultiplier(1.5)
- .setMaxRetryDelay(Duration.ofMillis(100))
+ .setMaxRetryDelayDuration(Duration.ofMillis(100))
.setMaxAttempts(100)
.setJittered(false)
.build();
@@ -61,10 +64,10 @@ void testEqualsAndHashCode() {
assertNotEquals(MAX_ATTEMPTS, MAX_RETRY_DELAY);
assertNotEquals(JITTERED, MAX_ATTEMPTS);
- RetryOption totalTimeout = RetryOption.totalTimeout(Duration.ofMillis(420L));
- RetryOption initialRetryDelay = RetryOption.initialRetryDelay(Duration.ofMillis(42L));
+ RetryOption totalTimeout = RetryOption.totalTimeoutDuration(Duration.ofMillis(420L));
+ RetryOption initialRetryDelay = RetryOption.initialRetryDelayDuration(Duration.ofMillis(42L));
RetryOption retryDelayMultiplier = RetryOption.retryDelayMultiplier(1.5);
- RetryOption maxRetryDelay = RetryOption.maxRetryDelay(Duration.ofMillis(100));
+ RetryOption maxRetryDelay = RetryOption.maxRetryDelayDuration(Duration.ofMillis(100));
RetryOption maxAttempts = RetryOption.maxAttempts(100);
RetryOption jittered = RetryOption.jittered(false);
@@ -101,17 +104,17 @@ void testMergeToSettings() {
assertEquals(retrySettings, mergedRetrySettings);
defRetrySettings =
- defRetrySettings.toBuilder().setTotalTimeout(Duration.ofMillis(420L)).build();
+ defRetrySettings.toBuilder().setTotalTimeoutDuration(Duration.ofMillis(420L)).build();
mergedRetrySettings = RetryOption.mergeToSettings(defRetrySettings, TOTAL_TIMEOUT);
assertEquals(defRetrySettings, mergedRetrySettings);
defRetrySettings =
- defRetrySettings.toBuilder().setMaxRetryDelay(Duration.ofMillis(100)).build();
+ defRetrySettings.toBuilder().setMaxRetryDelayDuration(Duration.ofMillis(100)).build();
mergedRetrySettings = RetryOption.mergeToSettings(defRetrySettings, MAX_RETRY_DELAY);
assertEquals(defRetrySettings, mergedRetrySettings);
defRetrySettings =
- defRetrySettings.toBuilder().setInitialRetryDelay(Duration.ofMillis(42L)).build();
+ defRetrySettings.toBuilder().setInitialRetryDelayDuration(Duration.ofMillis(42L)).build();
mergedRetrySettings = RetryOption.mergeToSettings(defRetrySettings, INITIAL_RETRY_DELAY);
assertEquals(defRetrySettings, mergedRetrySettings);
@@ -127,4 +130,20 @@ void testMergeToSettings() {
mergedRetrySettings = RetryOption.mergeToSettings(defRetrySettings, JITTERED);
assertEquals(defRetrySettings, mergedRetrySettings);
}
+
+ @Test
+ public void threetenMethods_producesEquivalentJavaTimeRetryOptions() {
+
+ final RetryOption totalTimeoutThreeten =
+ RetryOption.totalTimeout(org.threeten.bp.Duration.ofMillis(TOTAL_TIMEOUT_MILLIS));
+ final RetryOption initialRetryDelayThreeten =
+ RetryOption.initialRetryDelay(
+ org.threeten.bp.Duration.ofMillis(INITIAL_RETRY_DELAY_MILLIS));
+ final RetryOption maxRetryDelayThreeten =
+ RetryOption.maxRetryDelay(org.threeten.bp.Duration.ofMillis(MAX_RETRY_DELAY_MILLIS));
+
+ assertEquals(TOTAL_TIMEOUT, totalTimeoutThreeten);
+ assertEquals(INITIAL_RETRY_DELAY, initialRetryDelayThreeten);
+ assertEquals(MAX_RETRY_DELAY, maxRetryDelayThreeten);
+ }
}
diff --git a/java-core/google-cloud-core/src/test/java/com/google/cloud/SerializationTest.java b/java-core/google-cloud-core/src/test/java/com/google/cloud/SerializationTest.java
index 6c35c665b5..f591578f11 100644
--- a/java-core/google-cloud-core/src/test/java/com/google/cloud/SerializationTest.java
+++ b/java-core/google-cloud-core/src/test/java/com/google/cloud/SerializationTest.java
@@ -23,7 +23,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.io.Serializable;
-import org.threeten.bp.Duration;
+import java.time.Duration;
public class SerializationTest extends BaseSerializationTest {
@@ -37,7 +37,7 @@ public class SerializationTest extends BaseSerializationTest {
private static final Role SOME_ROLE = Role.viewer();
private static final Policy SOME_IAM_POLICY = Policy.newBuilder().build();
private static final RetryOption CHECKING_PERIOD =
- RetryOption.initialRetryDelay(Duration.ofSeconds(42));
+ RetryOption.initialRetryDelayDuration(Duration.ofSeconds(42));
private static final LabelDescriptor LABEL_DESCRIPTOR =
new LabelDescriptor("project_id", ValueType.STRING, "The project id");
private static final MonitoredResourceDescriptor MONITORED_RESOURCE_DESCRIPTOR =
diff --git a/java-core/google-cloud-core/src/test/java/com/google/cloud/TimestampTest.java b/java-core/google-cloud-core/src/test/java/com/google/cloud/TimestampTest.java
index ba2ad5b701..6d6340b417 100644
--- a/java-core/google-cloud-core/src/test/java/com/google/cloud/TimestampTest.java
+++ b/java-core/google-cloud-core/src/test/java/com/google/cloud/TimestampTest.java
@@ -22,6 +22,7 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.common.testing.EqualsTester;
+import java.time.format.DateTimeParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -237,14 +238,67 @@ void parseTimestampWithoutTimeZoneOffset() {
@Test
void parseTimestampWithTimeZoneOffset() {
- assertThat(Timestamp.parseTimestamp("0001-01-01T00:00:00-00:00"))
+ // Max values
+ assertThat(Timestamp.parseTimestampDuration("0001-01-01T00:00:00-00:00"))
.isEqualTo(Timestamp.MIN_VALUE);
- assertThat(Timestamp.parseTimestamp("9999-12-31T23:59:59.999999999-00:00"))
+ assertThat(Timestamp.parseTimestampDuration("9999-12-31T23:59:59.999999999-00:00"))
.isEqualTo(Timestamp.MAX_VALUE);
- assertThat(Timestamp.parseTimestamp("2020-12-06T19:21:12.123+05:30"))
+ // Extreme values (close to min/max)
+ assertThat(Timestamp.parseTimestampDuration("0001-01-01T00:00:00.000000001Z"))
+ .isEqualTo(Timestamp.ofTimeSecondsAndNanos(Timestamp.MIN_VALUE.getSeconds(), 1));
+ assertThat(Timestamp.parseTimestampDuration("9999-12-31T23:59:59.999999998Z"))
+ .isEqualTo(Timestamp.ofTimeSecondsAndNanos(Timestamp.MAX_VALUE.getSeconds(), 999999998));
+ // Common use cases
+ assertThat(Timestamp.parseTimestampDuration("2020-07-10T14:03:00.123-07:00"))
+ .isEqualTo(Timestamp.ofTimeSecondsAndNanos(1594414980, 123000000));
+ assertThat(Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123+05:30"))
.isEqualTo(Timestamp.ofTimeSecondsAndNanos(1607262672, 123000000));
- assertThat(Timestamp.parseTimestamp("2020-07-10T14:03:00-07:00"))
+ // We also confirm that parsing a timestamp with nano precision will behave the same as the
+ // threeten counterpart
+ assertThat(Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123+05:30"))
+ .isEqualTo(Timestamp.parseTimestamp("2020-12-06T19:21:12.123+05:30"));
+ // Timestamps with fractional seconds at nanosecond level
+ assertThat(Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123456789+05:30"))
+ .isEqualTo(Timestamp.ofTimeSecondsAndNanos(1607262672, 123456789));
+ // Fractional seconds beyond nanos should throw an exception
+ assertThrows(
+ DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123456789321+05:30"));
+ // Missing components (should throw exceptions)
+ assertThrows(
+ DateTimeParseException.class, () -> Timestamp.parseTimestampDuration("2020-12-06"));
+ // Whitespace should not be supported
+ assertThrows(
+ DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration(" 2020-12-06T19:21:12.123+05:30 "));
+ // It should be case-insensitive
+ assertThat(Timestamp.parseTimestampDuration("2020-07-10t14:03:00-07:00"))
.isEqualTo(Timestamp.ofTimeSecondsAndNanos(1594414980, 0));
+ // Invalid time zone offsets
+ assertThrows(
+ DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123+25:00"));
+ assertThrows(
+ DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123-25:00"));
+ // Int values for SecondOfMinute should be between 0 and 59
+ assertThrows(
+ DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration("2016-12-31T23:59:60Z"));
+ }
+
+ @Test
+ void parseTimestampWithZoneString() {
+ // Valid RFC 3339 timestamps with time zone names
+ assertThat(Timestamp.parseTimestampDuration("2020-12-06T08:51:12.123America/Toronto"))
+ .isEqualTo(Timestamp.ofTimeSecondsAndNanos(1607262672, 123000000));
+ assertThat(Timestamp.parseTimestampDuration("2023-04-10T22:42:10.123456789Europe/London"))
+ .isEqualTo(Timestamp.ofTimeSecondsAndNanos(1681162930, 123456789));
+
+ // Invalid time zone names
+ assertThrows(
+ DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration("2020-12-06T19:21:12.123Invalid/TimeZone"));
}
@Test
@@ -281,4 +335,14 @@ void comparable() {
void serialization() {
reserializeAndAssert(Timestamp.parseTimestamp("9999-12-31T23:59:59.999999999Z"));
}
+
+ @Test
+ void parseInvalidTimestampThreetenThrowsThreetenException() {
+ assertThrows(
+ org.threeten.bp.format.DateTimeParseException.class,
+ () -> Timestamp.parseTimestamp("00x1-01-01T00:00:00"));
+ assertThrows(
+ java.time.format.DateTimeParseException.class,
+ () -> Timestamp.parseTimestampDuration("00x1-01-01T00:00:00"));
+ }
}
diff --git a/java-core/google-cloud-core/src/test/java/com/google/cloud/testing/BaseEmulatorHelperTest.java b/java-core/google-cloud-core/src/test/java/com/google/cloud/testing/BaseEmulatorHelperTest.java
index 79b58a83c9..bfc2666216 100644
--- a/java-core/google-cloud-core/src/test/java/com/google/cloud/testing/BaseEmulatorHelperTest.java
+++ b/java-core/google-cloud-core/src/test/java/com/google/cloud/testing/BaseEmulatorHelperTest.java
@@ -28,12 +28,12 @@
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;
+import java.time.Duration;
import java.util.List;
import java.util.concurrent.TimeoutException;
import java.util.logging.Logger;
import org.easymock.EasyMock;
import org.junit.jupiter.api.Test;
-import org.threeten.bp.Duration;
class BaseEmulatorHelperTest {
@@ -71,10 +71,18 @@ public void start() throws IOException, InterruptedException {
}
@Override
- public void stop(Duration timeout) throws IOException, InterruptedException, TimeoutException {
+ public void stop(org.threeten.bp.Duration timeout)
+ throws IOException, InterruptedException, TimeoutException {
+ // we call the threeten method directly to confirm behavior
waitForProcess(timeout);
}
+ @Override
+ public void stopDuration(Duration timeout)
+ throws IOException, InterruptedException, TimeoutException {
+ super.stopDuration(timeout);
+ }
+
@Override
public void reset() throws IOException {
// do nothing
@@ -91,13 +99,33 @@ void testEmulatorHelper() throws IOException, InterruptedException, TimeoutExcep
emulatorRunner.start();
EasyMock.expectLastCall();
EasyMock.expect(emulatorRunner.getProcess()).andReturn(process);
- emulatorRunner.waitFor(Duration.ofMinutes(1));
+ emulatorRunner.waitForDuration(Duration.ofMinutes(1));
+ EasyMock.expectLastCall().andReturn(0);
+ EasyMock.replay(process, emulatorRunner);
+ TestEmulatorHelper helper =
+ new TestEmulatorHelper(ImmutableList.of(emulatorRunner), BLOCK_UNTIL);
+ helper.start();
+ helper.stopDuration(Duration.ofMinutes(1));
+ EasyMock.verify();
+ }
+
+ @Test
+ void testEmulatorHelperThreeten() throws IOException, InterruptedException, TimeoutException {
+ Process process = EasyMock.createStrictMock(Process.class);
+ InputStream stream = new ByteArrayInputStream(BLOCK_UNTIL.getBytes(Charsets.UTF_8));
+ EmulatorRunner emulatorRunner = EasyMock.createStrictMock(EmulatorRunner.class);
+ EasyMock.expect(process.getInputStream()).andReturn(stream);
+ EasyMock.expect(emulatorRunner.isAvailable()).andReturn(true);
+ emulatorRunner.start();
+ EasyMock.expectLastCall();
+ EasyMock.expect(emulatorRunner.getProcess()).andReturn(process);
+ emulatorRunner.waitForDuration(java.time.Duration.ofMinutes(1));
EasyMock.expectLastCall().andReturn(0);
EasyMock.replay(process, emulatorRunner);
TestEmulatorHelper helper =
new TestEmulatorHelper(ImmutableList.of(emulatorRunner), BLOCK_UNTIL);
helper.start();
- helper.stop(Duration.ofMinutes(1));
+ helper.stop(org.threeten.bp.Duration.ofMinutes(1));
EasyMock.verify();
}
@@ -157,13 +185,13 @@ void testEmulatorHelperMultipleRunners()
secondRunner.start();
EasyMock.expectLastCall();
EasyMock.expect(secondRunner.getProcess()).andReturn(process);
- secondRunner.waitFor(Duration.ofMinutes(1));
+ secondRunner.waitForDuration(Duration.ofMinutes(1));
EasyMock.expectLastCall().andReturn(0);
EasyMock.replay(process, secondRunner);
TestEmulatorHelper helper =
new TestEmulatorHelper(ImmutableList.of(firstRunner, secondRunner), BLOCK_UNTIL);
helper.start();
- helper.stop(Duration.ofMinutes(1));
+ helper.stopDuration(Duration.ofMinutes(1));
EasyMock.verify();
}
From 137dc4b898912cbe8725bc8057281cec55f8c15e Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 14 Nov 2024 14:52:23 -0500
Subject: [PATCH 29/29] chore(main): release 2.50.0 (#3327)
:robot: I have created a release *beep* *boop*
---
2.50.0
##
[2.50.0](https://github.com/googleapis/sdk-platform-java/compare/v2.49.0...v2.50.0)
(2024-11-14)
### Features
* Add experimental S2A integration in client libraries grpc transport
([#3326](https://github.com/googleapis/sdk-platform-java/issues/3326))
([1138ca6](https://github.com/googleapis/sdk-platform-java/commit/1138ca682cd47d6164ceaa47803bfe2f68b1bc14))
* enable selective generation based on service config include list
([#3323](https://github.com/googleapis/sdk-platform-java/issues/3323))
([0cddadb](https://github.com/googleapis/sdk-platform-java/commit/0cddadb8ad3eddfffa356a479964d8a720937503))
* introduce `java.time` to java-core
([#3330](https://github.com/googleapis/sdk-platform-java/issues/3330))
([f202c3b](https://github.com/googleapis/sdk-platform-java/commit/f202c3b550936168b9876860853876aa6d51c6a1))
* Update Gapic-Generator to generate libraries using `java.time` methods
([#3321](https://github.com/googleapis/sdk-platform-java/issues/3321))
([b21c9a4](https://github.com/googleapis/sdk-platform-java/commit/b21c9a42121c22a1ab229d2d485265c271305110))
### Bug Fixes
* Fix flaky test
ScheduledRetryingExecutorTest.testCancelOuterFutureAfterStart
([#3335](https://github.com/googleapis/sdk-platform-java/issues/3335))
([e73740d](https://github.com/googleapis/sdk-platform-java/commit/e73740dbdb21d7c28908554fe3725504dc8ce84b))
* httpjson callables to trace attempts (started, failed)
([#3300](https://github.com/googleapis/sdk-platform-java/issues/3300))
([15a64ee](https://github.com/googleapis/sdk-platform-java/commit/15a64ee2e63165e50fd07b2b3a40f0d2ef2edfe2))
* instantiate GaxProperties at build time to ensure we get the protobuf
version
([#3365](https://github.com/googleapis/sdk-platform-java/issues/3365))
([bb2a3be](https://github.com/googleapis/sdk-platform-java/commit/bb2a3be87291ae718ac0e8538025a0867a6b6ff6))
* protobuf version not always getting set in headers
([#3322](https://github.com/googleapis/sdk-platform-java/issues/3322))
([7f6e470](https://github.com/googleapis/sdk-platform-java/commit/7f6e470fea1673a5cf50fe3b49263615a172afde))
* use BuildKit instead of legacy builder to build the Hermetic Build
images
([#3338](https://github.com/googleapis/sdk-platform-java/issues/3338))
([222fb45](https://github.com/googleapis/sdk-platform-java/commit/222fb452e00bd195ad51389ea308993a7e1bc956))
### Dependencies
* update google auth library dependencies to v1.30.0
([#3367](https://github.com/googleapis/sdk-platform-java/issues/3367))
([a31c682](https://github.com/googleapis/sdk-platform-java/commit/a31c68232584bf90bc00ace8310adeab8fa26add))
* update grpc dependencies to v1.68.1
([#3240](https://github.com/googleapis/sdk-platform-java/issues/3240))
([c8e3941](https://github.com/googleapis/sdk-platform-java/commit/c8e3941ef6f5bd1236f5ceedfd488e5113928471))
### Documentation
* fix list num
([#3356](https://github.com/googleapis/sdk-platform-java/issues/3356))
([b7d6296](https://github.com/googleapis/sdk-platform-java/commit/b7d62968cd837a7addc06da8b9bc2131c36c7fbc))
* **hermetic-build:** indicate usage of Docker Buildkit in development
guide
([#3337](https://github.com/googleapis/sdk-platform-java/issues/3337))
([01e742d](https://github.com/googleapis/sdk-platform-java/commit/01e742de49e151efbd903808a859f595f99bc8de))
* modify hermetic build docs
([#3331](https://github.com/googleapis/sdk-platform-java/issues/3331))
([25023af](https://github.com/googleapis/sdk-platform-java/commit/25023afad8f483a3eae8846c4bc1fbe2c7a260c5))
---
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.yaml | 2 +-
...oudbuild-library-generation-push-prod.yaml | 2 +-
.../cloudbuild-library-generation-push.yaml | 2 +-
.../library_generation.Dockerfile | 2 +-
.release-please-manifest.json | 2 +-
CHANGELOG.md | 32 +++++++++++++++++++
WORKSPACE | 2 +-
api-common-java/pom.xml | 4 +--
coverage-report/pom.xml | 8 ++---
gapic-generator-java-bom/pom.xml | 26 +++++++--------
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 ++++----
.../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/pom.xml | 22 ++++++-------
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-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 +--
sdk-platform-java-config/pom.xml | 4 +--
showcase/pom.xml | 2 +-
versions.txt | 32 +++++++++----------
45 files changed, 176 insertions(+), 144 deletions(-)
diff --git a/.cloudbuild/graalvm/cloudbuild-test-a.yaml b/.cloudbuild/graalvm/cloudbuild-test-a.yaml
index eaf624d153..a101db5564 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.39.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
+ _SHARED_DEPENDENCIES_VERSION: '3.40.0' # {x-version-update:google-cloud-shared-dependencies:current}
_JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
diff --git a/.cloudbuild/graalvm/cloudbuild-test-b.yaml b/.cloudbuild/graalvm/cloudbuild-test-b.yaml
index 88291f8e9a..bd0ad1ff85 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.39.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
+ _SHARED_DEPENDENCIES_VERSION: '3.40.0' # {x-version-update:google-cloud-shared-dependencies:current}
_JAVA_SHARED_CONFIG_VERSION: '1.12.0'
options:
machineType: 'E2_HIGHCPU_8'
diff --git a/.cloudbuild/graalvm/cloudbuild.yaml b/.cloudbuild/graalvm/cloudbuild.yaml
index 5b77cfa253..8904bf1318 100644
--- a/.cloudbuild/graalvm/cloudbuild.yaml
+++ b/.cloudbuild/graalvm/cloudbuild.yaml
@@ -14,7 +14,7 @@
timeout: 7200s # 2 hours
substitutions:
- _SHARED_DEPENDENCIES_VERSION: '3.39.1-SNAPSHOT' # {x-version-update:google-cloud-shared-dependencies:current}
+ _SHARED_DEPENDENCIES_VERSION: '3.40.0' # {x-version-update:google-cloud-shared-dependencies:current}
_JAVA_SHARED_CONFIG_VERSION: '1.12.0'
steps:
# GraalVM A build
diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-push-prod.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-push-prod.yaml
index 1499c9053b..95ee665f3e 100644
--- a/.cloudbuild/library_generation/cloudbuild-library-generation-push-prod.yaml
+++ b/.cloudbuild/library_generation/cloudbuild-library-generation-push-prod.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_IMAGE_NAME: "us-docker.pkg.dev/java-hermetic-build-prod/private-resources/java-library-generation"
- _GAPIC_GENERATOR_JAVA_VERSION: '2.49.1-SNAPSHOT' # {x-version-update:gapic-generator-java:current}
+ _GAPIC_GENERATOR_JAVA_VERSION: '2.50.0' # {x-version-update:gapic-generator-java:current}
_SHA_IMAGE_ID: "${_IMAGE_NAME}:${COMMIT_SHA}"
_LATEST_IMAGE_ID: "${_IMAGE_NAME}:latest"
_VERSIONED_IMAGE_ID: "${_IMAGE_NAME}:${_GAPIC_GENERATOR_JAVA_VERSION}"
diff --git a/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml b/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml
index 359c021f69..db56519519 100644
--- a/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml
+++ b/.cloudbuild/library_generation/cloudbuild-library-generation-push.yaml
@@ -15,7 +15,7 @@
timeout: 7200s # 2 hours
substitutions:
_IMAGE_NAME: "gcr.io/cloud-devrel-public-resources/java-library-generation"
- _GAPIC_GENERATOR_JAVA_VERSION: '2.49.1-SNAPSHOT' # {x-version-update:gapic-generator-java:current}
+ _GAPIC_GENERATOR_JAVA_VERSION: '2.50.0' # {x-version-update:gapic-generator-java:current}
_SHA_IMAGE_ID: "${_IMAGE_NAME}:${COMMIT_SHA}"
_LATEST_IMAGE_ID: "${_IMAGE_NAME}:latest"
_VERSIONED_IMAGE_ID: "${_IMAGE_NAME}:${_GAPIC_GENERATOR_JAVA_VERSION}"
diff --git a/.cloudbuild/library_generation/library_generation.Dockerfile b/.cloudbuild/library_generation/library_generation.Dockerfile
index 0c8442cb93..6f7b4ef1a4 100644
--- a/.cloudbuild/library_generation/library_generation.Dockerfile
+++ b/.cloudbuild/library_generation/library_generation.Dockerfile
@@ -21,7 +21,7 @@ FROM docker.io/library/maven@sha256:006d25558f9d5244ed55b5d2bd8eaf34d883e447d0c4
WORKDIR /sdk-platform-java
COPY . .
# {x-version-update-start:gapic-generator-java:current}
-ENV DOCKER_GAPIC_GENERATOR_VERSION="2.49.1-SNAPSHOT"
+ENV DOCKER_GAPIC_GENERATOR_VERSION="2.50.0"
# {x-version-update-end}
RUN mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 841dcc60c0..11ee7212d7 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "2.49.0"
+ ".": "2.50.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 662e2894c8..bedb3aa241 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,37 @@
# Changelog
+## [2.50.0](https://github.com/googleapis/sdk-platform-java/compare/v2.49.0...v2.50.0) (2024-11-14)
+
+
+### Features
+
+* Add experimental S2A integration in client libraries grpc transport ([#3326](https://github.com/googleapis/sdk-platform-java/issues/3326)) ([1138ca6](https://github.com/googleapis/sdk-platform-java/commit/1138ca682cd47d6164ceaa47803bfe2f68b1bc14))
+* enable selective generation based on service config include list ([#3323](https://github.com/googleapis/sdk-platform-java/issues/3323)) ([0cddadb](https://github.com/googleapis/sdk-platform-java/commit/0cddadb8ad3eddfffa356a479964d8a720937503))
+* introduce `java.time` to java-core ([#3330](https://github.com/googleapis/sdk-platform-java/issues/3330)) ([f202c3b](https://github.com/googleapis/sdk-platform-java/commit/f202c3b550936168b9876860853876aa6d51c6a1))
+* Update Gapic-Generator to generate libraries using `java.time` methods ([#3321](https://github.com/googleapis/sdk-platform-java/issues/3321)) ([b21c9a4](https://github.com/googleapis/sdk-platform-java/commit/b21c9a42121c22a1ab229d2d485265c271305110))
+
+
+### Bug Fixes
+
+* Fix flaky test ScheduledRetryingExecutorTest.testCancelOuterFutureAfterStart ([#3335](https://github.com/googleapis/sdk-platform-java/issues/3335)) ([e73740d](https://github.com/googleapis/sdk-platform-java/commit/e73740dbdb21d7c28908554fe3725504dc8ce84b))
+* httpjson callables to trace attempts (started, failed) ([#3300](https://github.com/googleapis/sdk-platform-java/issues/3300)) ([15a64ee](https://github.com/googleapis/sdk-platform-java/commit/15a64ee2e63165e50fd07b2b3a40f0d2ef2edfe2))
+* instantiate GaxProperties at build time to ensure we get the protobuf version ([#3365](https://github.com/googleapis/sdk-platform-java/issues/3365)) ([bb2a3be](https://github.com/googleapis/sdk-platform-java/commit/bb2a3be87291ae718ac0e8538025a0867a6b6ff6))
+* protobuf version not always getting set in headers ([#3322](https://github.com/googleapis/sdk-platform-java/issues/3322)) ([7f6e470](https://github.com/googleapis/sdk-platform-java/commit/7f6e470fea1673a5cf50fe3b49263615a172afde))
+* use BuildKit instead of legacy builder to build the Hermetic Build images ([#3338](https://github.com/googleapis/sdk-platform-java/issues/3338)) ([222fb45](https://github.com/googleapis/sdk-platform-java/commit/222fb452e00bd195ad51389ea308993a7e1bc956))
+
+
+### Dependencies
+
+* update google auth library dependencies to v1.30.0 ([#3367](https://github.com/googleapis/sdk-platform-java/issues/3367)) ([a31c682](https://github.com/googleapis/sdk-platform-java/commit/a31c68232584bf90bc00ace8310adeab8fa26add))
+* update grpc dependencies to v1.68.1 ([#3240](https://github.com/googleapis/sdk-platform-java/issues/3240)) ([c8e3941](https://github.com/googleapis/sdk-platform-java/commit/c8e3941ef6f5bd1236f5ceedfd488e5113928471))
+
+
+### Documentation
+
+* fix list num ([#3356](https://github.com/googleapis/sdk-platform-java/issues/3356)) ([b7d6296](https://github.com/googleapis/sdk-platform-java/commit/b7d62968cd837a7addc06da8b9bc2131c36c7fbc))
+* **hermetic-build:** indicate usage of Docker Buildkit in development guide ([#3337](https://github.com/googleapis/sdk-platform-java/issues/3337)) ([01e742d](https://github.com/googleapis/sdk-platform-java/commit/01e742de49e151efbd903808a859f595f99bc8de))
+* modify hermetic build docs ([#3331](https://github.com/googleapis/sdk-platform-java/issues/3331)) ([25023af](https://github.com/googleapis/sdk-platform-java/commit/25023afad8f483a3eae8846c4bc1fbe2c7a260c5))
+
## [2.49.0](https://github.com/googleapis/sdk-platform-java/compare/v2.48.0...v2.49.0) (2024-10-25)
diff --git a/WORKSPACE b/WORKSPACE
index 1cea3cc3ae..71e2af2758 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.49.1-SNAPSHOT" # {x-version-update:gapic-generator-java:current}
+_gapic_generator_java_version = "2.50.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 763bcb238d..07f447df37 100644
--- a/api-common-java/pom.xml
+++ b/api-common-java/pom.xml
@@ -5,14 +5,14 @@
com.google.api
api-common
jar
- 2.40.1-SNAPSHOT
+ 2.41.0
API Common
Common utilities for Google APIs in Java
com.google.api
gapic-generator-java-pom-parent
- 2.49.1-SNAPSHOT
+ 2.50.0
../gapic-generator-java-pom-parent
diff --git a/coverage-report/pom.xml b/coverage-report/pom.xml
index e66f4d066d..65269d7aa0 100644
--- a/coverage-report/pom.xml
+++ b/coverage-report/pom.xml
@@ -31,22 +31,22 @@
com.google.api
gax
- 2.57.1-SNAPSHOT
+ 2.58.0
com.google.api
gax-grpc
- 2.57.1-SNAPSHOT
+ 2.58.0
com.google.api
gax-httpjson
- 2.57.1-SNAPSHOT
+ 2.58.0
com.google.api
api-common
- 2.40.1-SNAPSHOT
+ 2.41.0