Repository: googleapis/google-http-java-client
Pull request #1051 (2020-06-03 01:16:12)

chore(deps): update dependency org.codehaus.mojo:exec-maven-plugin to v3
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [org.codehaus.mojo:exec-maven-plugin](http://www.mojohaus.org/exec-maven-plugin) ([source](https://togithub.com/mojohaus/exec-maven-plugin)) | major | `1.6.0` -> `3.0.0` |

---

### Renovate configuration

:date: **Schedule**: At any time (no schedule defined).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

:no_bell: **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/google-http-java-client).


Patch:
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 54221045..12670923 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,1 +1,11 @@
-* @googleapis/yoshi-java
+# Code owners file.
+# This file controls who is tagged for review for any given pull request.
+
+# For syntax help see:
+# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax
+
+# The @googleapis/yoshi-java is the default owner for changes in this repo
+**/*.java               @googleapis/yoshi-java
+
+# The java-samples-reviewers team is the default owner for samples changes
+samples/**/*.java       @googleapis/java-samples-reviewers
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 00000000..68302207
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,79 @@
+on:
+  push:
+    branches:
+    - master
+  pull_request:
+name: ci
+jobs:
+  units:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        java: [7, 8, 11]
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v1
+      with:
+        java-version: ${{matrix.java}}
+    - run: java -version
+    - run: .kokoro/build.sh
+      env:
+        JOB_TYPE: test
+    - name: coverage
+      uses: codecov/codecov-action@v1
+      with:
+        name: actions ${{matrix.java}}
+  windows:
+    runs-on: windows-latest
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v1
+      with:
+        java-version: 8
+    - run: java -version
+    - run: .kokoro/build.bat
+      env:
+        JOB_TYPE: test
+  dependencies:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        java: [8, 11]
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v1
+      with:
+        java-version: ${{matrix.java}}
+    - run: java -version
+    - run: .kokoro/dependencies.sh
+  linkage-monitor:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v1
+      with:
+        java-version: 8
+    - run: java -version
+    - run: .kokoro/linkage-monitor.sh
+  lint:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v1
+      with:
+        java-version: 8
+    - run: java -version
+    - run: .kokoro/build.sh
+      env:
+        JOB_TYPE: lint
+  clirr:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+    - uses: actions/setup-java@v1
+      with:
+        java-version: 8
+    - run: java -version
+    - run: .kokoro/build.sh
+      env:
+        JOB_TYPE: clirr
\ No newline at end of file
diff --git a/.kokoro/build.bat b/.kokoro/build.bat
index b8ca8a89..05826ad9 100644
--- a/.kokoro/build.bat
+++ b/.kokoro/build.bat
@@ -1,3 +1,3 @@
 :: See documentation in type-shell-output.bat
 
