diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index f60d7749..a79f0627 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:fc52b202aa298a50a12c64efd04fea3884d867947effe2fa85382a246c09e813 -# created: 2022-04-06T16:30:03.627422514Z + digest: sha256:2567a120ce90fadb6201999b87d649d9f67459de28815ad239bce9ebfaa18a74 +# created: 2022-05-19T15:12:45.278246753Z diff --git a/.kokoro/build.sh b/.kokoro/build.sh index 6df01957..61132870 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -74,6 +74,11 @@ graalvm) mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test RETURN_CODE=$? ;; +graalvm17) + # Run Unit and Integration Tests with Native Image + mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test + RETURN_CODE=$? + ;; samples) SAMPLES_DIR=samples # only run ITs in snapshot/ on presubmit PRs. run ITs in all 3 samples/ subdirectories otherwise. diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg new file mode 100644 index 00000000..a3f7fb9d --- /dev/null +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -0,0 +1,33 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/graalvm17" +} + +env_vars: { + key: "JOB_TYPE" + value: "graalvm17" +} + +# TODO: remove this after we've migrated all tests and scripts +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_CLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "secret_manager/java-it-service-account" +} + +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 9be256fe..705d8137 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [2.4.0](https://github.com/googleapis/java-monitoring-dashboards/compare/v2.3.0...v2.4.0) (2022-05-19) + + +### Features + +* add build scripts for native image testing in Java 17 ([#1440](https://github.com/googleapis/java-monitoring-dashboards/issues/1440)) ([#601](https://github.com/googleapis/java-monitoring-dashboards/issues/601)) ([3a1288e](https://github.com/googleapis/java-monitoring-dashboards/commit/3a1288e269154fa21f55f2528ee99027efb783c8)) + + +### Dependencies + +* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.12.0 ([#600](https://github.com/googleapis/java-monitoring-dashboards/issues/600)) ([98bf209](https://github.com/googleapis/java-monitoring-dashboards/commit/98bf209cece0097fc7185c5147e7935e008a425a)) + ## [2.3.0](https://github.com/googleapis/java-monitoring-dashboards/compare/v2.2.6...v2.3.0) (2022-04-15) diff --git a/README.md b/README.md index ef7a7681..7f0ea024 100644 --- a/README.md +++ b/README.md @@ -19,20 +19,20 @@ If you are using Maven, add this to your pom.xml file: com.google.cloud google-cloud-monitoring-dashboard - 2.2.6 + 2.3.0 ``` If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-monitoring-dashboard:2.2.6' +implementation 'com.google.cloud:google-cloud-monitoring-dashboard:2.3.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-monitoring-dashboard" % "2.2.6" +libraryDependencies += "com.google.cloud" % "google-cloud-monitoring-dashboard" % "2.3.0" ``` ## Authentication diff --git a/google-cloud-monitoring-dashboard-bom/pom.xml b/google-cloud-monitoring-dashboard-bom/pom.xml index f58c875d..8345846a 100644 --- a/google-cloud-monitoring-dashboard-bom/pom.xml +++ b/google-cloud-monitoring-dashboard-bom/pom.xml @@ -3,12 +3,12 @@ 4.0.0 com.google.cloud google-cloud-monitoring-dashboard-bom - 2.3.0 + 2.4.0 pom com.google.cloud google-cloud-shared-config - 1.3.2 + 1.4.0 Google Cloud Monitoring Dashboard BOM @@ -52,17 +52,17 @@ com.google.cloud google-cloud-monitoring-dashboard - 2.3.0 + 2.4.0 com.google.api.grpc grpc-google-cloud-monitoring-dashboard-v1 - 2.3.0 + 2.4.0 com.google.api.grpc proto-google-cloud-monitoring-dashboard-v1 - 2.3.0 + 2.4.0 diff --git a/google-cloud-monitoring-dashboard/pom.xml b/google-cloud-monitoring-dashboard/pom.xml index 78a2a8c0..96b02a66 100644 --- a/google-cloud-monitoring-dashboard/pom.xml +++ b/google-cloud-monitoring-dashboard/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-monitoring-dashboard - 2.3.0 + 2.4.0 jar Google Cloud Monitoring Dashboard https://github.com/googleapis/java-monitoring-dashboards @@ -11,7 +11,7 @@ com.google.cloud google-cloud-monitoring-dashboard-parent - 2.3.0 + 2.4.0 google-cloud-monitoring-dashboard diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClient.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClient.java index 283898dc..c24c7a0a 100644 --- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClient.java +++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,6 +50,8 @@ * calls that map to API methods. Sample code to get started: * *
{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
  *   CreateDashboardRequest request =
  *       CreateDashboardRequest.newBuilder()
@@ -91,6 +93,8 @@
  * 

To customize credentials: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * DashboardsServiceSettings dashboardsServiceSettings =
  *     DashboardsServiceSettings.newBuilder()
  *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
@@ -102,6 +106,8 @@
  * 

To customize the endpoint: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * DashboardsServiceSettings dashboardsServiceSettings =
  *     DashboardsServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
  * DashboardsServiceClient dashboardsServiceClient =
@@ -174,6 +180,8 @@ public DashboardsServiceStub getStub() {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   CreateDashboardRequest request =
    *       CreateDashboardRequest.newBuilder()
@@ -203,6 +211,8 @@ public final Dashboard createDashboard(CreateDashboardRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   CreateDashboardRequest request =
    *       CreateDashboardRequest.newBuilder()
@@ -231,6 +241,8 @@ public final UnaryCallable createDashboardCal
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   ListDashboardsRequest request =
    *       ListDashboardsRequest.newBuilder()
@@ -261,6 +273,8 @@ public final ListDashboardsPagedResponse listDashboards(ListDashboardsRequest re
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   ListDashboardsRequest request =
    *       ListDashboardsRequest.newBuilder()
@@ -292,6 +306,8 @@ public final ListDashboardsPagedResponse listDashboards(ListDashboardsRequest re
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   ListDashboardsRequest request =
    *       ListDashboardsRequest.newBuilder()
@@ -330,6 +346,8 @@ public final ListDashboardsPagedResponse listDashboards(ListDashboardsRequest re
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   GetDashboardRequest request =
    *       GetDashboardRequest.newBuilder()
@@ -356,6 +374,8 @@ public final Dashboard getDashboard(GetDashboardRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   GetDashboardRequest request =
    *       GetDashboardRequest.newBuilder()
@@ -383,6 +403,8 @@ public final UnaryCallable getDashboardCallable(
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   DeleteDashboardRequest request =
    *       DeleteDashboardRequest.newBuilder()
@@ -410,6 +432,8 @@ public final void deleteDashboard(DeleteDashboardRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   DeleteDashboardRequest request =
    *       DeleteDashboardRequest.newBuilder()
@@ -437,6 +461,8 @@ public final UnaryCallable deleteDashboardCallabl
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   UpdateDashboardRequest request =
    *       UpdateDashboardRequest.newBuilder()
@@ -465,6 +491,8 @@ public final Dashboard updateDashboard(UpdateDashboardRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
    *   UpdateDashboardRequest request =
    *       UpdateDashboardRequest.newBuilder()
diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceSettings.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceSettings.java
index 4d352780..4d2c8a27 100644
--- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceSettings.java
+++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -60,6 +60,8 @@
  * 

For example, to set the total timeout of createDashboard to 30 seconds: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * DashboardsServiceSettings.Builder dashboardsServiceSettingsBuilder =
  *     DashboardsServiceSettings.newBuilder();
  * dashboardsServiceSettingsBuilder
diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/package-info.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/package-info.java
index 474ad38b..5cb47e32 100644
--- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/package-info.java
+++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,6 +27,8 @@
  * 

Sample for DashboardsServiceClient: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * try (DashboardsServiceClient dashboardsServiceClient = DashboardsServiceClient.create()) {
  *   CreateDashboardRequest request =
  *       CreateDashboardRequest.newBuilder()
diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStub.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStub.java
index a6817b68..fdb1a67b 100644
--- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStub.java
+++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStub.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStubSettings.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStubSettings.java
index c5b6cd98..74662747 100644
--- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStubSettings.java
+++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/DashboardsServiceStubSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -75,6 +75,8 @@
  * 

For example, to set the total timeout of createDashboard to 30 seconds: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * DashboardsServiceStubSettings.Builder dashboardsServiceSettingsBuilder =
  *     DashboardsServiceStubSettings.newBuilder();
  * dashboardsServiceSettingsBuilder
diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceCallableFactory.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceCallableFactory.java
index f24bdd91..80c1f8cc 100644
--- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceCallableFactory.java
+++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceCallableFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceStub.java b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceStub.java
index 67bb2bca..46452f7d 100644
--- a/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceStub.java
+++ b/google-cloud-monitoring-dashboard/src/main/java/com/google/cloud/monitoring/dashboard/v1/stub/GrpcDashboardsServiceStub.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClientTest.java b/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClientTest.java
index 5a9dd604..faf55fa8 100644
--- a/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClientTest.java
+++ b/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/DashboardsServiceClientTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsService.java b/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsService.java
index eac9a999..dbff3b18 100644
--- a/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsService.java
+++ b/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsServiceImpl.java b/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsServiceImpl.java
index 9e21de37..5e771f6b 100644
--- a/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsServiceImpl.java
+++ b/google-cloud-monitoring-dashboard/src/test/java/com/google/cloud/monitoring/dashboard/v1/MockDashboardsServiceImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/grpc-google-cloud-monitoring-dashboard-v1/pom.xml b/grpc-google-cloud-monitoring-dashboard-v1/pom.xml
index 5bd7a7cc..7a6ef1c0 100644
--- a/grpc-google-cloud-monitoring-dashboard-v1/pom.xml
+++ b/grpc-google-cloud-monitoring-dashboard-v1/pom.xml
@@ -4,13 +4,13 @@
   4.0.0
   com.google.api.grpc
   grpc-google-cloud-monitoring-dashboard-v1
-  2.3.0
+  2.4.0
   grpc-google-cloud-monitoring-dashboard-v1
   GRPC library for grpc-google-cloud-monitoring-dashboard-v1
   
     com.google.cloud
     google-cloud-monitoring-dashboard-parent
-    2.3.0
+    2.4.0
   
   
     
diff --git a/pom.xml b/pom.xml
index 48e04f21..cb2d1b71 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
   com.google.cloud
   google-cloud-monitoring-dashboard-parent
   pom
-  2.3.0
+  2.4.0
   Google Cloud Monitoring Dashboard Parent
   https://github.com/googleapis/java-monitoring-dashboards
   
@@ -14,7 +14,7 @@
   
     com.google.cloud
     google-cloud-shared-config
-    1.3.2
+    1.4.0
   
 
   
@@ -61,23 +61,23 @@
       
         com.google.api.grpc
         proto-google-cloud-monitoring-dashboard-v1
-        2.3.0
+        2.4.0
       
       
         com.google.api.grpc
         grpc-google-cloud-monitoring-dashboard-v1
-        2.3.0
+        2.4.0
       
       
         com.google.cloud
         google-cloud-monitoring-dashboard
-        2.3.0
+        2.4.0
       
 
       
         com.google.cloud
         google-cloud-shared-dependencies
-        2.10.0
+        2.12.0
         pom
         import
       
@@ -120,7 +120,7 @@
       
         org.apache.maven.plugins
         maven-project-info-reports-plugin
-        3.2.2
+        3.3.0
         
           
             
@@ -147,7 +147,7 @@
       
         org.apache.maven.plugins
         maven-javadoc-plugin
-        3.3.2
+        3.4.0
         
           
             html
diff --git a/proto-google-cloud-monitoring-dashboard-v1/pom.xml b/proto-google-cloud-monitoring-dashboard-v1/pom.xml
index bce28119..e78a8c87 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/pom.xml
+++ b/proto-google-cloud-monitoring-dashboard-v1/pom.xml
@@ -4,13 +4,13 @@
   4.0.0
   com.google.api.grpc
   proto-google-cloud-monitoring-dashboard-v1
-  2.3.0
+  2.4.0
   proto-google-cloud-monitoring-dashboard-v1
   PROTO library for proto-google-cloud-monitoring-dashboard-v1
   
     com.google.cloud
     google-cloud-monitoring-dashboard-parent
-    2.3.0
+    2.4.0
   
   
     
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Aggregation.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Aggregation.java
index 77867ad4..8fee75d0 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Aggregation.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Aggregation.java
@@ -145,6 +145,8 @@ private Aggregation(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/AlertChart.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/AlertChart.java
index 2f76dc7d..ba68dbc9 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/AlertChart.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/AlertChart.java
@@ -88,6 +88,8 @@ private AlertChart(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ChartOptions.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ChartOptions.java
index 6840b24d..58fa5a9c 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ChartOptions.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ChartOptions.java
@@ -88,6 +88,8 @@ private ChartOptions(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CollapsibleGroup.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CollapsibleGroup.java
index ecdccf9e..8e7c1f1e 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CollapsibleGroup.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CollapsibleGroup.java
@@ -85,6 +85,8 @@ private CollapsibleGroup(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ColumnLayout.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ColumnLayout.java
index a74ddcf9..15bd8757 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ColumnLayout.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ColumnLayout.java
@@ -97,6 +97,8 @@ private ColumnLayout(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -276,6 +278,8 @@ private Column(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CreateDashboardRequest.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CreateDashboardRequest.java
index 0c2a6303..360d00a4 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CreateDashboardRequest.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/CreateDashboardRequest.java
@@ -109,6 +109,8 @@ private CreateDashboardRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Dashboard.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Dashboard.java
index c6db2077..3adf0923 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Dashboard.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Dashboard.java
@@ -199,6 +199,8 @@ private Dashboard(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -772,7 +774,7 @@ public int getLabelsCount() {
   @java.lang.Override
   public boolean containsLabels(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLabels().getMap().containsKey(key);
   }
@@ -807,7 +809,7 @@ public java.util.Map getLabelsMap() {
   @java.lang.Override
   public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetLabels().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -824,7 +826,7 @@ public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.Strin
   @java.lang.Override
   public java.lang.String getLabelsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetLabels().getMap();
     if (!map.containsKey(key)) {
@@ -1887,8 +1889,9 @@ public Builder mergeGridLayout(com.google.monitoring.dashboard.v1.GridLayout val
       } else {
         if (layoutCase_ == 5) {
           gridLayoutBuilder_.mergeFrom(value);
+        } else {
+          gridLayoutBuilder_.setMessage(value);
         }
-        gridLayoutBuilder_.setMessage(value);
       }
       layoutCase_ = 5;
       return this;
@@ -2105,8 +2108,9 @@ public Builder mergeMosaicLayout(com.google.monitoring.dashboard.v1.MosaicLayout
       } else {
         if (layoutCase_ == 6) {
           mosaicLayoutBuilder_.mergeFrom(value);
+        } else {
+          mosaicLayoutBuilder_.setMessage(value);
         }
-        mosaicLayoutBuilder_.setMessage(value);
       }
       layoutCase_ = 6;
       return this;
@@ -2323,8 +2327,9 @@ public Builder mergeRowLayout(com.google.monitoring.dashboard.v1.RowLayout value
       } else {
         if (layoutCase_ == 8) {
           rowLayoutBuilder_.mergeFrom(value);
+        } else {
+          rowLayoutBuilder_.setMessage(value);
         }
-        rowLayoutBuilder_.setMessage(value);
       }
       layoutCase_ = 8;
       return this;
@@ -2541,8 +2546,9 @@ public Builder mergeColumnLayout(com.google.monitoring.dashboard.v1.ColumnLayout
       } else {
         if (layoutCase_ == 9) {
           columnLayoutBuilder_.mergeFrom(value);
+        } else {
+          columnLayoutBuilder_.setMessage(value);
         }
-        columnLayoutBuilder_.setMessage(value);
       }
       layoutCase_ = 9;
       return this;
@@ -3041,7 +3047,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -3077,7 +3083,7 @@ public java.util.Map getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -3094,7 +3100,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -3118,7 +3124,7 @@ public Builder clearLabels() {
      */
     public Builder removeLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLabels().getMutableMap().remove(key);
       return this;
@@ -3139,11 +3145,12 @@ public java.util.Map getMutableLabels() {
      */
     public Builder putLabels(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableLabels().getMutableMap().put(key, value);
       return this;
     }
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardFilter.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardFilter.java
index 50142335..ed1597c7 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardFilter.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardFilter.java
@@ -111,6 +111,8 @@ private DashboardFilter(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardName.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardName.java
index 03f0a068..4648d70c 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardName.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardOrBuilder.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardOrBuilder.java
index 44a50e44..daad81f6 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardOrBuilder.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DashboardOrBuilder.java
@@ -357,7 +357,12 @@ com.google.monitoring.dashboard.v1.DashboardFilterOrBuilder getDashboardFiltersO
    *
    * map<string, string> labels = 12;
    */
-  java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getLabelsOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DeleteDashboardRequest.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DeleteDashboardRequest.java
index 12d40774..e4cf42e7 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DeleteDashboardRequest.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/DeleteDashboardRequest.java
@@ -88,6 +88,8 @@ private DeleteDashboardRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GetDashboardRequest.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GetDashboardRequest.java
index a68994a7..3b21e6b6 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GetDashboardRequest.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GetDashboardRequest.java
@@ -88,6 +88,8 @@ private GetDashboardRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GridLayout.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GridLayout.java
index 81c990bc..8030d3e5 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GridLayout.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/GridLayout.java
@@ -99,6 +99,8 @@ private GridLayout(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsRequest.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsRequest.java
index b21e307f..bf1a82ea 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsRequest.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsRequest.java
@@ -101,6 +101,8 @@ private ListDashboardsRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsResponse.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsResponse.java
index 0d0fc6de..7e736e45 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsResponse.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ListDashboardsResponse.java
@@ -102,6 +102,8 @@ private ListDashboardsResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/LogsPanel.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/LogsPanel.java
index a0eef491..5267ea41 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/LogsPanel.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/LogsPanel.java
@@ -100,6 +100,8 @@ private LogsPanel(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/MosaicLayout.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/MosaicLayout.java
index aeadfc47..6a074916 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/MosaicLayout.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/MosaicLayout.java
@@ -102,6 +102,8 @@ private MosaicLayout(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -323,6 +325,8 @@ private Tile(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/PickTimeSeriesFilter.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/PickTimeSeriesFilter.java
index 43a5552d..81540514 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/PickTimeSeriesFilter.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/PickTimeSeriesFilter.java
@@ -106,6 +106,8 @@ private PickTimeSeriesFilter(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ProjectName.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ProjectName.java
index f5f4a322..b955aed0 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ProjectName.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/ProjectName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/RowLayout.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/RowLayout.java
index f3c2b862..3356809d 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/RowLayout.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/RowLayout.java
@@ -95,6 +95,8 @@ private RowLayout(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -274,6 +276,8 @@ private Row(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Scorecard.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Scorecard.java
index a1ccb521..a34c388d 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Scorecard.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Scorecard.java
@@ -152,6 +152,8 @@ private Scorecard(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -284,6 +286,8 @@ private GaugeView(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -359,10 +363,10 @@ public final boolean isInitialized() {
 
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
-      if (lowerBound_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(lowerBound_) != 0) {
         output.writeDouble(1, lowerBound_);
       }
-      if (upperBound_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(upperBound_) != 0) {
         output.writeDouble(2, upperBound_);
       }
       unknownFields.writeTo(output);
@@ -374,10 +378,10 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (lowerBound_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(lowerBound_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, lowerBound_);
       }
-      if (upperBound_ != 0D) {
+      if (java.lang.Double.doubleToRawLongBits(upperBound_) != 0) {
         size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, upperBound_);
       }
       size += unknownFields.getSerializedSize();
@@ -1023,6 +1027,8 @@ private SparkChartView(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -3123,8 +3129,9 @@ public Builder mergeGaugeView(com.google.monitoring.dashboard.v1.Scorecard.Gauge
       } else {
         if (dataViewCase_ == 4) {
           gaugeViewBuilder_.mergeFrom(value);
+        } else {
+          gaugeViewBuilder_.setMessage(value);
         }
-        gaugeViewBuilder_.setMessage(value);
       }
       dataViewCase_ = 4;
       return this;
@@ -3336,8 +3343,9 @@ public Builder mergeSparkChartView(
       } else {
         if (dataViewCase_ == 5) {
           sparkChartViewBuilder_.mergeFrom(value);
+        } else {
+          sparkChartViewBuilder_.setMessage(value);
         }
-        sparkChartViewBuilder_.setMessage(value);
       }
       dataViewCase_ = 5;
       return this;
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/StatisticalTimeSeriesFilter.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/StatisticalTimeSeriesFilter.java
index 21d3d284..7bbf3d12 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/StatisticalTimeSeriesFilter.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/StatisticalTimeSeriesFilter.java
@@ -95,6 +95,8 @@ private StatisticalTimeSeriesFilter(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TableDisplayOptions.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TableDisplayOptions.java
index 03e14c53..99706fcf 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TableDisplayOptions.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TableDisplayOptions.java
@@ -92,6 +92,8 @@ private TableDisplayOptions(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Text.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Text.java
index c77b840c..c2ba87b0 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Text.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Text.java
@@ -96,6 +96,8 @@ private Text(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Threshold.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Threshold.java
index f10ffa44..ccc200f3 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Threshold.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Threshold.java
@@ -117,6 +117,8 @@ private Threshold(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -821,7 +823,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
     }
-    if (value_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
       output.writeDouble(2, value_);
     }
     if (color_
@@ -850,7 +852,7 @@ public int getSerializedSize() {
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
     }
-    if (value_ != 0D) {
+    if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
       size += com.google.protobuf.CodedOutputStream.computeDoubleSize(2, value_);
     }
     if (color_
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilter.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilter.java
index 23867766..da56506f 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilter.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilter.java
@@ -164,6 +164,8 @@ private TimeSeriesFilter(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -454,6 +456,8 @@ public com.google.monitoring.dashboard.v1.PickTimeSeriesFilter getPickTimeSeries
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilter.statistical_time_series_filter is
+   *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=76
    * @return Whether the statisticalTimeSeriesFilter field is set.
    */
   @java.lang.Override
@@ -473,6 +477,8 @@ public boolean hasStatisticalTimeSeriesFilter() {
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilter.statistical_time_series_filter is
+   *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=76
    * @return The statisticalTimeSeriesFilter.
    */
   @java.lang.Override
@@ -1595,8 +1601,9 @@ public Builder mergePickTimeSeriesFilter(
       } else {
         if (outputFilterCase_ == 4) {
           pickTimeSeriesFilterBuilder_.mergeFrom(value);
+        } else {
+          pickTimeSeriesFilterBuilder_.setMessage(value);
         }
-        pickTimeSeriesFilterBuilder_.setMessage(value);
       }
       outputFilterCase_ = 4;
       return this;
@@ -1716,6 +1723,8 @@ public Builder clearPickTimeSeriesFilter() {
      * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
      * 
      *
+     * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilter.statistical_time_series_filter is
+     *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=76
      * @return Whether the statisticalTimeSeriesFilter field is set.
      */
     @java.lang.Override
@@ -1735,6 +1744,8 @@ public boolean hasStatisticalTimeSeriesFilter() {
      * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
      * 
      *
+     * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilter.statistical_time_series_filter is
+     *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=76
      * @return The statisticalTimeSeriesFilter.
      */
     @java.lang.Override
@@ -1837,8 +1848,9 @@ public Builder mergeStatisticalTimeSeriesFilter(
       } else {
         if (outputFilterCase_ == 5) {
           statisticalTimeSeriesFilterBuilder_.mergeFrom(value);
+        } else {
+          statisticalTimeSeriesFilterBuilder_.setMessage(value);
         }
-        statisticalTimeSeriesFilterBuilder_.setMessage(value);
       }
       outputFilterCase_ = 5;
       return this;
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterOrBuilder.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterOrBuilder.java
index 9ab6466c..d4542219 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterOrBuilder.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterOrBuilder.java
@@ -174,6 +174,8 @@ public interface TimeSeriesFilterOrBuilder
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilter.statistical_time_series_filter is
+   *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=76
    * @return Whether the statisticalTimeSeriesFilter field is set.
    */
   @java.lang.Deprecated
@@ -190,6 +192,8 @@ public interface TimeSeriesFilterOrBuilder
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilter.statistical_time_series_filter is
+   *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=76
    * @return The statisticalTimeSeriesFilter.
    */
   @java.lang.Deprecated
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatio.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatio.java
index 5602c233..a2ac7ec7 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatio.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatio.java
@@ -174,6 +174,8 @@ private TimeSeriesFilterRatio(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -359,6 +361,8 @@ private RatioPart(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -1484,6 +1488,8 @@ public com.google.monitoring.dashboard.v1.PickTimeSeriesFilter getPickTimeSeries
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilterRatio.statistical_time_series_filter
+   *     is deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=115
    * @return Whether the statisticalTimeSeriesFilter field is set.
    */
   @java.lang.Override
@@ -1503,6 +1509,8 @@ public boolean hasStatisticalTimeSeriesFilter() {
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilterRatio.statistical_time_series_filter
+   *     is deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=115
    * @return The statisticalTimeSeriesFilter.
    */
   @java.lang.Override
@@ -2710,8 +2718,9 @@ public Builder mergePickTimeSeriesFilter(
       } else {
         if (outputFilterCase_ == 4) {
           pickTimeSeriesFilterBuilder_.mergeFrom(value);
+        } else {
+          pickTimeSeriesFilterBuilder_.setMessage(value);
         }
-        pickTimeSeriesFilterBuilder_.setMessage(value);
       }
       outputFilterCase_ = 4;
       return this;
@@ -2831,6 +2840,9 @@ public Builder clearPickTimeSeriesFilter() {
      * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
      * 
      *
+     * @deprecated
+     *     google.monitoring.dashboard.v1.TimeSeriesFilterRatio.statistical_time_series_filter is
+     *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=115
      * @return Whether the statisticalTimeSeriesFilter field is set.
      */
     @java.lang.Override
@@ -2850,6 +2862,9 @@ public boolean hasStatisticalTimeSeriesFilter() {
      * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
      * 
      *
+     * @deprecated
+     *     google.monitoring.dashboard.v1.TimeSeriesFilterRatio.statistical_time_series_filter is
+     *     deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=115
      * @return The statisticalTimeSeriesFilter.
      */
     @java.lang.Override
@@ -2952,8 +2967,9 @@ public Builder mergeStatisticalTimeSeriesFilter(
       } else {
         if (outputFilterCase_ == 5) {
           statisticalTimeSeriesFilterBuilder_.mergeFrom(value);
+        } else {
+          statisticalTimeSeriesFilterBuilder_.setMessage(value);
         }
-        statisticalTimeSeriesFilterBuilder_.setMessage(value);
       }
       outputFilterCase_ = 5;
       return this;
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatioOrBuilder.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatioOrBuilder.java
index 570bef1f..6701a5dc 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatioOrBuilder.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesFilterRatioOrBuilder.java
@@ -178,6 +178,8 @@ public interface TimeSeriesFilterRatioOrBuilder
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilterRatio.statistical_time_series_filter
+   *     is deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=115
    * @return Whether the statisticalTimeSeriesFilter field is set.
    */
   @java.lang.Deprecated
@@ -194,6 +196,8 @@ public interface TimeSeriesFilterRatioOrBuilder
    * .google.monitoring.dashboard.v1.StatisticalTimeSeriesFilter statistical_time_series_filter = 5 [deprecated = true];
    * 
    *
+   * @deprecated google.monitoring.dashboard.v1.TimeSeriesFilterRatio.statistical_time_series_filter
+   *     is deprecated. See google/monitoring/dashboard/v1/metrics.proto;l=115
    * @return The statisticalTimeSeriesFilter.
    */
   @java.lang.Deprecated
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesQuery.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesQuery.java
index 17f9cab4..29de6b71 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesQuery.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesQuery.java
@@ -134,6 +134,8 @@ private TimeSeriesQuery(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -983,8 +985,9 @@ public Builder mergeTimeSeriesFilter(
       } else {
         if (sourceCase_ == 1) {
           timeSeriesFilterBuilder_.mergeFrom(value);
+        } else {
+          timeSeriesFilterBuilder_.setMessage(value);
         }
-        timeSeriesFilterBuilder_.setMessage(value);
       }
       sourceCase_ = 1;
       return this;
@@ -1202,8 +1205,9 @@ public Builder mergeTimeSeriesFilterRatio(
       } else {
         if (sourceCase_ == 2) {
           timeSeriesFilterRatioBuilder_.mergeFrom(value);
+        } else {
+          timeSeriesFilterRatioBuilder_.setMessage(value);
         }
-        timeSeriesFilterRatioBuilder_.setMessage(value);
       }
       sourceCase_ = 2;
       return this;
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesTable.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesTable.java
index 0260cfe7..acc44dcc 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesTable.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/TimeSeriesTable.java
@@ -96,6 +96,8 @@ private TimeSeriesTable(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -416,6 +418,8 @@ private TableDataSet(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/UpdateDashboardRequest.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/UpdateDashboardRequest.java
index 9559513d..f5553516 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/UpdateDashboardRequest.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/UpdateDashboardRequest.java
@@ -100,6 +100,8 @@ private UpdateDashboardRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Widget.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Widget.java
index 59a8fb02..af70ca47 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Widget.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/Widget.java
@@ -220,6 +220,8 @@ private Widget(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -1551,8 +1553,9 @@ public Builder mergeXyChart(com.google.monitoring.dashboard.v1.XyChart value) {
       } else {
         if (contentCase_ == 2) {
           xyChartBuilder_.mergeFrom(value);
+        } else {
+          xyChartBuilder_.setMessage(value);
         }
-        xyChartBuilder_.setMessage(value);
       }
       contentCase_ = 2;
       return this;
@@ -1760,8 +1763,9 @@ public Builder mergeScorecard(com.google.monitoring.dashboard.v1.Scorecard value
       } else {
         if (contentCase_ == 3) {
           scorecardBuilder_.mergeFrom(value);
+        } else {
+          scorecardBuilder_.setMessage(value);
         }
-        scorecardBuilder_.setMessage(value);
       }
       contentCase_ = 3;
       return this;
@@ -1968,8 +1972,9 @@ public Builder mergeText(com.google.monitoring.dashboard.v1.Text value) {
       } else {
         if (contentCase_ == 4) {
           textBuilder_.mergeFrom(value);
+        } else {
+          textBuilder_.setMessage(value);
         }
-        textBuilder_.setMessage(value);
       }
       contentCase_ = 4;
       return this;
@@ -2174,8 +2179,9 @@ public Builder mergeBlank(com.google.protobuf.Empty value) {
       } else {
         if (contentCase_ == 5) {
           blankBuilder_.mergeFrom(value);
+        } else {
+          blankBuilder_.setMessage(value);
         }
-        blankBuilder_.setMessage(value);
       }
       contentCase_ = 5;
       return this;
@@ -2381,8 +2387,9 @@ public Builder mergeAlertChart(com.google.monitoring.dashboard.v1.AlertChart val
       } else {
         if (contentCase_ == 7) {
           alertChartBuilder_.mergeFrom(value);
+        } else {
+          alertChartBuilder_.setMessage(value);
         }
-        alertChartBuilder_.setMessage(value);
       }
       contentCase_ = 7;
       return this;
@@ -2591,8 +2598,9 @@ public Builder mergeTimeSeriesTable(com.google.monitoring.dashboard.v1.TimeSerie
       } else {
         if (contentCase_ == 8) {
           timeSeriesTableBuilder_.mergeFrom(value);
+        } else {
+          timeSeriesTableBuilder_.setMessage(value);
         }
-        timeSeriesTableBuilder_.setMessage(value);
       }
       contentCase_ = 8;
       return this;
@@ -2808,8 +2816,9 @@ public Builder mergeCollapsibleGroup(
       } else {
         if (contentCase_ == 9) {
           collapsibleGroupBuilder_.mergeFrom(value);
+        } else {
+          collapsibleGroupBuilder_.setMessage(value);
         }
-        collapsibleGroupBuilder_.setMessage(value);
       }
       contentCase_ = 9;
       return this;
@@ -3023,8 +3032,9 @@ public Builder mergeLogsPanel(com.google.monitoring.dashboard.v1.LogsPanel value
       } else {
         if (contentCase_ == 10) {
           logsPanelBuilder_.mergeFrom(value);
+        } else {
+          logsPanelBuilder_.setMessage(value);
         }
-        logsPanelBuilder_.setMessage(value);
       }
       contentCase_ = 10;
       return this;
diff --git a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/XyChart.java b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/XyChart.java
index 1eebcacf..2b02c7b7 100644
--- a/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/XyChart.java
+++ b/proto-google-cloud-monitoring-dashboard-v1/src/main/java/com/google/monitoring/dashboard/v1/XyChart.java
@@ -187,6 +187,8 @@ private XyChart(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -519,6 +521,8 @@ private DataSet(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -2550,6 +2554,8 @@ private Axis(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 56462b4d..59418727 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -29,7 +29,7 @@
     
       com.google.cloud
       google-cloud-monitoring-dashboard
-      2.2.6
+      2.3.0
     
     
 
diff --git a/samples/pom.xml b/samples/pom.xml
index 9fa77f33..1a3e9dd6 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -46,7 +46,7 @@
       
         org.sonatype.plugins
         nexus-staging-maven-plugin
-        1.6.11
+        1.6.13
         
           true
         
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index d4b7c073..a78c1af8 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
     
       com.google.cloud
       google-cloud-monitoring-dashboard
-      2.2.6
+      2.3.0
     
 
     
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index f28ac405..11c6e9a7 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -30,7 +30,7 @@
       
         com.google.cloud
         libraries-bom
-        25.1.0
+        25.3.0
         pom
         import
       
diff --git a/versions.txt b/versions.txt
index 3bfe9c4d..d62268a3 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,6 +1,6 @@
 # Format:
 # module:released-version:current-version
 
-google-cloud-monitoring-dashboard:2.3.0:2.3.0
-grpc-google-cloud-monitoring-dashboard-v1:2.3.0:2.3.0
-proto-google-cloud-monitoring-dashboard-v1:2.3.0:2.3.0
+google-cloud-monitoring-dashboard:2.4.0:2.4.0
+grpc-google-cloud-monitoring-dashboard-v1:2.4.0:2.4.0
+proto-google-cloud-monitoring-dashboard-v1:2.4.0:2.4.0