-"C:\Program Files\Git\bin\bash.exe" github/google-http-java-client/.kokoro/build.sh
+"C:\Program Files\Git\bin\bash.exe" %~dp0build.sh
diff --git a/.kokoro/build.sh b/.kokoro/build.sh
index 164a94c1..7eefde4a 100755
--- a/.kokoro/build.sh
+++ b/.kokoro/build.sh
@@ -39,7 +39,7 @@ retry_with_backoff 3 10 \
 
 # if GOOGLE_APPLICATION_CREDIENTIALS is specified as a relative path prepend Kokoro root directory onto it
 if [[ ! -z "${GOOGLE_APPLICATION_CREDENTIALS}" && "${GOOGLE_APPLICATION_CREDENTIALS}" != /* ]]; then
-    export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_ROOT}/src/${GOOGLE_APPLICATION_CREDENTIALS})
+    export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_GFILE_DIR}/${GOOGLE_APPLICATION_CREDENTIALS})
 fi
 
 RETURN_CODE=0
@@ -51,9 +51,7 @@ test)
     RETURN_CODE=$?
     ;;
 lint)
-    mvn \
-      -Penable-samples \
-      com.coveo:fmt-maven-plugin:check
+    mvn com.coveo:fmt-maven-plugin:check
     RETURN_CODE=$?
     ;;
 javadoc)
diff --git a/.kokoro/dependencies.sh b/.kokoro/dependencies.sh
index cf3bb434..cee4f11e 100755
--- a/.kokoro/dependencies.sh
+++ b/.kokoro/dependencies.sh
@@ -41,8 +41,10 @@ echo "****************** DEPENDENCY LIST COMPLETENESS CHECK *******************"
 ## Run dependency list completeness check
 function completenessCheck() {
   # Output dep list with compile scope generated using the original pom
+  # Running mvn dependency:list on Java versions that support modules will also include the module of the dependency.
+  # This is stripped from the output as it is not present in the flattened pom.
   msg "Generating dependency list using original pom..."
-  mvn dependency:list -f pom.xml -Dsort=true | grep '\[INFO]    .*:.*:.*:.*:.*' | grep -v ':test$' >.org-list.txt
+  mvn dependency:list -f pom.xml -Dsort=true | grep '\[INFO]    .*:.*:.*:.*:.*' | sed -e s/\\s--\\smodule.*// | grep -v ':test$' >.org-list.txt
 
   # Output dep list generated using the flattened pom (test scope deps are ommitted)
   msg "Generating dependency list using flattened pom..."
diff --git a/.kokoro/nightly/integration.cfg b/.kokoro/nightly/integration.cfg
index 40c4abb7..0048c8ec 100644
--- a/.kokoro/nightly/integration.cfg
+++ b/.kokoro/nightly/integration.cfg
@@ -28,14 +28,10 @@ env_vars: {
 
 env_vars: {
   key: "GOOGLE_APPLICATION_CREDENTIALS"
-  value: "keystore/73713_java_it_service_account"
+  value: "secret_manager/java-it-service-account"
 }
 
-before_action {
-  fetch_keystore {
-    keystore_resource {
-      keystore_config_id: 73713
-      keyname: "java_it_service_account"
-    }
-  }
+env_vars: {
+  key: "SECRET_MANAGER_KEYS"
+  value: "java-it-service-account"
 }
diff --git a/.kokoro/nightly/samples.cfg b/.kokoro/nightly/samples.cfg
index 20aabd55..f2542931 100644
--- a/.kokoro/nightly/samples.cfg
+++ b/.kokoro/nightly/samples.cfg
@@ -24,19 +24,15 @@ env_vars: {
 
 env_vars: {
   key: "GOOGLE_APPLICATION_CREDENTIALS"
-  value: "keystore/73713_java_it_service_account"
+  value: "secret_manager/java-docs-samples-service-account"
 }
 
 env_vars: {
-  key: "ENABLE_BUILD_COP"
-  value: "true"
+  key: "SECRET_MANAGER_KEYS"
+  value: "java-docs-samples-service-account"
 }
 
-before_action {
-  fetch_keystore {
-    keystore_resource {
-      keystore_config_id: 73713
-      keyname: "java_it_service_account"
-    }
-  }
+env_vars: {
+  key: "ENABLE_BUILD_COP"
+  value: "true"
 }
diff --git a/.kokoro/populate-secrets.sh b/.kokoro/populate-secrets.sh
new file mode 100755
index 00000000..f5251425
--- /dev/null
+++ b/.kokoro/populate-secrets.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+# Copyright 2020 Google LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eo pipefail
+
+function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;}
+function msg { println "$*" >&2 ;}
+function println { printf '%s\n' "$(now) $*" ;}
+
+
+# Populates requested secrets set in SECRET_MANAGER_KEYS from service account:
+# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com
+SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager"
+msg "Creating folder on disk for secrets: ${SECRET_LOCATION}"
+mkdir -p ${SECRET_LOCATION}
+for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g")
+do
+  msg "Retrieving secret ${key}"
+  docker run --entrypoint=gcloud \
+    --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \
+    gcr.io/google.com/cloudsdktool/cloud-sdk \
+    secrets versions access latest \
+    --project cloud-devrel-kokoro-resources \
+    --secret ${key} > \
+    "${SECRET_LOCATION}/${key}"
+  if [[ $? == 0 ]]; then
+    msg "Secret written to ${SECRET_LOCATION}/${key}"
+  else
+    msg "Error retrieving secret ${key}"
+  fi
+done
diff --git a/.kokoro/presubmit/integration.cfg b/.kokoro/presubmit/integration.cfg
index 522e5b10..dded67a9 100644
--- a/.kokoro/presubmit/integration.cfg
+++ b/.kokoro/presubmit/integration.cfg
@@ -24,14 +24,10 @@ env_vars: {
 
 env_vars: {
   key: "GOOGLE_APPLICATION_CREDENTIALS"
-  value: "keystore/73713_java_it_service_account"
+  value: "secret_manager/java-it-service-account"
 }
 
-before_action {
-  fetch_keystore {
-    keystore_resource {
-      keystore_config_id: 73713
-      keyname: "java_it_service_account"
-    }
-  }
+env_vars: {
+  key: "SECRET_MANAGER_KEYS"
+  value: "java-it-service-account"
 }
diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg
index 1171aead..01e09600 100644
--- a/.kokoro/presubmit/samples.cfg
+++ b/.kokoro/presubmit/samples.cfg
@@ -24,14 +24,10 @@ env_vars: {
 
 env_vars: {
   key: "GOOGLE_APPLICATION_CREDENTIALS"
-  value: "keystore/73713_java_it_service_account"
+  value: "secret_manager/java-docs-samples-service-account"
 }
 
-before_action {
-  fetch_keystore {
-    keystore_resource {
-      keystore_config_id: 73713
-      keyname: "java_it_service_account"
-    }
-  }
-}
+env_vars: {
+  key: "SECRET_MANAGER_KEYS"
+  value: "java-docs-samples-service-account"
+}
\ No newline at end of file
diff --git a/.kokoro/trampoline.sh b/.kokoro/trampoline.sh
index ba17ce01..9da0f839 100644
--- a/.kokoro/trampoline.sh
+++ b/.kokoro/trampoline.sh
@@ -21,4 +21,6 @@ function cleanup() {
     echo "cleanup";
 }
 trap cleanup EXIT
+
+$(dirname $0)/populate-secrets.sh # Secret Manager secrets.
 python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py"
diff --git a/.repo-metadata.json b/.repo-metadata.json
index db2d1370..0cd58366 100644
--- a/.repo-metadata.json
+++ b/.repo-metadata.json
@@ -6,5 +6,6 @@
   "language": "java",
   "repo": "googleapis/google-http-java-client",
   "repo_short": "google-http-java-client",
+  "codeowner_team": "@googleapis/yoshi-java",
   "distribution_name": "com.google.http-client:google-http-client"
 }
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 085021dd..f2dbdee0 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -99,7 +99,16 @@ mvn -Penable-samples clean verify
     ```
 
 2. [Activate](#profile-activation) the profile.
-3. Define your samples in a normal Maven project in the `samples/` directory
+3. Define your samples in a normal Maven project in the `samples/` directory.
+
+### Code Formatting
+
+Code in this repo is formatted with
+[google-java-format](https://github.com/google/google-java-format).
+To run formatting on your project, you can run:
+```
+mvn com.coveo:fmt-maven-plugin:format
+```
 
 ### Profile Activation
 
diff --git a/docs/setup.md b/docs/setup.md
index 6d08e9bd..768236f8 100644
--- a/docs/setup.md
+++ b/docs/setup.md
@@ -23,7 +23,7 @@ the `dependencyManagement` section of your `pom.xml`:
     <dependency>
       <groupId>com.google.cloud</groupId>
       <artifactId>libraries-bom</artifactId>
-      <version>5.5.0</version>
+      <version>8.0.0</version>
       <type>pom</type>
       <scope>import</scope>
      </dependency>
diff --git a/google-http-client-apache-v2/pom.xml b/google-http-client-apache-v2/pom.xml
index 85f0d6ee..cf8f37e9 100644
--- a/google-http-client-apache-v2/pom.xml
+++ b/google-http-client-apache-v2/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ApacheHttpTransport.java b/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ApacheHttpTransport.java
index 864dd072..02fb98a3 100644
--- a/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ApacheHttpTransport.java
+++ b/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ApacheHttpTransport.java
@@ -38,19 +38,15 @@ import org.apache.http.impl.conn.SystemDefaultRoutePlanner;
 /**
  * Thread-safe HTTP transport based on the Apache HTTP Client library.
  *
- * <p>
- * Implementation is thread-safe, as long as any parameter modification to the
- * {@link #getHttpClient() Apache HTTP Client} is only done at initialization time. For maximum
- * efficiency, applications should use a single globally-shared instance of the HTTP transport.
- * </p>
+ * <p>Implementation is thread-safe, as long as any parameter modification to the {@link
+ * #getHttpClient() Apache HTTP Client} is only done at initialization time. For maximum efficiency,
+ * applications should use a single globally-shared instance of the HTTP transport.
  *
- * <p>
- * Default settings are specified in {@link #newDefaultHttpClient()}. Use the
- * {@link #ApacheHttpTransport(HttpClient)} constructor to override the Apache HTTP Client used.
- * Please read the <a
+ * <p>Default settings are specified in {@link #newDefaultHttpClient()}. Use the {@link
+ * #ApacheHttpTransport(HttpClient)} constructor to override the Apache HTTP Client used. Please
+ * read the <a
  * href="http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html">Apache HTTP
  * Client connection management tutorial</a> for more complex configuration options.
- * </p>
  *
  * @since 1.30
  * @author Yaniv Inbar
@@ -72,20 +68,18 @@ public final class ApacheHttpTransport extends HttpTransport {
   /**
    * Constructor that allows an alternative Apache HTTP client to be used.
    *
-   * <p>
-   * Note that in the previous version, we overrode several settings. However, we are no longer able
-   * to do so.
-   * </p>
+   * <p>Note that in the previous version, we overrode several settings. However, we are no longer
+   * able to do so.
+   *
+   * <p>If you choose to provide your own Apache HttpClient implementation, be sure that
    *
-   * <p>If you choose to provide your own Apache HttpClient implementation, be sure that</p>
    * <ul>
-   * <li>HTTP version is set to 1.1.</li>
-   * <li>Redirects are disabled (google-http-client handles redirects).</li>
-   * <li>Retries are disabled (google-http-client handles retries).</li>
+   *   <li>HTTP version is set to 1.1.
+   *   <li>Redirects are disabled (google-http-client handles redirects).
+   *   <li>Retries are disabled (google-http-client handles retries).
    * </ul>
    *
    * @param httpClient Apache HTTP client to use
-   *
    * @since 1.30
    */
   public ApacheHttpTransport(HttpClient httpClient) {
@@ -93,20 +87,19 @@ public final class ApacheHttpTransport extends HttpTransport {
   }
 
   /**
-   * Creates a new instance of the Apache HTTP client that is used by the
-   * {@link #ApacheHttpTransport()} constructor.
+   * Creates a new instance of the Apache HTTP client that is used by the {@link
+   * #ApacheHttpTransport()} constructor.
+   *
+   * <p>Settings:
    *
-   * <p>
-   * Settings:
-   * </p>
    * <ul>
-   * <li>The client connection manager is set to {@link PoolingHttpClientConnectionManager}.</li>
-   * <li><The retry mechanism is turned off using
-   * {@link HttpClientBuilder#disableRedirectHandling}.</li>
-   * <li>The route planner uses {@link SystemDefaultRoutePlanner} with
-   * {@link ProxySelector#getDefault()}, which uses the proxy settings from <a
-   * href="https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html">system
-   * properties</a>.</li>
+   *   <li>The client connection manager is set to {@link PoolingHttpClientConnectionManager}.
+   *   <li><The retry mechanism is turned off using {@link
+   *       HttpClientBuilder#disableRedirectHandling}.
+   *   <li>The route planner uses {@link SystemDefaultRoutePlanner} with {@link
+   *       ProxySelector#getDefault()}, which uses the proxy settings from <a
+   *       href="https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html">system
+   *       properties</a>.
    * </ul>
    *
    * @return new instance of the Apache HTTP client
@@ -117,20 +110,19 @@ public final class ApacheHttpTransport extends HttpTransport {
   }
 
   /**
-   * Creates a new Apache HTTP client builder that is used by the
-   * {@link #ApacheHttpTransport()} constructor.
+   * Creates a new Apache HTTP client builder that is used by the {@link #ApacheHttpTransport()}
+   * constructor.
+   *
+   * <p>Settings:
    *
-   * <p>
-   * Settings:
-   * </p>
    * <ul>
-   * <li>The client connection manager is set to {@link PoolingHttpClientConnectionManager}.</li>
-   * <li><The retry mechanism is turned off using
-   * {@link HttpClientBuilder#disableRedirectHandling}.</li>
-   * <li>The route planner uses {@link SystemDefaultRoutePlanner} with
-   * {@link ProxySelector#getDefault()}, which uses the proxy settings from <a
-   * href="http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html">system
-   * properties</a>.</li>
+   *   <li>The client connection manager is set to {@link PoolingHttpClientConnectionManager}.
+   *   <li><The retry mechanism is turned off using {@link
+   *       HttpClientBuilder#disableRedirectHandling}.
+   *   <li>The route planner uses {@link SystemDefaultRoutePlanner} with {@link
+   *       ProxySelector#getDefault()}, which uses the proxy settings from <a
+   *       href="http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html">system
+   *       properties</a>.
    * </ul>
    *
    * @return new instance of the Apache HTTP client
@@ -139,14 +131,14 @@ public final class ApacheHttpTransport extends HttpTransport {
   public static HttpClientBuilder newDefaultHttpClientBuilder() {
 
     return HttpClientBuilder.create()
-            .useSystemProperties()
-            .setSSLSocketFactory(SSLConnectionSocketFactory.getSocketFactory())
-            .setMaxConnTotal(200)
-            .setMaxConnPerRoute(20)
-            .setConnectionTimeToLive(-1, TimeUnit.MILLISECONDS)
-            .setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault()))
-            .disableRedirectHandling()
-            .disableAutomaticRetries();
+        .useSystemProperties()
+        .setSSLSocketFactory(SSLConnectionSocketFactory.getSocketFactory())
+        .setMaxConnTotal(200)
+        .setMaxConnPerRoute(20)
+        .setConnectionTimeToLive(-1, TimeUnit.MILLISECONDS)
+        .setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault()))
+        .disableRedirectHandling()
+        .disableAutomaticRetries();
   }
 
   @Override
diff --git a/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ContentEntity.java b/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ContentEntity.java
index 8fc11e6d..451b67f2 100644
--- a/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ContentEntity.java
+++ b/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ContentEntity.java
@@ -21,9 +21,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import org.apache.http.entity.AbstractHttpEntity;
 
-/**
- * @author Yaniv Inbar
- */
+/** @author Yaniv Inbar */
 final class ContentEntity extends AbstractHttpEntity {
 
   /** Content length or less than zero if not known. */
diff --git a/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/package-info.java b/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/package-info.java
index 1909a2f7..7ca1708a 100644
--- a/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/package-info.java
+++ b/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/package-info.java
@@ -18,6 +18,4 @@
  * @since 1.30
  * @author Yaniv Inbar
  */
-
 package com.google.api.client.http.apache.v2;
-
diff --git a/google-http-client-bom/pom.xml b/google-http-client-bom/pom.xml
index 52105098..6cecf3f2 100644
--- a/google-http-client-bom/pom.xml
+++ b/google-http-client-bom/pom.xml
@@ -136,11 +136,27 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-site-plugin</artifactId>
-        <version>3.9.0</version>
+        <version>3.9.1</version>
         <configuration>
           <skip>true</skip>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>com.coveo</groupId>
+        <artifactId>fmt-maven-plugin</artifactId>
+        <version>2.9</version>
+        <configuration>
+          <style>google</style>
+          <verbose>true</verbose>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>com.google.googlejavaformat</groupId>
+            <artifactId>google-java-format</artifactId>
+            <version>1.7</version>
+          </dependency>
+        </dependencies>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/google-http-client-findbugs/src/main/java/com/google/api/client/findbugs/package-info.java b/google-http-client-findbugs/src/main/java/com/google/api/client/findbugs/package-info.java
index c22541fb..83168807 100644
--- a/google-http-client-findbugs/src/main/java/com/google/api/client/findbugs/package-info.java
+++ b/google-http-client-findbugs/src/main/java/com/google/api/client/findbugs/package-info.java
@@ -15,28 +15,26 @@
 /**
  * Findbugs package which supports custom Google APIs Client library findbugs Plugins.
  *
- * Usage on pom.xml:
+ * <p>Usage on pom.xml:
  *
  * <pre>
-  &lt;plugin&gt;
-    &lt;groupId>org.codehaus.mojo&lt;/groupId&gt;
-    &lt;artifactId>findbugs-maven-plugin&lt;/artifactId&gt;
-    ...
-    &lt;configuration&gt;
-      &lt;plugins&gt;
-        &lt;plugin&gt;
-          &lt;groupId&gt;com.google.http-client&lt;/groupId&gt;
-          &lt;artifactId&gt;google-http-client-findbugs&lt;/artifactId&gt;
-          &lt;version&gt;${project.http.version}&lt;/version&gt;
-        &lt;/plugin&gt;
-       &lt;/plugins&gt;
-    &lt;/configuration&gt;
-    ...
-  &lt;/plugin&gt;
+ * &lt;plugin&gt;
+ * &lt;groupId>org.codehaus.mojo&lt;/groupId&gt;
+ * &lt;artifactId>findbugs-maven-plugin&lt;/artifactId&gt;
+ * ...
+ * &lt;configuration&gt;
+ * &lt;plugins&gt;
+ * &lt;plugin&gt;
+ * &lt;groupId&gt;com.google.http-client&lt;/groupId&gt;
+ * &lt;artifactId&gt;google-http-client-findbugs&lt;/artifactId&gt;
+ * &lt;version&gt;${project.http.version}&lt;/version&gt;
+ * &lt;/plugin&gt;
+ * &lt;/plugins&gt;
+ * &lt;/configuration&gt;
+ * ...
+ * &lt;/plugin&gt;
  * </pre>
  *
  * @author Eyal Peled
  */
-
 package com.google.api.client.findbugs;
-
diff --git a/google-http-client-gson/pom.xml b/google-http-client-gson/pom.xml
index 7631b01b..a29eba42 100644
--- a/google-http-client-gson/pom.xml
+++ b/google-http-client-gson/pom.xml
@@ -39,7 +39,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-jackson2/pom.xml b/google-http-client-jackson2/pom.xml
index 7b7e7b37..07a0b54f 100644
--- a/google-http-client-jackson2/pom.xml
+++ b/google-http-client-jackson2/pom.xml
@@ -39,7 +39,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-jackson2/src/main/java/com/google/api/client/json/jackson2/JacksonFactory.java b/google-http-client-jackson2/src/main/java/com/google/api/client/json/jackson2/JacksonFactory.java
index 8028d63c..dba08c36 100644
--- a/google-http-client-jackson2/src/main/java/com/google/api/client/json/jackson2/JacksonFactory.java
+++ b/google-http-client-jackson2/src/main/java/com/google/api/client/json/jackson2/JacksonFactory.java
@@ -29,8 +29,8 @@ import java.nio.charset.Charset;
 /**
  * Low-level JSON library implementation based on Jackson 2.
  *
- * <p>Implementation is thread-safe. For maximum efficiency,
- * applications should use a single globally-shared instance of the JSON factory.
+ * <p>Implementation is thread-safe. For maximum efficiency, applications should use a single
+ * globally-shared instance of the JSON factory.
  *
  * @since 1.11
  * @author Yaniv Inbar
diff --git a/google-http-client-xml/pom.xml b/google-http-client-xml/pom.xml
index 480a1868..295ffd45 100644
--- a/google-http-client-xml/pom.xml
+++ b/google-http-client-xml/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-xml/src/main/java/com/google/api/client/xml/Xml.java b/google-http-client-xml/src/main/java/com/google/api/client/xml/Xml.java
index 4f9156d3..1aa5a343 100644
--- a/google-http-client-xml/src/main/java/com/google/api/client/xml/Xml.java
+++ b/google-http-client-xml/src/main/java/com/google/api/client/xml/Xml.java
@@ -195,10 +195,10 @@ public class Xml {
   /**
    * Parses an XML element using the given XML pull parser into the given destination object.
    *
-   * <p>Requires the current event be {@link XmlPullParser#START_TAG} (skipping any initial
-   * {@link XmlPullParser#START_DOCUMENT}) of the element being parsed. At normal parsing
-   * completion, the current event will either be {@link XmlPullParser#END_TAG} of the element being
-   * parsed, or the {@link XmlPullParser#START_TAG} of the requested {@code atom:entry}.
+   * <p>Requires the current event be {@link XmlPullParser#START_TAG} (skipping any initial {@link
+   * XmlPullParser#START_DOCUMENT}) of the element being parsed. At normal parsing completion, the
+   * current event will either be {@link XmlPullParser#END_TAG} of the element being parsed, or the
+   * {@link XmlPullParser#START_TAG} of the requested {@code atom:entry}.
    *
    * @param parser XML pull parser
    * @param destination optional destination object to parser into or {@code null} to ignore XML
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffIOExceptionHandler.java b/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffIOExceptionHandler.java
index 253cc613..a0874841 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffIOExceptionHandler.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffIOExceptionHandler.java
@@ -97,6 +97,8 @@ public class HttpBackOffIOExceptionHandler implements HttpIOExceptionHandler {
     try {
       return BackOffUtils.next(sleeper, backOff);
     } catch (InterruptedException exception) {
+      // Mark thread as interrupted since we cannot throw InterruptedException here.
+      Thread.currentThread().interrupt();
       return false;
     }
   }
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandler.java b/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandler.java
index 5e1ae2cc..cc44c613 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandler.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandler.java
@@ -128,7 +128,8 @@ public class HttpBackOffUnsuccessfulResponseHandler implements HttpUnsuccessfulR
       try {
         return BackOffUtils.next(sleeper, backOff);
       } catch (InterruptedException exception) {
-        // ignore
+        // Mark thread as interrupted since we cannot throw InterruptedException here.
+        Thread.currentThread().interrupt();
       }
     }
     return false;
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpIOExceptionHandler.java b/google-http-client/src/main/java/com/google/api/client/http/HttpIOExceptionHandler.java
index f37cfef5..0b0b877d 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpIOExceptionHandler.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpIOExceptionHandler.java
@@ -35,6 +35,7 @@ import java.io.IOException;
  * try {
  * return BackOffUtils.next(sleeper, backOff);
  * } catch (InterruptedException exception) {
+ * Thread.currentThread().interrupt();
  * return false;
  * }
  * }
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java b/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java
index 9124e490..a521c539 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpRequest.java
@@ -1223,7 +1223,8 @@ public final class HttpRequest {
     // attempt to read the library's version from a properties file generated during the build
     // this value should be read and cached for later use
     String version = "unknown-version";
-    try (InputStream inputStream = HttpRequest.class.getResourceAsStream("/google-http-client.properties")) {
+    try (InputStream inputStream =
+        HttpRequest.class.getResourceAsStream("/google-http-client.properties")) {
       if (inputStream != null) {
         final Properties properties = new Properties();
         properties.load(inputStream);
diff --git a/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java b/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java
index 276ce0e7..2df92d4c 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/HttpResponse.java
@@ -159,8 +159,8 @@ public final class HttpResponse {
   }
 
   /**
-   * Returns an {@link HttpMediaType} object parsed from {@link #contentType}, or {@code null} if
-   * if {@link #contentType} cannot be parsed or {@link #contentType} is {@code null}.
+   * Returns an {@link HttpMediaType} object parsed from {@link #contentType}, or {@code null} if if
+   * {@link #contentType} cannot be parsed or {@link #contentType} is {@code null}.
    */
   private static HttpMediaType parseMediaType(String contentType) {
     if (contentType == null) {
@@ -352,12 +352,14 @@ public final class HttpResponse {
           // gzip encoding (wrap content with GZipInputStream)
           if (!returnRawInputStream && this.contentEncoding != null) {
             String oontentencoding = this.contentEncoding.trim().toLowerCase(Locale.ENGLISH);
-            if (CONTENT_ENCODING_GZIP.equals(oontentencoding) || CONTENT_ENCODING_XGZIP.equals(oontentencoding)) {
+            if (CONTENT_ENCODING_GZIP.equals(oontentencoding)
+                || CONTENT_ENCODING_XGZIP.equals(oontentencoding)) {
               // Wrap the original stream in a ConsumingInputStream before passing it to
               // GZIPInputStream. The GZIPInputStream leaves content unconsumed in the original
               // stream (it almost always leaves the last chunk unconsumed in chunked responses).
               // ConsumingInputStream ensures that any unconsumed bytes are read at close.
-              // GZIPInputStream.close() --> ConsumingInputStream.close() --> exhaust(ConsumingInputStream)
+              // GZIPInputStream.close() --> ConsumingInputStream.close() -->
+              // exhaust(ConsumingInputStream)
               lowLevelResponseContent =
                   new GZIPInputStream(new ConsumingInputStream(lowLevelResponseContent));
             }
diff --git a/google-http-client/src/main/java/com/google/api/client/http/MultipartContent.java b/google-http-client/src/main/java/com/google/api/client/http/MultipartContent.java
index 43a58b44..35a59cf6 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/MultipartContent.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/MultipartContent.java
@@ -32,9 +32,9 @@ import java.util.UUID;
  * and <a href="http://tools.ietf.org/html/rfc1521#section-7.2.2">RFC 2046: Multipurpose Internet
  * Mail Extensions: The Multipart/mixed (primary) subtype</a>.
  *
- * <p>By default the media type is {@code "multipart/related; boundary=__END_OF_PART__<random UUID>__"}, but this
- * may be customized by calling {@link #setMediaType(HttpMediaType)}, {@link #getMediaType()}, or
- * {@link #setBoundary(String)}.
+ * <p>By default the media type is {@code "multipart/related; boundary=__END_OF_PART__<random
+ * UUID>__"}, but this may be customized by calling {@link #setMediaType(HttpMediaType)}, {@link
+ * #getMediaType()}, or {@link #setBoundary(String)}.
  *
  * <p>Implementation is not thread-safe.
  *
diff --git a/google-http-client/src/main/java/com/google/api/client/http/UriTemplate.java b/google-http-client/src/main/java/com/google/api/client/http/UriTemplate.java
index 61071db6..6a1e2e23 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/UriTemplate.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/UriTemplate.java
@@ -104,8 +104,8 @@ public class UriTemplate {
      * @param explodeJoiner the delimiter used to join composite values.
      * @param requiresVarAssignment denotes whether or not the expanded template should contain an
      *     assignment with the variable
-     * @param reservedExpansion reserved expansion allows percent-encoded triplets and characters in the
-     *     reserved set
+     * @param reservedExpansion reserved expansion allows percent-encoded triplets and characters in
+     *     the reserved set
      */
     CompositeOutput(
         Character propertyPrefix,
@@ -149,8 +149,8 @@ public class UriTemplate {
     }
 
     /**
-     * Encodes the specified value. If reserved expansion is turned on, then percent-encoded triplets and
-     * characters are allowed in the reserved set.
+     * Encodes the specified value. If reserved expansion is turned on, then percent-encoded
+     * triplets and characters are allowed in the reserved set.
      *
      * @param value the string to be encoded
      * @return the encoded string
diff --git a/google-http-client/src/main/java/com/google/api/client/http/UrlEncodedParser.java b/google-http-client/src/main/java/com/google/api/client/http/UrlEncodedParser.java
index 14c3238f..6c432e67 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/UrlEncodedParser.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/UrlEncodedParser.java
@@ -124,10 +124,10 @@ public class UrlEncodedParser implements ObjectParser {
    * @param data data key name/value pairs
    * @since 1.14
    */
-    public static void parse(Reader reader, Object data) throws IOException {
-      parse(reader, data, true);
-    }
- 
+  public static void parse(Reader reader, Object data) throws IOException {
+    parse(reader, data, true);
+  }
+
   /**
    * Parses the given URL-encoded content into the given data object of data key name/value pairs,
    * including support for repeating data key names.
@@ -139,10 +139,9 @@ public class UrlEncodedParser implements ObjectParser {
    * They are parsed the same as "primitive" fields, except that the generic type parameter of the
    * collection is used as the {@link Class} parameter.
    *
-   * <p>If there is no declared field for an input parameter name, it is ignored unless the
-   * input {@code data} parameter is a {@link Map}. If it is a map, the parameter value is 
-   * stored either as a string, or as a {@link ArrayList}&lt;String&gt; in the case of repeated
-   * parameters.
+   * <p>If there is no declared field for an input parameter name, it is ignored unless the input
+   * {@code data} parameter is a {@link Map}. If it is a map, the parameter value is stored either
+   * as a string, or as a {@link ArrayList}&lt;String&gt; in the case of repeated parameters.
    *
    * @param reader URL-encoded reader
    * @param data data key name/value pairs
@@ -168,9 +167,13 @@ public class UrlEncodedParser implements ObjectParser {
           // falls through
         case '&':
           // parse name/value pair
-          String name = decodeEnabled ?  CharEscapers.decodeUri(nameWriter.toString()) : nameWriter.toString();
+          String name =
+              decodeEnabled ? CharEscapers.decodeUri(nameWriter.toString()) : nameWriter.toString();
           if (name.length() != 0) {
-            String stringValue = decodeEnabled ? CharEscapers.decodeUri(valueWriter.toString()) : valueWriter.toString();
+            String stringValue =
+                decodeEnabled
+                    ? CharEscapers.decodeUri(valueWriter.toString())
+                    : valueWriter.toString();
             // get the field from the type information
             FieldInfo fieldInfo = classInfo.getFieldInfo(name);
             if (fieldInfo != null) {
diff --git a/google-http-client/src/main/java/com/google/api/client/http/apache/ApacheHttpTransport.java b/google-http-client/src/main/java/com/google/api/client/http/apache/ApacheHttpTransport.java
index ce5e59d5..890bdf2f 100644
--- a/google-http-client/src/main/java/com/google/api/client/http/apache/ApacheHttpTransport.java
+++ b/google-http-client/src/main/java/com/google/api/client/http/apache/ApacheHttpTransport.java
@@ -74,8 +74,8 @@ import org.apache.http.params.HttpProtocolParams;
  *
  * @since 1.0
  * @author Yaniv Inbar
- * @deprecated Please use com.google.api.client.http.apache.v2.ApacheHttpTransport provided by
- *     the com.google.http-client:google-http-client-apache-v2 artifact.
+ * @deprecated Please use com.google.api.client.http.apache.v2.ApacheHttpTransport provided by the
+ *     com.google.http-client:google-http-client-apache-v2 artifact.
  */
 @Deprecated
 public final class ApacheHttpTransport extends HttpTransport {
diff --git a/google-http-client/src/main/java/com/google/api/client/json/JsonString.java b/google-http-client/src/main/java/com/google/api/client/json/JsonString.java
index 68b3b2f9..2d0a2ba7 100644
--- a/google-http-client/src/main/java/com/google/api/client/json/JsonString.java
+++ b/google-http-client/src/main/java/com/google/api/client/json/JsonString.java
@@ -40,8 +40,8 @@ import java.lang.annotation.Target;
  * </code>
  * </pre>
  *
- * <p>However, if instead the JSON content uses a JSON String to store the value, one needs to use the
- * {@link JsonString} annotation. For example:
+ * <p>However, if instead the JSON content uses a JSON String to store the value, one needs to use
+ * the {@link JsonString} annotation. For example:
  *
  * <pre>
  * <code>
diff --git a/google-http-client/src/main/java/com/google/api/client/json/webtoken/DerEncoder.java b/google-http-client/src/main/java/com/google/api/client/json/webtoken/DerEncoder.java
index ce7c42f1..7d3b465b 100644
--- a/google-http-client/src/main/java/com/google/api/client/json/webtoken/DerEncoder.java
+++ b/google-http-client/src/main/java/com/google/api/client/json/webtoken/DerEncoder.java
@@ -17,16 +17,14 @@
 package com.google.api.client.json.webtoken;
 
 import com.google.api.client.util.Preconditions;
-
 import java.math.BigInteger;
 import java.util.Arrays;
 
 /**
  * Utilities for re-encoding a signature byte array with DER encoding.
  *
- * <p>Note: that this is not a general purpose encoder and currently only
- * handles 512 bit signatures. ES256 verification algorithms expect the
- * signature bytes in DER encoding.
+ * <p>Note: that this is not a general purpose encoder and currently only handles 512 bit
+ * signatures. ES256 verification algorithms expect the signature bytes in DER encoding.
  */
 public class DerEncoder {
   private static byte DER_TAG_SIGNATURE_OBJECT = 0x30;
diff --git a/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebSignature.java b/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebSignature.java
index aa21dbe2..4886b792 100644
--- a/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebSignature.java
+++ b/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebSignature.java
@@ -23,14 +23,12 @@ import com.google.api.client.util.SecurityUtils;
 import com.google.api.client.util.StringUtils;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.math.BigInteger;
 import java.security.GeneralSecurityException;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
 import java.security.PrivateKey;
 import java.security.PublicKey;
-import java.security.Signature;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -78,8 +76,7 @@ public class JsonWebSignature extends JsonWebToken {
   }
 
   /**
-   * Header as specified in 
-   * <a href="https://tools.ietf.org/html/rfc7515#section-4.1">Reserved
+   * Header as specified in <a href="https://tools.ietf.org/html/rfc7515#section-4.1">Reserved
    * Header Parameter Names</a>.
    */
   public static class Header extends JsonWebToken.Header {
@@ -305,8 +302,8 @@ public class JsonWebSignature extends JsonWebToken {
     }
 
     /**
-     * Returns an array listing the header parameter names that define extensions used in
-     * the JWS header that MUST be understood and processed or {@code null} for none.
+     * Returns an array listing the header parameter names that define extensions used in the JWS
+     * header that MUST be understood and processed or {@code null} for none.
      *
      * @since 1.16
      */
@@ -318,8 +315,8 @@ public class JsonWebSignature extends JsonWebToken {
     }
 
     /**
-     * Sets the header parameter names that define extensions used in the
-     * JWS header that MUST be understood and processed or {@code null} for none.
+     * Sets the header parameter names that define extensions used in the JWS header that MUST be
+     * understood and processed or {@code null} for none.
      *
      * <p>Overriding is only supported for the purpose of calling the super implementation and
      * changing the return type, but nothing else.
@@ -350,8 +347,8 @@ public class JsonWebSignature extends JsonWebToken {
   /**
    * Verifies the signature of the content.
    *
-   * <p>Currently only {@code "RS256"} and {@code "ES256"} algorithms are verified, but others may be added in the
-   * future. For any other algorithm it returns {@code false}.
+   * <p>Currently only {@code "RS256"} and {@code "ES256"} algorithms are verified, but others may
+   * be added in the future. For any other algorithm it returns {@code false}.
    *
    * @param publicKey public key
    * @return whether the algorithm is recognized and it is verified
@@ -360,9 +357,17 @@ public class JsonWebSignature extends JsonWebToken {
   public final boolean verifySignature(PublicKey publicKey) throws GeneralSecurityException {
     String algorithm = getHeader().getAlgorithm();
     if ("RS256".equals(algorithm)) {
-      return SecurityUtils.verify(SecurityUtils.getSha256WithRsaSignatureAlgorithm(), publicKey, signatureBytes, signedContentBytes);
+      return SecurityUtils.verify(
+          SecurityUtils.getSha256WithRsaSignatureAlgorithm(),
+          publicKey,
+          signatureBytes,
+          signedContentBytes);
     } else if ("ES256".equals(algorithm)) {
-      return SecurityUtils.verify(SecurityUtils.getEs256SignatureAlgorithm(), publicKey, DerEncoder.encode(signatureBytes), signedContentBytes);
+      return SecurityUtils.verify(
+          SecurityUtils.getEs256SignatureAlgorithm(),
+          publicKey,
+          DerEncoder.encode(signatureBytes),
+          signedContentBytes);
     } else {
       return false;
     }
@@ -372,8 +377,8 @@ public class JsonWebSignature extends JsonWebToken {
    * {@link Beta} <br>
    * Verifies the signature of the content using the certificate chain embedded in the signature.
    *
-   * <p>Currently only {@code "RS256"} and {@code "ES256"} algorithms are verified, but others may be added in the
-   * future. For any other algorithm it returns {@code null}.
+   * <p>Currently only {@code "RS256"} and {@code "ES256"} algorithms are verified, but others may
+   * be added in the future. For any other algorithm it returns {@code null}.
    *
    * <p>The leaf certificate of the certificate chain must be an SSL server certificate.
    *
@@ -392,9 +397,19 @@ public class JsonWebSignature extends JsonWebToken {
     }
     String algorithm = getHeader().getAlgorithm();
     if ("RS256".equals(algorithm)) {
-      return SecurityUtils.verify(SecurityUtils.getSha256WithRsaSignatureAlgorithm(), trustManager, x509Certificates, signatureBytes, signedContentBytes);
+      return SecurityUtils.verify(
+          SecurityUtils.getSha256WithRsaSignatureAlgorithm(),
+          trustManager,
+          x509Certificates,
+          signatureBytes,
+          signedContentBytes);
     } else if ("ES256".equals(algorithm)) {
-      return SecurityUtils.verify(SecurityUtils.getEs256SignatureAlgorithm(), trustManager, x509Certificates, DerEncoder.encode(signatureBytes), signedContentBytes);
+      return SecurityUtils.verify(
+          SecurityUtils.getEs256SignatureAlgorithm(),
+          trustManager,
+          x509Certificates,
+          DerEncoder.encode(signatureBytes),
+          signedContentBytes);
     } else {
       return null;
     }
diff --git a/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebToken.java b/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebToken.java
index f6845019..bfcf63fe 100644
--- a/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebToken.java
+++ b/google-http-client/src/main/java/com/google/api/client/json/webtoken/JsonWebToken.java
@@ -47,8 +47,7 @@ public class JsonWebToken {
   }
 
   /**
-   * Header as specified in 
-   * <a href="https://tools.ietf.org/html/rfc7519#section-5">JWT Header</a>.
+   * Header as specified in <a href="https://tools.ietf.org/html/rfc7519#section-5">JWT Header</a>.
    */
   public static class Header extends GenericJson {
 
@@ -115,9 +114,8 @@ public class JsonWebToken {
   }
 
   /**
-   * Payload as specified in 
-   * <a href="https://tools.ietf.org/html/rfc7519#section-4.1">Reserved Claim
-   * Names</a>.
+   * Payload as specified in <a href="https://tools.ietf.org/html/rfc7519#section-4.1">Reserved
+   * Claim Names</a>.
    */
   public static class Payload extends GenericJson {
 
diff --git a/google-http-client/src/main/java/com/google/api/client/util/PemReader.java b/google-http-client/src/main/java/com/google/api/client/util/PemReader.java
index 607d80de..a1f06a3b 100644
--- a/google-http-client/src/main/java/com/google/api/client/util/PemReader.java
+++ b/google-http-client/src/main/java/com/google/api/client/util/PemReader.java
@@ -36,7 +36,9 @@ import java.util.regex.Pattern;
  *
  * <p>Limitations:
  *
- * <p><ul>
+ * <p>
+ *
+ * <ul>
  *   <li>Assumes the PEM file section content is not encrypted and cannot handle the case of any
  *       headers inside the BEGIN and END tag.
  *   <li>It also ignores any attributes associated with any PEM file section.
diff --git a/google-http-client/src/main/java/com/google/api/client/util/escape/CharEscapers.java b/google-http-client/src/main/java/com/google/api/client/util/escape/CharEscapers.java
index 9d61f8af..4350f271 100644
--- a/google-http-client/src/main/java/com/google/api/client/util/escape/CharEscapers.java
+++ b/google-http-client/src/main/java/com/google/api/client/util/escape/CharEscapers.java
@@ -1,17 +1,17 @@
 /*
- * Copyright (c) 2010 Google Inc.
+* Copyright (c) 2010 Google Inc.
 
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
+*
+* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software distributed under the License
+* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+* or implied. See the License for the specific language governing permissions and limitations under
+* the License.
+*/
 
 package com.google.api.client.util.escape;
 
@@ -46,12 +46,11 @@ public final class CharEscapers {
 
   /**
    * Escapes the string value so it can be safely included in application/x-www-form-urlencoded
-   * data. This is not appropriate for generic URI escaping. In particular it encodes
-   * the space character as a plus sign instead of percent escaping it, in 
-   * contravention of the URI specification.
-   * For details on application/x-www-form-urlencoded encoding see the 
-   * see <a href="https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1">HTML 4
-   * specification, section 17.13.4.1</a>.
+   * data. This is not appropriate for generic URI escaping. In particular it encodes the space
+   * character as a plus sign instead of percent escaping it, in contravention of the URI
+   * specification. For details on application/x-www-form-urlencoded encoding see the see <a
+   * href="https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1">HTML 4 specification,
+   * section 17.13.4.1</a>.
    *
    * <p>When encoding a String, the following rules apply:
    *
@@ -80,11 +79,11 @@ public final class CharEscapers {
   public static String escapeUri(String value) {
     return APPLICATION_X_WWW_FORM_URLENCODED.escape(value);
   }
-  
-    /**
-   * Escapes the string value so it can be safely included in any part of a URI.
-   * For details on escaping URIs,
-   * see <a href="http://tools.ietf.org/html/rfc3986#section-2.4">RFC 3986 - section 2.4</a>.
+
+  /**
+   * Escapes the string value so it can be safely included in any part of a URI. For details on
+   * escaping URIs, see <a href="http://tools.ietf.org/html/rfc3986#section-2.4">RFC 3986 - section
+   * 2.4</a>.
    *
    * <p>When encoding a String, the following rules apply:
    *
@@ -108,11 +107,11 @@ public final class CharEscapers {
   }
 
   /**
-   * Decodes application/x-www-form-urlencoded strings. The UTF-8 character set determines
-   * what characters are represented by any consecutive sequences of the form "%<i>XX</i>".
+   * Decodes application/x-www-form-urlencoded strings. The UTF-8 character set determines what
+   * characters are represented by any consecutive sequences of the form "%<i>XX</i>".
    *
-   * <p>This replaces each occurrence of '+' with a space, ' '. This method should not be used
-   * for non-application/x-www-form-urlencoded strings such as host and path.
+   * <p>This replaces each occurrence of '+' with a space, ' '. This method should not be used for
+   * non-application/x-www-form-urlencoded strings such as host and path.
    *
    * @param uri a percent-encoded US-ASCII string
    * @return a string without any percent escapes or plus signs
@@ -127,9 +126,9 @@ public final class CharEscapers {
   }
 
   /**
-   * Decodes the path component of a URI. This does not 
-   * convert + into spaces (the behavior of {@link java.net.URLDecoder#decode(String, String)}). This
-   * method transforms URI encoded values into their decoded symbols.
+   * Decodes the path component of a URI. This does not convert + into spaces (the behavior of
+   * {@link java.net.URLDecoder#decode(String, String)}). This method transforms URI encoded values
+   * into their decoded symbols.
    *
    * <p>e.g. {@code decodePath("%3Co%3E")} returns {@code "<o>"}
    *
diff --git a/google-http-client/src/main/java/com/google/api/client/util/escape/PercentEscaper.java b/google-http-client/src/main/java/com/google/api/client/util/escape/PercentEscaper.java
index 84f635cd..3866265a 100644
--- a/google-http-client/src/main/java/com/google/api/client/util/escape/PercentEscaper.java
+++ b/google-http-client/src/main/java/com/google/api/client/util/escape/PercentEscaper.java
@@ -16,8 +16,7 @@ package com.google.api.client.util.escape;
 
 /**
  * A {@code UnicodeEscaper} that escapes some set of Java characters using the URI percent encoding
- * scheme. The set of safe characters (those which remain unescaped) is specified on
- * construction.
+ * scheme. The set of safe characters (those which remain unescaped) is specified on construction.
  *
  * <p>For details on escaping URIs for use in web pages, see <a
  * href="http://tools.ietf.org/html/rfc3986#section-2.4">RFC 3986 - section 2.4</a> and <a
@@ -29,25 +28,22 @@ package com.google.api.client.util.escape;
  *   <li>The alphanumeric characters "a" through "z", "A" through "Z" and "0" through "9" remain the
  *       same.
  *   <li>Any additionally specified safe characters remain the same.
- *   <li>If {@code plusForSpace} is true, the space character " " is converted into a plus
- *       sign "+".
- *   <li>All other characters are converted into one or more bytes using UTF-8 encoding. Each
- *       byte is then represented by the 3-character string "%XY", where "XY" is the two-digit,
+ *   <li>If {@code plusForSpace} is true, the space character " " is converted into a plus sign "+".
+ *   <li>All other characters are converted into one or more bytes using UTF-8 encoding. Each byte
+ *       is then represented by the 3-character string "%XY", where "XY" is the two-digit,
  *       uppercase, hexadecimal representation of the byte value.
  * </ul>
  *
- * <p>RFC 3986 defines the set of unreserved characters as "-", "_", "~", and "."
- * It goes on to state:
+ * <p>RFC 3986 defines the set of unreserved characters as "-", "_", "~", and "." It goes on to
+ * state:
  *
- * <p><q>URIs that differ in the replacement of an unreserved character with
-   its corresponding percent-encoded US-ASCII octet are equivalent: they
-   identify the same resource.  However, URI comparison implementations
-   do not always perform normalization prior to comparison (see Section
-   6).  For consistency, percent-encoded octets in the ranges of ALPHA
-   (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E),
-   underscore (%5F), or tilde (%7E) should not be created by URI
-   producers and, when found in a URI, should be decoded to their
-   corresponding unreserved characters by URI normalizers.</q>
+ * <p><q>URIs that differ in the replacement of an unreserved character with its corresponding
+ * percent-encoded US-ASCII octet are equivalent: they identify the same resource. However, URI
+ * comparison implementations do not always perform normalization prior to comparison (see Section
+ * 6). For consistency, percent-encoded octets in the ranges of ALPHA (%41-%5A and %61-%7A), DIGIT
+ * (%30-%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should not be created by
+ * URI producers and, when found in a URI, should be decoded to their corresponding unreserved
+ * characters by URI normalizers.</q>
  *
  * <p><b>Note</b>: This escaper produces uppercase hexadecimal sequences. From <a
  * href="https://tools.ietf.org/html/rfc3986">RFC 3986</a>:<br>
@@ -103,10 +99,10 @@ public class PercentEscaper extends UnicodeEscaper {
    * escaped.
    */
   private final boolean[] safeOctets;
-  
+
   /**
-   * Constructs a URI escaper with the specified safe characters. The space
-   * character is escaped to %20 in accordance with the URI specification. 
+   * Constructs a URI escaper with the specified safe characters. The space character is escaped to
+   * %20 in accordance with the URI specification.
    *
    * @param safeChars a non null string specifying additional safe characters for this escaper (the
    *     ranges 0..9, a..z and A..Z are always safe and should not be specified here)
@@ -117,9 +113,9 @@ public class PercentEscaper extends UnicodeEscaper {
   }
 
   /**
-   * Constructs a URI escaper that converts all but the specified safe characters 
-   * into hexadecimal percent escapes. Optionally space characters can be converted into
-   * a plus sign {@code +} instead of {@code %20}. and optional handling of the space
+   * Constructs a URI escaper that converts all but the specified safe characters into hexadecimal
+   * percent escapes. Optionally space characters can be converted into a plus sign {@code +}
+   * instead of {@code %20}. and optional handling of the space
    *
    * @param safeChars a non null string specifying additional safe characters for this escaper. The
    *     ranges 0..9, a..z and A..Z are always safe and should not be specified here.
@@ -127,8 +123,8 @@ public class PercentEscaper extends UnicodeEscaper {
    * @throws IllegalArgumentException if safeChars includes characters that are always safe or
    *     characters that must always be escaped
    * @deprecated use {@code PercentEscaper(String safeChars)} instead which is the same as invoking
-   *     this method with plusForSpace set to false. Escaping spaces as plus signs does not
-   *     conform to the URI specification.
+   *     this method with plusForSpace set to false. Escaping spaces as plus signs does not conform
+   *     to the URI specification.
    */
   @Deprecated
   public PercentEscaper(String safeChars, boolean plusForSpace) {
diff --git a/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java b/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java
index 838dcb5d..a39356ff 100644
--- a/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java
+++ b/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java
@@ -16,7 +16,6 @@ package com.google.api.client.util.store;
 
 import com.google.api.client.util.IOUtils;
 import com.google.api.client.util.Maps;
-
 import com.google.common.base.StandardSystemProperty;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -43,8 +42,8 @@ import java.util.logging.Logger;
 /**
  * Thread-safe file implementation of a credential store.
  *
- * <p>For security purposes, the file's permissions are set such that the
- * file is only accessible by the file's owner.
+ * <p>For security purposes, the file's permissions are set such that the file is only accessible by
+ * the file's owner.
  *
  * @since 1.16
  * @author Yaniv Inbar
@@ -53,8 +52,8 @@ public class FileDataStoreFactory extends AbstractDataStoreFactory {
 
   private static final Logger LOGGER = Logger.getLogger(FileDataStoreFactory.class.getName());
 
-  private static final boolean IS_WINDOWS = StandardSystemProperty.OS_NAME.value()
-      .toLowerCase(Locale.ENGLISH).startsWith("windows");
+  private static final boolean IS_WINDOWS =
+      StandardSystemProperty.OS_NAME.value().toLowerCase(Locale.ENGLISH).startsWith("windows");
 
   /** Directory to store data. */
   private final File dataDirectory;
@@ -151,35 +150,37 @@ public class FileDataStoreFactory extends AbstractDataStoreFactory {
 
   private static void setPermissionsToOwnerOnlyWindows(File file) throws IOException {
     Path path = Paths.get(file.getAbsolutePath());
-    FileOwnerAttributeView fileAttributeView = Files.getFileAttributeView(path, FileOwnerAttributeView.class);
+    FileOwnerAttributeView fileAttributeView =
+        Files.getFileAttributeView(path, FileOwnerAttributeView.class);
     UserPrincipal owner = fileAttributeView.getOwner();
 
     // get view
     AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
 
     // All available entries
-    Set<AclEntryPermission> permissions = ImmutableSet.of(
-        AclEntryPermission.APPEND_DATA,
-        AclEntryPermission.DELETE,
-        AclEntryPermission.DELETE_CHILD,
-        AclEntryPermission.READ_ACL,
-        AclEntryPermission.READ_ATTRIBUTES,
-        AclEntryPermission.READ_DATA,
-        AclEntryPermission.READ_NAMED_ATTRS,
-        AclEntryPermission.SYNCHRONIZE,
-        AclEntryPermission.WRITE_ACL,
-        AclEntryPermission.WRITE_ATTRIBUTES,
-        AclEntryPermission.WRITE_DATA,
-        AclEntryPermission.WRITE_NAMED_ATTRS,
-        AclEntryPermission.WRITE_OWNER
-    );
+    Set<AclEntryPermission> permissions =
+        ImmutableSet.of(
+            AclEntryPermission.APPEND_DATA,
+            AclEntryPermission.DELETE,
+            AclEntryPermission.DELETE_CHILD,
+            AclEntryPermission.READ_ACL,
+            AclEntryPermission.READ_ATTRIBUTES,
+            AclEntryPermission.READ_DATA,
+            AclEntryPermission.READ_NAMED_ATTRS,
+            AclEntryPermission.SYNCHRONIZE,
+            AclEntryPermission.WRITE_ACL,
+            AclEntryPermission.WRITE_ATTRIBUTES,
+            AclEntryPermission.WRITE_DATA,
+            AclEntryPermission.WRITE_NAMED_ATTRS,
+            AclEntryPermission.WRITE_OWNER);
 
     // create ACL to give owner everything
-    AclEntry entry = AclEntry.newBuilder()
-        .setType(AclEntryType.ALLOW)
-        .setPrincipal(owner)
-        .setPermissions(permissions)
-        .build();
+    AclEntry entry =
+        AclEntry.newBuilder()
+            .setType(AclEntryType.ALLOW)
+            .setPrincipal(owner)
+            .setPermissions(permissions)
+            .build();
 
     // Overwrite the ACL with only this permission
     try {
@@ -187,6 +188,5 @@ public class FileDataStoreFactory extends AbstractDataStoreFactory {
     } catch (SecurityException ex) {
       throw new IOException("Unable to set permissions for " + file, ex);
     }
-
   }
 }
diff --git a/pom.xml b/pom.xml
index 443ccb9b..3d6505d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -276,7 +276,7 @@
         </plugin>
         <plugin>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.2.0</version>
+          <version>3.3.0</version>
         </plugin>
         <plugin>
           <artifactId>maven-compiler-plugin</artifactId>
@@ -330,7 +330,7 @@
         </plugin>
         <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>3.0.0-M4</version>
+          <version>3.0.0-M5</version>
           <configuration>
             <argLine>-Xmx1024m</argLine>
             <reportNameSuffix>sponge_log</reportNameSuffix>
@@ -359,12 +359,12 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-project-info-reports-plugin</artifactId>
-          <version>3.0.0</version>
+          <version>3.1.0</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-site-plugin</artifactId>
-          <version>3.9.0</version>
+          <version>3.9.1</version>
         </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
@@ -517,7 +517,7 @@
       <!-- Build the dependencies report at package time (needed for the assembly artifact). -->
       <plugin>
         <artifactId>maven-project-info-reports-plugin</artifactId>
-        <version>3.0.0</version>
+        <version>3.1.0</version>
         <executions>
           <execution>
             <goals>
@@ -539,6 +539,13 @@
           <style>google</style>
           <verbose>true</verbose>
         </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>com.google.googlejavaformat</groupId>
+            <artifactId>google-java-format</artifactId>
+            <version>1.7</version>
+          </dependency>
+        </dependencies>
       </plugin>
     </plugins>
   </build>
@@ -558,7 +565,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.jsr305.version>3.0.2</project.jsr305.version>
     <project.gson.version>2.8.6</project.gson.version>
-    <project.jackson-core2.version>2.11.0</project.jackson-core2.version>
+    <project.jackson-core2.version>2.11.1</project.jackson-core2.version>
     <project.protobuf-java.version>3.12.2</project.protobuf-java.version>
     <project.guava.version>29.0-android</project.guava.version>
     <project.xpp3.version>1.1.4c</project.xpp3.version>
diff --git a/samples/dailymotion-simple-cmdline-sample/pom.xml b/samples/dailymotion-simple-cmdline-sample/pom.xml
index b8458eb5..f5930f8e 100644
--- a/samples/dailymotion-simple-cmdline-sample/pom.xml
+++ b/samples/dailymotion-simple-cmdline-sample/pom.xml
@@ -15,7 +15,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>exec-maven-plugin</artifactId>
-        <version>1.6.0</version>
+        <version>3.0.0</version>
         <executions>
           <execution>
             <goals>
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 6d5f2e90..73371f10 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.12</version>
+    <version>1.0.18</version>
   </parent>
 
   <properties>
@@ -53,7 +53,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-snippets-source</id>
diff --git a/samples/pom.xml b/samples/pom.xml
index a46c32ca..b59d3cdf 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.15</version>
+    <version>1.0.18</version>
   </parent>
 
   <properties>
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 4d9f60c9..4f4ee0a6 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.12</version>
+    <version>1.0.18</version>
   </parent>
 
   <properties>
@@ -52,7 +52,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-snippets-source</id>
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 33a9fe00..5e300f9a 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -14,7 +14,7 @@
   <parent>
     <groupId>com.google.cloud.samples</groupId>
     <artifactId>shared-configuration</artifactId>
-    <version>1.0.12</version>
+    <version>1.0.18</version>
   </parent>
 
   <properties>
diff --git a/synth.metadata b/synth.metadata
index 45fdd9b8..f1080299 100644
--- a/synth.metadata
+++ b/synth.metadata
@@ -3,15 +3,15 @@
     {
       "git": {
         "name": ".",
-        "remote": "https://github.com/googleapis/google-http-java-client.git",
-        "sha": "bb4227f9daec44fc2976fa9947e2ff5ee07ed21a"
+        "remote": "git@github.com:chingor13/google-http-java-client.git",
+        "sha": "b1353f8cc7aaf22a30b31bd2ac72248d3a3a0a5d"
       }
     },
     {
       "git": {
         "name": "synthtool",
         "remote": "https://github.com/googleapis/synthtool.git",
-        "sha": "52638600f387deb98efb5f9c85fec39e82aa9052"
+        "sha": "ce68c0e70d36c93ffcde96e9908fb4d94aa4f2e4"
       }
     }
   ]
diff --git a/synth.py b/synth.py
index 9ed5d748..a22e87e0 100644
--- a/synth.py
+++ b/synth.py
@@ -12,14 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 """This script is used to synthesize generated parts of this library."""
-import synthtool as s
-import synthtool.gcp as gcp
-import logging
 
-logging.basicConfig(level=logging.DEBUG)
-common_templates = gcp.CommonTemplates()
-templates = common_templates.java_library()
-s.copy(templates, excludes=[
+import synthtool.languages.java as java
+
+java.common_templates(excludes=[
     "README.md",
     "java.header",
     "checkstyle.xml",


Test patch:
diff --git a/google-http-client-apache-v2/src/test/java/com/google/api/client/http/apache/v2/ApacheHttpTransportTest.java b/google-http-client-apache-v2/src/test/java/com/google/api/client/http/apache/v2/ApacheHttpTransportTest.java
index e9b93e9b..880e7fdb 100644
--- a/google-http-client-apache-v2/src/test/java/com/google/api/client/http/apache/v2/ApacheHttpTransportTest.java
+++ b/google-http-client-apache-v2/src/test/java/com/google/api/client/http/apache/v2/ApacheHttpTransportTest.java
@@ -125,7 +125,8 @@ public class ApacheHttpTransportTest {
       fail("expected " + IllegalStateException.class);
     } catch (IllegalStateException e) {
       // expected
-      assertEquals(e.getMessage(),
+      assertEquals(
+          e.getMessage(),
           "Apache HTTP client does not support " + method + " requests with content.");
     }
   }
@@ -141,16 +142,18 @@ public class ApacheHttpTransportTest {
   @Test
   public void testRequestShouldNotFollowRedirects() throws IOException {
     final AtomicInteger requestsAttempted = new AtomicInteger(0);
-    HttpRequestExecutor requestExecutor = new HttpRequestExecutor() {
-      @Override
-      public HttpResponse execute(HttpRequest request, HttpClientConnection connection,
-          HttpContext context) throws IOException, HttpException {
-        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 302, null);
-        response.addHeader("location", "https://google.com/path");
-        requestsAttempted.incrementAndGet();
-        return response;
-      }
-    };
+    HttpRequestExecutor requestExecutor =
+        new HttpRequestExecutor() {
+          @Override
+          public HttpResponse execute(
+              HttpRequest request, HttpClientConnection connection, HttpContext context)
+              throws IOException, HttpException {
+            HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 302, null);
+            response.addHeader("location", "https://google.com/path");
+            requestsAttempted.incrementAndGet();
+            return response;
+          }
+        };
     HttpClient client = HttpClients.custom().setRequestExecutor(requestExecutor).build();
     ApacheHttpTransport transport = new ApacheHttpTransport(client);
     ApacheHttpRequest request = transport.buildRequest("GET", "https://google.com");
@@ -162,17 +165,21 @@ public class ApacheHttpTransportTest {
   @Test
   public void testRequestCanSetHeaders() {
     final AtomicBoolean interceptorCalled = new AtomicBoolean(false);
-    HttpClient client = HttpClients.custom().addInterceptorFirst(new HttpRequestInterceptor() {
-      @Override
-      public void process(HttpRequest request, HttpContext context)
-          throws HttpException, IOException {
-        Header header = request.getFirstHeader("foo");
-        assertNotNull("Should have found header", header);
-        assertEquals("bar", header.getValue());
-        interceptorCalled.set(true);
-        throw new IOException("cancelling request");
-      }
-    }).build();
+    HttpClient client =
+        HttpClients.custom()
+            .addInterceptorFirst(
+                new HttpRequestInterceptor() {
+                  @Override
+                  public void process(HttpRequest request, HttpContext context)
+                      throws HttpException, IOException {
+                    Header header = request.getFirstHeader("foo");
+                    assertNotNull("Should have found header", header);
+                    assertEquals("bar", header.getValue());
+                    interceptorCalled.set(true);
+                    throw new IOException("cancelling request");
+                  }
+                })
+            .build();
 
     ApacheHttpTransport transport = new ApacheHttpTransport(client);
     ApacheHttpRequest request = transport.buildRequest("GET", "https://google.com");
@@ -224,10 +231,7 @@ public class ApacheHttpTransportTest {
     GenericUrl testUrl = new GenericUrl("http://localhost/foo//bar");
     testUrl.setPort(server.getAddress().getPort());
     com.google.api.client.http.HttpResponse response =
-        transport
-            .createRequestFactory()
-            .buildGetRequest(testUrl)
-            .execute();
+        transport.createRequestFactory().buildGetRequest(testUrl).execute();
     assertEquals(200, response.getStatusCode());
     assertEquals("/foo//bar", response.parseAsString());
   }
diff --git a/google-http-client-gson/src/test/java/com/google/api/client/json/gson/GsonParserTest.java b/google-http-client-gson/src/test/java/com/google/api/client/json/gson/GsonParserTest.java
index f79d4a5d..aa5ed5ae 100644
--- a/google-http-client-gson/src/test/java/com/google/api/client/json/gson/GsonParserTest.java
+++ b/google-http-client-gson/src/test/java/com/google/api/client/json/gson/GsonParserTest.java
@@ -1,19 +1,16 @@
 /**
  * Copyright 2019 Google LLC
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
  *
- *     https://www.apache.org/licenses/LICENSE-2.0
+ * <p>https://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.google.api.client.json.gson;
 
 import com.google.api.client.json.JsonFactory;
diff --git a/google-http-client-jackson2/src/test/java/com/google/api/client/json/jackson2/JacksonParserTest.java b/google-http-client-jackson2/src/test/java/com/google/api/client/json/jackson2/JacksonParserTest.java
index 92da0360..ed185c7a 100644
--- a/google-http-client-jackson2/src/test/java/com/google/api/client/json/jackson2/JacksonParserTest.java
+++ b/google-http-client-jackson2/src/test/java/com/google/api/client/json/jackson2/JacksonParserTest.java
@@ -1,19 +1,16 @@
 /**
  * Copyright 2019 Google LLC
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
  *
- *     https://www.apache.org/licenses/LICENSE-2.0
+ * <p>https://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.google.api.client.json.jackson2;
 
 import com.google.api.client.json.JsonFactory;
diff --git a/google-http-client-test/pom.xml b/google-http-client-test/pom.xml
index 5bc5d32f..df603122 100644
--- a/google-http-client-test/pom.xml
+++ b/google-http-client-test/pom.xml
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
-        <version>3.1.0</version>
+        <version>3.2.0</version>
         <executions>
           <execution>
             <id>add-test-source</id>
diff --git a/google-http-client-test/src/main/java/com/google/api/client/test/json/AbstractJsonParserTest.java b/google-http-client-test/src/main/java/com/google/api/client/test/json/AbstractJsonParserTest.java
index ef641e86..2a68c639 100644
--- a/google-http-client-test/src/main/java/com/google/api/client/test/json/AbstractJsonParserTest.java
+++ b/google-http-client-test/src/main/java/com/google/api/client/test/json/AbstractJsonParserTest.java
@@ -1,19 +1,16 @@
 /**
  * Copyright 2019 Google LLC
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
  *
- *     https://www.apache.org/licenses/LICENSE-2.0
+ * <p>https://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.google.api.client.test.json;
 
 import com.google.api.client.json.GenericJson;
diff --git a/google-http-client/src/test/java/com/google/api/client/http/ConsumingInputStreamTest.java b/google-http-client/src/test/java/com/google/api/client/http/ConsumingInputStreamTest.java
index 33a48dce..afcdf2bf 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/ConsumingInputStreamTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/ConsumingInputStreamTest.java
@@ -27,7 +27,8 @@ public class ConsumingInputStreamTest {
 
   @Test
   public void testClose_drainsBytesOnClose() throws IOException {
-    MockInputStream mockInputStream = new MockInputStream("abc123".getBytes(StandardCharsets.UTF_8));
+    MockInputStream mockInputStream =
+        new MockInputStream("abc123".getBytes(StandardCharsets.UTF_8));
     InputStream consumingInputStream = new ConsumingInputStream(mockInputStream);
 
     assertEquals(6, mockInputStream.getBytesToRead());
diff --git a/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffIOExpcetionHandlerTest.java b/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffIOExpcetionHandlerTest.java
index db4fcdc5..ae0ae125 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffIOExpcetionHandlerTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffIOExpcetionHandlerTest.java
@@ -17,7 +17,9 @@ package com.google.api.client.http;
 import com.google.api.client.testing.util.MockBackOff;
 import com.google.api.client.testing.util.MockSleeper;
 import com.google.api.client.util.BackOff;
+import com.google.api.client.util.Sleeper;
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
 import junit.framework.TestCase;
 
 /**
@@ -46,4 +48,35 @@ public class HttpBackOffIOExpcetionHandlerTest extends TestCase {
     }
     assertEquals(count, sleeper.getCount());
   }
+
+  public void testHandleIOException_returnsFalseAndThreadRemainsInterrupted_whenSleepIsInterrupted()
+      throws Exception {
+    final AtomicBoolean stillInterrupted = new AtomicBoolean(false);
+    Thread runningThread =
+        new Thread() {
+          @Override
+          public void run() {
+            HttpBackOffIOExceptionHandler testTarget =
+                new HttpBackOffIOExceptionHandler(
+                        new MockBackOff()
+                            .setBackOffMillis(Long.MAX_VALUE) // Sleep until we interrupt it.
+                            .setMaxTries(1))
+                    .setSleeper(
+                        Sleeper.DEFAULT); // Needs to be a real sleeper so we can interrupt it.
+
+            try {
+              testTarget.handleIOException(null, /* retrySupported= */ true);
+            } catch (Exception ignored) {
+            }
+            stillInterrupted.set(Thread.currentThread().isInterrupted());
+          }
+        };
+    runningThread.start();
+    // Give runningThread some time to start.
+    Thread.sleep(500L);
+    runningThread.interrupt();
+    runningThread.join();
+
+    assertTrue(stillInterrupted.get());
+  }
 }
diff --git a/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandlerTest.java b/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandlerTest.java
index 7393ae31..afe9ff65 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandlerTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/HttpBackOffUnsuccessfulResponseHandlerTest.java
@@ -18,7 +18,9 @@ import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler.BackOff
 import com.google.api.client.testing.util.MockBackOff;
 import com.google.api.client.testing.util.MockSleeper;
 import com.google.api.client.util.BackOff;
+import com.google.api.client.util.Sleeper;
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicBoolean;
 import junit.framework.TestCase;
 
 /**
@@ -67,4 +69,36 @@ public class HttpBackOffUnsuccessfulResponseHandlerTest extends TestCase {
     }
     assertEquals(count, sleeper.getCount());
   }
+
+  public void testHandleResponse_returnsFalseAndThreadRemainsInterrupted_whenSleepIsInterrupted()
+      throws Exception {
+    final AtomicBoolean stillInterrupted = new AtomicBoolean(false);
+    Thread runningThread =
+        new Thread() {
+          @Override
+          public void run() {
+            HttpBackOffUnsuccessfulResponseHandler testTarget =
+                new HttpBackOffUnsuccessfulResponseHandler(
+                        new MockBackOff()
+                            .setBackOffMillis(Long.MAX_VALUE) // Sleep until we interrupt it.
+                            .setMaxTries(1))
+                    .setSleeper(
+                        Sleeper.DEFAULT) // Needs to be a real sleeper so we can interrupt it.
+                    .setBackOffRequired(BackOffRequired.ALWAYS);
+
+            try {
+              testTarget.handleResponse(null, null, /* retrySupported= */ true);
+            } catch (Exception ignored) {
+            }
+            stillInterrupted.set(Thread.currentThread().isInterrupted());
+          }
+        };
+    runningThread.start();
+    // Give runningThread some time to start.
+    Thread.sleep(500L);
+    runningThread.interrupt();
+    runningThread.join();
+
+    assertTrue(stillInterrupted.get());
+  }
 }
diff --git a/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTest.java b/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTest.java
index bb47e98d..d78cd8c8 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTest.java
@@ -1275,7 +1275,6 @@ public class HttpRequestTest extends TestCase {
     String version = HttpRequest.VERSION;
     assertTrue(
         String.format("the loaded version '%s' did not match the acceptable pattern", version),
-        version.matches(acceptableVersionPattern)
-    );
+        version.matches(acceptableVersionPattern));
   }
 }
diff --git a/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTracingTest.java b/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTracingTest.java
index 5d89f035..d2d2df5d 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTracingTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/HttpRequestTracingTest.java
@@ -13,6 +13,12 @@
  */
 package com.google.api.client.http;
 
+import static com.google.api.client.http.OpenCensusUtils.SPAN_NAME_HTTP_REQUEST_EXECUTE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import com.google.api.client.testing.http.MockHttpTransport;
 import com.google.api.client.testing.http.MockLowLevelHttpRequest;
 import com.google.api.client.testing.http.MockLowLevelHttpResponse;
@@ -25,19 +31,12 @@ import io.opencensus.trace.Tracing;
 import io.opencensus.trace.config.TraceParams;
 import io.opencensus.trace.export.SpanData;
 import io.opencensus.trace.samplers.Samplers;
+import java.io.IOException;
+import java.util.List;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.io.IOException;
-import java.util.List;
-
-import static com.google.api.client.http.OpenCensusUtils.SPAN_NAME_HTTP_REQUEST_EXECUTE;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 public class HttpRequestTracingTest {
   private static final TestHandler testHandler = new TestHandler();
 
@@ -60,13 +59,12 @@ public class HttpRequestTracingTest {
 
   @Test(timeout = 20_000L)
   public void executeCreatesSpan() throws IOException {
-    MockLowLevelHttpResponse mockResponse = new MockLowLevelHttpResponse()
-        .setStatusCode(200);
-    HttpTransport transport = new MockHttpTransport.Builder()
-        .setLowLevelHttpResponse(mockResponse)
-        .build();
-    HttpRequest request = new HttpRequestFactory(transport, null)
-        .buildGetRequest(new GenericUrl("https://google.com/"));
+    MockLowLevelHttpResponse mockResponse = new MockLowLevelHttpResponse().setStatusCode(200);
+    HttpTransport transport =
+        new MockHttpTransport.Builder().setLowLevelHttpResponse(mockResponse).build();
+    HttpRequest request =
+        new HttpRequestFactory(transport, null)
+            .buildGetRequest(new GenericUrl("https://google.com/"));
     request.execute();
 
     // This call blocks - we set a timeout on this test to ensure we don't wait forever
@@ -88,8 +86,11 @@ public class HttpRequestTracingTest {
 
     // Ensure we have 2 message events, SENT and RECEIVED
     assertEquals(2, span.getMessageEvents().getEvents().size());
-    assertEquals(MessageEvent.Type.SENT, span.getMessageEvents().getEvents().get(0).getEvent().getType());
-    assertEquals(MessageEvent.Type.RECEIVED, span.getMessageEvents().getEvents().get(1).getEvent().getType());
+    assertEquals(
+        MessageEvent.Type.SENT, span.getMessageEvents().getEvents().get(0).getEvent().getType());
+    assertEquals(
+        MessageEvent.Type.RECEIVED,
+        span.getMessageEvents().getEvents().get(1).getEvent().getType());
 
     // Ensure we record the span status as OK
     assertEquals(Status.OK, span.getStatus());
@@ -97,16 +98,19 @@ public class HttpRequestTracingTest {
 
   @Test(timeout = 20_000L)
   public void executeExceptionCreatesSpan() throws IOException {
-    HttpTransport transport = new MockHttpTransport.Builder()
-        .setLowLevelHttpRequest(new MockLowLevelHttpRequest() {
-          @Override
-          public LowLevelHttpResponse execute() throws IOException {
-            throw new IOException("some IOException");
-          }
-        })
-        .build();
-    HttpRequest request = new HttpRequestFactory(transport, null)
-        .buildGetRequest(new GenericUrl("https://google.com/"));
+    HttpTransport transport =
+        new MockHttpTransport.Builder()
+            .setLowLevelHttpRequest(
+                new MockLowLevelHttpRequest() {
+                  @Override
+                  public LowLevelHttpResponse execute() throws IOException {
+                    throw new IOException("some IOException");
+                  }
+                })
+            .build();
+    HttpRequest request =
+        new HttpRequestFactory(transport, null)
+            .buildGetRequest(new GenericUrl("https://google.com/"));
 
     try {
       request.execute();
@@ -133,21 +137,25 @@ public class HttpRequestTracingTest {
 
     // Ensure we have 2 message events, SENT and RECEIVED
     assertEquals(1, span.getMessageEvents().getEvents().size());
-    assertEquals(MessageEvent.Type.SENT, span.getMessageEvents().getEvents().get(0).getEvent().getType());
+    assertEquals(
+        MessageEvent.Type.SENT, span.getMessageEvents().getEvents().get(0).getEvent().getType());
 
     // Ensure we record the span status as UNKNOWN
-    assertEquals(Status.UNKNOWN, span.getStatus());  }
+    assertEquals(Status.UNKNOWN, span.getStatus());
+  }
 
   void assertAttributeEquals(SpanData span, String attributeName, String expectedValue) {
     Object attributeValue = span.getAttributes().getAttributeMap().get(attributeName);
     assertNotNull("expected span to contain attribute: " + attributeName, attributeValue);
     assertTrue(attributeValue instanceof AttributeValue);
-    String value = ((AttributeValue) attributeValue).match(
-        Functions.returnToString(),
-        Functions.returnToString(),
-        Functions.returnToString(),
-        Functions.returnToString(),
-        Functions.</*@Nullable*/ String>returnNull());
+    String value =
+        ((AttributeValue) attributeValue)
+            .match(
+                Functions.returnToString(),
+                Functions.returnToString(),
+                Functions.returnToString(),
+                Functions.returnToString(),
+                Functions.</*@Nullable*/ String>returnNull());
     assertEquals(expectedValue, value);
   }
 }
diff --git a/google-http-client/src/test/java/com/google/api/client/http/HttpResponseTest.java b/google-http-client/src/test/java/com/google/api/client/http/HttpResponseTest.java
index 57b400e4..267d13ca 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/HttpResponseTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/HttpResponseTest.java
@@ -544,11 +544,14 @@ public class HttpResponseTest extends TestCase {
     do_testGetContent_gzipEncoding_finishReading("gzip");
   }
 
-  public void testGetContent_gzipEncoding_finishReadingWithUppercaseContentEncoding() throws IOException {
+  public void testGetContent_gzipEncoding_finishReadingWithUppercaseContentEncoding()
+      throws IOException {
     do_testGetContent_gzipEncoding_finishReading("GZIP");
   }
 
-  public void testGetContent_gzipEncoding_finishReadingWithDifferentDefaultLocaleAndUppercaseContentEncoding() throws IOException {
+  public void
+      testGetContent_gzipEncoding_finishReadingWithDifferentDefaultLocaleAndUppercaseContentEncoding()
+          throws IOException {
     Locale originalDefaultLocale = Locale.getDefault();
     try {
       Locale.setDefault(Locale.forLanguageTag("tr-TR"));
@@ -558,13 +561,12 @@ public class HttpResponseTest extends TestCase {
     }
   }
 
-  private void do_testGetContent_gzipEncoding_finishReading(String contentEncoding) throws IOException {
+  private void do_testGetContent_gzipEncoding_finishReading(String contentEncoding)
+      throws IOException {
     byte[] dataToCompress = "abcd".getBytes(StandardCharsets.UTF_8);
     byte[] mockBytes;
-    try (
-        ByteArrayOutputStream byteStream = new ByteArrayOutputStream(dataToCompress.length);
-        GZIPOutputStream zipStream = new GZIPOutputStream((byteStream))
-    ) {
+    try (ByteArrayOutputStream byteStream = new ByteArrayOutputStream(dataToCompress.length);
+        GZIPOutputStream zipStream = new GZIPOutputStream((byteStream))) {
       zipStream.write(dataToCompress);
       zipStream.close();
 
@@ -596,7 +598,8 @@ public class HttpResponseTest extends TestCase {
     HttpRequest request =
         transport.createRequestFactory().buildHeadRequest(HttpTesting.SIMPLE_GENERIC_URL);
     HttpResponse response = request.execute();
-    try (TestableByteArrayInputStream output = (TestableByteArrayInputStream) mockResponse.getContent()) {
+    try (TestableByteArrayInputStream output =
+        (TestableByteArrayInputStream) mockResponse.getContent()) {
       assertFalse(output.isClosed());
       assertEquals("abcd", response.parseAsString());
       assertTrue(output.isClosed());
@@ -624,7 +627,8 @@ public class HttpResponseTest extends TestCase {
             };
           }
         };
-    HttpRequest request = transport.createRequestFactory().buildHeadRequest(HttpTesting.SIMPLE_GENERIC_URL);
+    HttpRequest request =
+        transport.createRequestFactory().buildHeadRequest(HttpTesting.SIMPLE_GENERIC_URL);
     // If gzip was used on this response, an exception would be thrown
     HttpResponse response = request.execute();
     assertEquals("abcd", response.parseAsString());
diff --git a/google-http-client/src/test/java/com/google/api/client/http/MultipartContentTest.java b/google-http-client/src/test/java/com/google/api/client/http/MultipartContentTest.java
index 14e0e599..ed3ec5e5 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/MultipartContentTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/MultipartContentTest.java
@@ -33,9 +33,14 @@ public class MultipartContentTest extends TestCase {
   private static final String HEADERS = headers("application/json; charset=UTF-8", "foo");
 
   private static String headers(String contentType, String value) {
-      return "Content-Length: " + value.length() + CRLF
-          + "Content-Type: " + contentType + CRLF
-          + "content-transfer-encoding: binary" + CRLF;
+    return "Content-Length: "
+        + value.length()
+        + CRLF
+        + "Content-Type: "
+        + contentType
+        + CRLF
+        + "content-transfer-encoding: binary"
+        + CRLF;
   }
 
   public void testRandomContent() throws Exception {
@@ -46,19 +51,26 @@ public class MultipartContentTest extends TestCase {
     assertTrue(boundaryString.endsWith("__"));
     assertEquals("multipart/related; boundary=" + boundaryString, content.getType());
 
-    final String[][] VALUES = new String[][] {
-            {"Hello world", "text/plain"},
-            {"<xml>Hi</xml>", "application/xml"},
-            {"{x:1,y:2}", "application/json"}
-    };
+    final String[][] VALUES =
+        new String[][] {
+          {"Hello world", "text/plain"},
+          {"<xml>Hi</xml>", "application/xml"},
+          {"{x:1,y:2}", "application/json"}
+        };
     StringBuilder expectedStringBuilder = new StringBuilder();
-    for (String[] valueTypePair: VALUES) {
+    for (String[] valueTypePair : VALUES) {
       String contentValue = valueTypePair[0];
       String contentType = valueTypePair[1];
-      content.addPart(new MultipartContent.Part(ByteArrayContent.fromString(contentType, contentValue)));
-      expectedStringBuilder.append("--").append(boundaryString).append(CRLF)
-              .append(headers(contentType, contentValue)).append(CRLF)
-              .append(contentValue).append(CRLF);
+      content.addPart(
+          new MultipartContent.Part(ByteArrayContent.fromString(contentType, contentValue)));
+      expectedStringBuilder
+          .append("--")
+          .append(boundaryString)
+          .append(CRLF)
+          .append(headers(contentType, contentValue))
+          .append(CRLF)
+          .append(contentValue)
+          .append(CRLF);
     }
     expectedStringBuilder.append("--").append(boundaryString).append("--").append(CRLF);
     // write to string
@@ -72,31 +84,30 @@ public class MultipartContentTest extends TestCase {
   public void testContent() throws Exception {
     subtestContent("--" + BOUNDARY + "--" + CRLF, null);
     subtestContent(
-        "--" + BOUNDARY + CRLF
-                + HEADERS + CRLF
-                + "foo" + CRLF
-                + "--" + BOUNDARY + "--" + CRLF,
-            null,
+        "--" + BOUNDARY + CRLF + HEADERS + CRLF + "foo" + CRLF + "--" + BOUNDARY + "--" + CRLF,
+        null,
         "foo");
     subtestContent(
-        "--" + BOUNDARY + CRLF
-            + HEADERS + CRLF
-            + "foo" + CRLF
-            + "--" + BOUNDARY + CRLF
-            + HEADERS + CRLF
-            + "bar" + CRLF
-            + "--" + BOUNDARY + "--" + CRLF,
-            null,
+        "--" + BOUNDARY + CRLF + HEADERS + CRLF + "foo" + CRLF + "--" + BOUNDARY + CRLF + HEADERS
+            + CRLF + "bar" + CRLF + "--" + BOUNDARY + "--" + CRLF,
+        null,
         "foo",
         "bar");
     subtestContent(
-        "--myboundary" + CRLF
-            + HEADERS + CRLF
-            + "foo" + CRLF
-            + "--myboundary" + CRLF
-            + HEADERS + CRLF
-            + "bar" + CRLF
-            + "--myboundary--" + CRLF,
+        "--myboundary"
+            + CRLF
+            + HEADERS
+            + CRLF
+            + "foo"
+            + CRLF
+            + "--myboundary"
+            + CRLF
+            + HEADERS
+            + CRLF
+            + "bar"
+            + CRLF
+            + "--myboundary--"
+            + CRLF,
         "myboundary",
         "foo",
         "bar");
@@ -105,7 +116,8 @@ public class MultipartContentTest extends TestCase {
   private void subtestContent(String expectedContent, String boundaryString, String... contents)
       throws Exception {
     // multipart content
-    MultipartContent content = new MultipartContent(boundaryString == null ? BOUNDARY : boundaryString);
+    MultipartContent content =
+        new MultipartContent(boundaryString == null ? BOUNDARY : boundaryString);
     for (String contentValue : contents) {
       content.addPart(
           new MultipartContent.Part(ByteArrayContent.fromString(CONTENT_TYPE, contentValue)));
diff --git a/google-http-client/src/test/java/com/google/api/client/http/OpenCensusUtilsTest.java b/google-http-client/src/test/java/com/google/api/client/http/OpenCensusUtilsTest.java
index 8fa8624e..480d1015 100644
--- a/google-http-client/src/test/java/com/google/api/client/http/OpenCensusUtilsTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/http/OpenCensusUtilsTest.java
@@ -14,7 +14,6 @@
 
 package com.google.api.client.http;
 
-
 import io.opencensus.trace.Annotation;
 import io.opencensus.trace.AttributeValue;
 import io.opencensus.trace.BlankSpan;
diff --git a/google-http-client/src/test/java/com/google/api/client/json/webtoken/JsonWebSignatureTest.java b/google-http-client/src/test/java/com/google/api/client/json/webtoken/JsonWebSignatureTest.java
index 9a02c075..78fb06de 100644
--- a/google-http-client/src/test/java/com/google/api/client/json/webtoken/JsonWebSignatureTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/json/webtoken/JsonWebSignatureTest.java
@@ -17,7 +17,8 @@ package com.google.api.client.json.webtoken;
 import com.google.api.client.testing.json.MockJsonFactory;
 import com.google.api.client.testing.json.webtoken.TestCertificates;
 import com.google.api.client.testing.util.SecurityTestUtils;
-
+import com.google.api.client.util.Base64;
+import com.google.api.client.util.StringUtils;
 import java.io.IOException;
 import java.math.BigInteger;
 import java.security.AlgorithmParameters;
@@ -35,11 +36,7 @@ import java.security.spec.InvalidKeySpecException;
 import java.security.spec.InvalidParameterSpecException;
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.net.ssl.X509TrustManager;
-
-import com.google.api.client.util.Base64;
-import com.google.api.client.util.StringUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -69,12 +66,12 @@ public class JsonWebSignatureTest {
   }
 
   private X509Certificate verifyX509WithCaCert(TestCertificates.CertData caCert)
-     throws IOException, GeneralSecurityException {
+      throws IOException, GeneralSecurityException {
     JsonWebSignature signature = TestCertificates.getJsonWebSignature();
     X509TrustManager trustManager = caCert.getTrustManager();
     return signature.verifySignature(trustManager);
   }
-  
+
   @Test
   public void testImmutableSignatureBytes() throws IOException {
     JsonWebSignature signature = TestCertificates.getJsonWebSignature();
@@ -83,7 +80,7 @@ public class JsonWebSignatureTest {
     byte[] bytes2 = signature.getSignatureBytes();
     Assert.assertNotEquals(bytes2[0], bytes[0]);
   }
-  
+
   @Test
   public void testImmutableSignedContentBytes() throws IOException {
     JsonWebSignature signature = TestCertificates.getJsonWebSignature();
@@ -92,7 +89,7 @@ public class JsonWebSignatureTest {
     byte[] bytes2 = signature.getSignedContentBytes();
     Assert.assertNotEquals(bytes2[0], bytes[0]);
   }
-  
+
   @Test
   public void testImmutableCertificates() throws IOException {
     JsonWebSignature signature = TestCertificates.getJsonWebSignature();
@@ -100,7 +97,7 @@ public class JsonWebSignatureTest {
     certificates.set(0, "foo");
     Assert.assertNotEquals("foo", signature.getHeader().getX509Certificates().get(0));
   }
-  
+
   @Test
   public void testImmutableCritical() throws IOException {
     JsonWebSignature signature = TestCertificates.getJsonWebSignature();
@@ -128,8 +125,10 @@ public class JsonWebSignatureTest {
     Assert.assertNull(verifyX509WithCaCert(TestCertificates.BOGUS_CA_CERT));
   }
 
-  private static final String ES256_CONTENT = "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im1wZjBEQSJ9.eyJhdWQiOiIvcHJvamVjdHMvNjUyNTYyNzc2Nzk4L2FwcHMvY2xvdWQtc2FtcGxlcy10ZXN0cy1waHAtaWFwIiwiZW1haWwiOiJjaGluZ29yQGdvb2dsZS5jb20iLCJleHAiOjE1ODQwNDc2MTcsImdvb2dsZSI6eyJhY2Nlc3NfbGV2ZWxzIjpbImFjY2Vzc1BvbGljaWVzLzUxODU1MTI4MDkyNC9hY2Nlc3NMZXZlbHMvcmVjZW50U2VjdXJlQ29ubmVjdERhdGEiLCJhY2Nlc3NQb2xpY2llcy81MTg1NTEyODA5MjQvYWNjZXNzTGV2ZWxzL3Rlc3ROb09wIiwiYWNjZXNzUG9saWNpZXMvNTE4NTUxMjgwOTI0L2FjY2Vzc0xldmVscy9ldmFwb3JhdGlvblFhRGF0YUZ1bGx5VHJ1c3RlZCJdfSwiaGQiOiJnb29nbGUuY29tIiwiaWF0IjoxNTg0MDQ3MDE3LCJpc3MiOiJodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vaWFwIiwic3ViIjoiYWNjb3VudHMuZ29vZ2xlLmNvbToxMTIxODE3MTI3NzEyMDE5NzI4OTEifQ";
-  private static final String ES256_SIGNATURE = "yKNtdFY5EKkRboYNexBdfugzLhC3VuGyFcuFYA8kgpxMqfyxa41zkML68hYKrWu2kOBTUW95UnbGpsIi_u1fiA";
+  private static final String ES256_CONTENT =
+      "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im1wZjBEQSJ9.eyJhdWQiOiIvcHJvamVjdHMvNjUyNTYyNzc2Nzk4L2FwcHMvY2xvdWQtc2FtcGxlcy10ZXN0cy1waHAtaWFwIiwiZW1haWwiOiJjaGluZ29yQGdvb2dsZS5jb20iLCJleHAiOjE1ODQwNDc2MTcsImdvb2dsZSI6eyJhY2Nlc3NfbGV2ZWxzIjpbImFjY2Vzc1BvbGljaWVzLzUxODU1MTI4MDkyNC9hY2Nlc3NMZXZlbHMvcmVjZW50U2VjdXJlQ29ubmVjdERhdGEiLCJhY2Nlc3NQb2xpY2llcy81MTg1NTEyODA5MjQvYWNjZXNzTGV2ZWxzL3Rlc3ROb09wIiwiYWNjZXNzUG9saWNpZXMvNTE4NTUxMjgwOTI0L2FjY2Vzc0xldmVscy9ldmFwb3JhdGlvblFhRGF0YUZ1bGx5VHJ1c3RlZCJdfSwiaGQiOiJnb29nbGUuY29tIiwiaWF0IjoxNTg0MDQ3MDE3LCJpc3MiOiJodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vaWFwIiwic3ViIjoiYWNjb3VudHMuZ29vZ2xlLmNvbToxMTIxODE3MTI3NzEyMDE5NzI4OTEifQ";
+  private static final String ES256_SIGNATURE =
+      "yKNtdFY5EKkRboYNexBdfugzLhC3VuGyFcuFYA8kgpxMqfyxa41zkML68hYKrWu2kOBTUW95UnbGpsIi_u1fiA";
 
   // x, y values for keyId "mpf0DA" from https://www.gstatic.com/iap/verify/public_key-jwk
   private static final String GOOGLE_ES256_X = "fHEdeT3a6KaC1kbwov73ZwB_SiUHEyKQwUUtMCEn0aI";
@@ -139,13 +138,12 @@ public class JsonWebSignatureTest {
       throws NoSuchAlgorithmException, InvalidParameterSpecException, InvalidKeySpecException {
     AlgorithmParameters parameters = AlgorithmParameters.getInstance("EC");
     parameters.init(new ECGenParameterSpec("secp256r1"));
-    ECPublicKeySpec ecPublicKeySpec = new ECPublicKeySpec(
-        new ECPoint(
-            new BigInteger(1, Base64.decodeBase64(x)),
-            new BigInteger(1, Base64.decodeBase64(y))
-        ),
-        parameters.getParameterSpec(ECParameterSpec.class)
-    );
+    ECPublicKeySpec ecPublicKeySpec =
+        new ECPublicKeySpec(
+            new ECPoint(
+                new BigInteger(1, Base64.decodeBase64(x)),
+                new BigInteger(1, Base64.decodeBase64(y))),
+            parameters.getParameterSpec(ECParameterSpec.class));
     KeyFactory keyFactory = KeyFactory.getInstance("EC");
     return keyFactory.generatePublic(ecPublicKeySpec);
   }
@@ -158,7 +156,8 @@ public class JsonWebSignatureTest {
     JsonWebSignature.Payload payload = new JsonWebToken.Payload();
     byte[] signatureBytes = Base64.decodeBase64(ES256_SIGNATURE);
     byte[] signedContentBytes = StringUtils.getBytesUtf8(ES256_CONTENT);
-    JsonWebSignature jsonWebSignature = new JsonWebSignature(header, payload, signatureBytes, signedContentBytes);
+    JsonWebSignature jsonWebSignature =
+        new JsonWebSignature(header, payload, signatureBytes, signedContentBytes);
     Assert.assertTrue(jsonWebSignature.verifySignature(publicKey));
   }
 }
diff --git a/google-http-client/src/test/java/com/google/api/client/util/DateTimeTest.java b/google-http-client/src/test/java/com/google/api/client/util/DateTimeTest.java
index 785ab40d..ce7d2b02 100644
--- a/google-http-client/src/test/java/com/google/api/client/util/DateTimeTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/util/DateTimeTest.java
@@ -224,15 +224,13 @@ public class DateTimeTest extends TestCase {
     assertParsedRfc3339(
         "2018-03-01T10:11:12.1000Z", SecondsAndNanos.ofSecondsAndNanos(1519899072L, 100000000));
   }
-  
+
   public void testEpoch() {
-    assertParsedRfc3339(
-        "1970-01-01T00:00:00.000Z", SecondsAndNanos.ofSecondsAndNanos(0, 0));
+    assertParsedRfc3339("1970-01-01T00:00:00.000Z", SecondsAndNanos.ofSecondsAndNanos(0, 0));
   }
 
   public void testOneSecondBeforeEpoch() {
-    assertParsedRfc3339(
-        "1969-12-31T23:59:59.000Z", SecondsAndNanos.ofSecondsAndNanos(-1, 0));
+    assertParsedRfc3339("1969-12-31T23:59:59.000Z", SecondsAndNanos.ofSecondsAndNanos(-1, 0));
   }
 
   private static void assertParsedRfc3339(String input, SecondsAndNanos expected) {
diff --git a/google-http-client/src/test/java/com/google/api/client/util/GenericDataTest.java b/google-http-client/src/test/java/com/google/api/client/util/GenericDataTest.java
index c1d3872c..52b2b9a0 100644
--- a/google-http-client/src/test/java/com/google/api/client/util/GenericDataTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/util/GenericDataTest.java
@@ -15,13 +15,10 @@
 package com.google.api.client.util;
 
 import com.google.api.client.util.GenericData.Flags;
-
-import junit.framework.TestCase;
-
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.List;
-
+import junit.framework.TestCase;
 import org.junit.Assert;
 
 /**
diff --git a/google-http-client/src/test/java/com/google/api/client/util/IOUtilsTest.java b/google-http-client/src/test/java/com/google/api/client/util/IOUtilsTest.java
index 4d350354..42166ae5 100644
--- a/google-http-client/src/test/java/com/google/api/client/util/IOUtilsTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/util/IOUtilsTest.java
@@ -53,4 +53,3 @@ public class IOUtilsTest extends TestCase {
     assertTrue(IOUtils.isSymbolicLink(file2));
   }
 }
-
diff --git a/google-http-client/src/test/java/com/google/api/client/util/escape/PercentEscaperTest.java b/google-http-client/src/test/java/com/google/api/client/util/escape/PercentEscaperTest.java
index 6b3e7508..fa8aeba9 100644
--- a/google-http-client/src/test/java/com/google/api/client/util/escape/PercentEscaperTest.java
+++ b/google-http-client/src/test/java/com/google/api/client/util/escape/PercentEscaperTest.java
@@ -26,11 +26,10 @@ public class PercentEscaperTest {
     String actual = escaper.escape("Hello there");
     Assert.assertEquals("Hello%20there", actual);
   }
-  
+
   @Test
   public void testEscapeSpaceDefault() {
-    PercentEscaper escaper =
-        new PercentEscaper(PercentEscaper.SAFE_PLUS_RESERVED_CHARS_URLENCODER);
+    PercentEscaper escaper = new PercentEscaper(PercentEscaper.SAFE_PLUS_RESERVED_CHARS_URLENCODER);
     String actual = escaper.escape("Hello there");
     Assert.assertEquals("Hello%20there", actual);
   }