From 50acdf6fc46afc231a105ff968db4842e5d6d370 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 3 Jan 2019 16:12:48 -0800 Subject: [PATCH 1/9] Add Java 8 on windows test config --- .kokoro/build.bat | 3 +++ .kokoro/continuous/java10.cfg | 7 ------- .kokoro/continuous/java8-win.cfg | 3 +++ .kokoro/presubmit/java10.cfg | 7 ------- .kokoro/presubmit/java8-win.cfg | 3 +++ 5 files changed, 9 insertions(+), 14 deletions(-) create mode 100644 .kokoro/build.bat delete mode 100644 .kokoro/continuous/java10.cfg create mode 100644 .kokoro/continuous/java8-win.cfg delete mode 100644 .kokoro/presubmit/java10.cfg create mode 100644 .kokoro/presubmit/java8-win.cfg diff --git a/.kokoro/build.bat b/.kokoro/build.bat new file mode 100644 index 000000000..e00de4004 --- /dev/null +++ b/.kokoro/build.bat @@ -0,0 +1,3 @@ +:: See documentation in type-shell-output.bat + +"C:\Program Files\Git\bin\bash.exe" github/google-cloud-java/.kokoro/build.sh diff --git a/.kokoro/continuous/java10.cfg b/.kokoro/continuous/java10.cfg deleted file mode 100644 index 6e2f1f5fa..000000000 --- a/.kokoro/continuous/java10.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java10" -} diff --git a/.kokoro/continuous/java8-win.cfg b/.kokoro/continuous/java8-win.cfg new file mode 100644 index 000000000..0e1b3c17e --- /dev/null +++ b/.kokoro/continuous/java8-win.cfg @@ -0,0 +1,3 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +build_file: "google-cloud-java/.kokoro/build.bat" diff --git a/.kokoro/presubmit/java10.cfg b/.kokoro/presubmit/java10.cfg deleted file mode 100644 index 6e2f1f5fa..000000000 --- a/.kokoro/presubmit/java10.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java10" -} diff --git a/.kokoro/presubmit/java8-win.cfg b/.kokoro/presubmit/java8-win.cfg new file mode 100644 index 000000000..0e1b3c17e --- /dev/null +++ b/.kokoro/presubmit/java8-win.cfg @@ -0,0 +1,3 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +build_file: "google-cloud-java/.kokoro/build.bat" From 6725d420b6589491802b43516961d94d4fd6d1e5 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 3 Jan 2019 16:31:32 -0800 Subject: [PATCH 2/9] Fix build_file config --- .kokoro/continuous/java8-win.cfg | 2 +- .kokoro/presubmit/java8-win.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.kokoro/continuous/java8-win.cfg b/.kokoro/continuous/java8-win.cfg index 0e1b3c17e..b44537d03 100644 --- a/.kokoro/continuous/java8-win.cfg +++ b/.kokoro/continuous/java8-win.cfg @@ -1,3 +1,3 @@ # Format: //devtools/kokoro/config/proto/build.proto -build_file: "google-cloud-java/.kokoro/build.bat" +build_file: "google-http-java-client/.kokoro/build.bat" diff --git a/.kokoro/presubmit/java8-win.cfg b/.kokoro/presubmit/java8-win.cfg index 0e1b3c17e..b44537d03 100644 --- a/.kokoro/presubmit/java8-win.cfg +++ b/.kokoro/presubmit/java8-win.cfg @@ -1,3 +1,3 @@ # Format: //devtools/kokoro/config/proto/build.proto -build_file: "google-cloud-java/.kokoro/build.bat" +build_file: "google-http-java-client/.kokoro/build.bat" From 3aa50639883dd9f725e7cfb1714bfd6b326cffa4 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 3 Jan 2019 16:37:16 -0800 Subject: [PATCH 3/9] Fix build path --- .kokoro/build.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.kokoro/build.bat b/.kokoro/build.bat index e00de4004..e5324a570 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-cloud-java/.kokoro/build.sh +"C:\Program Files\Git\bin\bash.exe" github/google-http-java-client/.kokoro/build.sh From 535cf26464fdc6b5fc8e2ac9b68fb54bb2769ef2 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 3 Jan 2019 16:46:49 -0800 Subject: [PATCH 4/9] Skip maven-enforcer --- pom.xml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pom.xml b/pom.xml index 8ec73aa68..88781bd5d 100644 --- a/pom.xml +++ b/pom.xml @@ -397,25 +397,6 @@ - - org.apache.maven.plugins - maven-enforcer-plugin - 3.0.0-M2 - - enforce-maven - - enforce - - - - - [3.5.4,4.0.0) - - - - - - maven-javadoc-plugin From 5b319d8b01960dcdaf54fee6a0b0ca660de41abe Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Thu, 3 Jan 2019 17:15:30 -0800 Subject: [PATCH 5/9] Replace string utf8 helpers --- .../google/api/client/util/StringUtils.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/google-http-client/src/main/java/com/google/api/client/util/StringUtils.java b/google-http-client/src/main/java/com/google/api/client/util/StringUtils.java index 8d0c92532..80b1273cc 100644 --- a/google-http-client/src/main/java/com/google/api/client/util/StringUtils.java +++ b/google-http-client/src/main/java/com/google/api/client/util/StringUtils.java @@ -15,19 +15,12 @@ package com.google.api.client.util; import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; /** * Utilities for strings. * - *

- * Some of these methods are a proxy for version 1.6 (or newer) of the Apache Commons Codec - * {@link StringUtils} implementation. This is needed in order to support platforms like Android - * which already include an older version of the Apache Commons Codec (Android includes version - * 1.3). To avoid a dependency library conflict, this library includes a reduced private copy of - * version 1.6 (or newer) of the Apache Commons Codec (using a tool like jarjar). - *

- * * @since 1.8 * @author Yaniv Inbar */ @@ -48,13 +41,15 @@ public class StringUtils { * @return encoded bytes, or null if the input string was null * @throws IllegalStateException Thrown when the charset is missing, which should be never * according the the Java specification. - * @see Standard charsets - * @see org.apache.commons.codec.binary.StringUtils#getBytesUtf8(String) * @since 1.8 */ public static byte[] getBytesUtf8(String string) { - return org.apache.commons.codec.binary.StringUtils.getBytesUtf8(string); + if (string == null) { + return null; + } + return string.getBytes(StandardCharsets.UTF_8); } /** @@ -66,11 +61,13 @@ public static byte[] getBytesUtf8(String string) { * charset, or null if the input byte array was null. * @throws IllegalStateException Thrown when a {@link UnsupportedEncodingException} is caught, * which should never happen since the charset is required. - * @see org.apache.commons.codec.binary.StringUtils#newStringUtf8(byte[]) * @since 1.8 */ public static String newStringUtf8(byte[] bytes) { - return org.apache.commons.codec.binary.StringUtils.newStringUtf8(bytes); + if (bytes == null) { + return null; + } + return new String(bytes, StandardCharsets.UTF_8); } private StringUtils() { From 8bb118c029303b10173fd5c655d04a5cd13058dc Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Fri, 4 Jan 2019 10:00:14 -0800 Subject: [PATCH 6/9] Use guava for base64 encoding/decoding --- .../com/google/api/client/util/Base64.java | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/google-http-client/src/main/java/com/google/api/client/util/Base64.java b/google-http-client/src/main/java/com/google/api/client/util/Base64.java index f93b0c095..1063aafd4 100644 --- a/google-http-client/src/main/java/com/google/api/client/util/Base64.java +++ b/google-http-client/src/main/java/com/google/api/client/util/Base64.java @@ -14,16 +14,11 @@ package com.google.api.client.util; +import com.google.common.io.BaseEncoding; +import com.google.common.io.BaseEncoding.DecodingException; + /** - * Proxy for version 1.6 (or newer) of the Apache Commons Codec - * {@link org.apache.commons.codec.binary.Base64} implementation. - * - *

- * This is needed in order to support platforms like Android which already include an older version - * of the Apache Commons Codec (Android includes version 1.3). To avoid a dependency library - * conflict, this library includes a reduced private copy of version 1.6 (or newer) of the Apache - * Commons Codec (using a tool like jarjar). - *

+ * Proxy for handling Base64 encoding/decoding. * * @since 1.8 * @author Yaniv Inbar @@ -36,10 +31,9 @@ public class Base64 { * @param binaryData binary data to encode or {@code null} for {@code null} result * @return byte[] containing Base64 characters in their UTF-8 representation or {@code null} for * {@code null} input - * @see org.apache.commons.codec.binary.Base64#encodeBase64(byte[]) */ public static byte[] encodeBase64(byte[] binaryData) { - return org.apache.commons.codec.binary.Base64.encodeBase64(binaryData); + return StringUtils.getBytesUtf8(encodeBase64String(binaryData)); } /** @@ -47,10 +41,9 @@ public static byte[] encodeBase64(byte[] binaryData) { * * @param binaryData binary data to encode or {@code null} for {@code null} result * @return String containing Base64 characters or {@code null} for {@code null} input - * @see org.apache.commons.codec.binary.Base64#encodeBase64String(byte[]) */ public static String encodeBase64String(byte[] binaryData) { - return org.apache.commons.codec.binary.Base64.encodeBase64String(binaryData); + return BaseEncoding.base64().encode(binaryData); } @@ -61,10 +54,9 @@ public static String encodeBase64String(byte[] binaryData) { * @param binaryData binary data to encode or {@code null} for {@code null} result * @return byte[] containing Base64 characters in their UTF-8 representation or {@code null} for * {@code null} input - * @see org.apache.commons.codec.binary.Base64#encodeBase64URLSafe(byte[]) */ public static byte[] encodeBase64URLSafe(byte[] binaryData) { - return org.apache.commons.codec.binary.Base64.encodeBase64URLSafe(binaryData); + return StringUtils.getBytesUtf8(encodeBase64URLSafeString(binaryData)); } /** @@ -73,32 +65,38 @@ public static byte[] encodeBase64URLSafe(byte[] binaryData) { * * @param binaryData binary data to encode or {@code null} for {@code null} result * @return String containing Base64 characters or {@code null} for {@code null} input - * @see org.apache.commons.codec.binary.Base64#encodeBase64URLSafeString(byte[]) */ public static String encodeBase64URLSafeString(byte[] binaryData) { - return org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString(binaryData); + return BaseEncoding.base64().omitPadding().encode(binaryData); } /** - * Decodes Base64 data into octets. + * Decodes Base64 data into octets. Note that this method handles both URL-safe and + * non-URL-safe base 64 encoded inputs. * * @param base64Data Byte array containing Base64 data or {@code null} for {@code null} result * @return Array containing decoded data or {@code null} for {@code null} input - * @see org.apache.commons.codec.binary.Base64#decodeBase64(byte[]) */ public static byte[] decodeBase64(byte[] base64Data) { - return org.apache.commons.codec.binary.Base64.decodeBase64(base64Data); + return decodeBase64(StringUtils.newStringUtf8(base64Data)); } /** - * Decodes a Base64 String into octets. + * Decodes a Base64 String into octets. Note that this method handles both URL-safe and + * non-URL-safe base 64 encoded strings. * * @param base64String String containing Base64 data or {@code null} for {@code null} result * @return Array containing decoded data or {@code null} for {@code null} input - * @see org.apache.commons.codec.binary.Base64#decodeBase64(String) */ public static byte[] decodeBase64(String base64String) { - return org.apache.commons.codec.binary.Base64.decodeBase64(base64String); + try { + return BaseEncoding.base64().decode(base64String); + } catch (IllegalArgumentException e) { + if (e.getCause() instanceof DecodingException) { + return BaseEncoding.base64Url().decode(base64String); + } + throw e; + } } private Base64() { From 96af1ff29b509287262f0d5447deb88a026410e6 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Fri, 4 Jan 2019 10:04:23 -0800 Subject: [PATCH 7/9] Remove commons-codec dependencies --- google-http-client-assembly/pom.xml | 4 +- google-http-client/pom.xml | 68 ----------------------------- pom.xml | 7 --- 3 files changed, 2 insertions(+), 77 deletions(-) diff --git a/google-http-client-assembly/pom.xml b/google-http-client-assembly/pom.xml index 691062532..91af0998a 100644 --- a/google-http-client-assembly/pom.xml +++ b/google-http-client-assembly/pom.xml @@ -79,7 +79,7 @@ false ${project.build.directory}/libs - android,opengl-api,xmlParserAPIs,commons-codec,json + android,opengl-api,xmlParserAPIs,json @@ -92,7 +92,7 @@ sources false ${project.build.directory}/libs-sources - android,opengl-api,xmlParserAPIs,commons-codec,json + android,opengl-api,xmlParserAPIs,json
diff --git a/google-http-client/pom.xml b/google-http-client/pom.xml index b036147b7..ac8439e34 100644 --- a/google-http-client/pom.xml +++ b/google-http-client/pom.xml @@ -23,7 +23,6 @@ http://download.oracle.com/javase/7/docs/api/ https://google.github.io/guava/releases/${project.guava.version}/api/docs/ - https://commons.apache.org/proper/commons-codec/archives/${project.commons-codec.version}/apidocs/ ${project.name} ${project.version} ${project.artifactId} ${project.version} @@ -41,68 +40,6 @@
- - - org.sonatype.plugins - jarjar-maven-plugin - 1.9 - - - package - - jarjar - - - - commons-codec:commons-codec - com.google.guava:guava - - - - org.apache.commons.codec.** - com.google.api.client.repackaged.org.apache.commons.codec.@1 - - - com.google.common.** - com.google.api.client.repackaged.com.google.common.@1 - - - com.google.api.client.** - - - - - - - - maven-antrun-plugin - 1.8 - - - - scrub - package - - run - - - - - - - - - - - - - - - - maven-jar-plugin @@ -169,11 +106,6 @@ org.apache.httpcomponents httpclient - - commons-codec - commons-codec - provided - com.google.j2objc j2objc-annotations diff --git a/pom.xml b/pom.xml index 8ec73aa68..db07b9001 100644 --- a/pom.xml +++ b/pom.xml @@ -150,11 +150,6 @@ httpclient ${project.httpclient.version} - - commons-codec - commons-codec - ${project.commons-codec.version} - com.google.guava guava @@ -436,7 +431,6 @@ http://fasterxml.github.com/jackson-core/javadoc/${project.jackson-core2.version}/ https://www.javadoc.io/doc/com.google.code.gson/gson/${project.gson.version} https://google.github.io/guava/releases/${project.guava.version}/api/docs/ - https://commons.apache.org/proper/commons-codec/archives/${project.commons-codec.version}/apidocs/ Google HTTP Client Library for Java ${project.version} com.google.api.client.findbugs:com.google.api.client.test.:com.google.api.services @@ -574,7 +568,6 @@ 26.0-android 1.1.4c 1.1.1 - 1.11 4.5.5 2.3-eb 3.2.2 From c3525bf751ab8cbc6888a9437b323e106e9af3b2 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Fri, 4 Jan 2019 10:08:53 -0800 Subject: [PATCH 8/9] Fix urlsafe string encoding --- .../src/main/java/com/google/api/client/util/Base64.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-http-client/src/main/java/com/google/api/client/util/Base64.java b/google-http-client/src/main/java/com/google/api/client/util/Base64.java index 1063aafd4..ac3650f0a 100644 --- a/google-http-client/src/main/java/com/google/api/client/util/Base64.java +++ b/google-http-client/src/main/java/com/google/api/client/util/Base64.java @@ -67,7 +67,7 @@ public static byte[] encodeBase64URLSafe(byte[] binaryData) { * @return String containing Base64 characters or {@code null} for {@code null} input */ public static String encodeBase64URLSafeString(byte[] binaryData) { - return BaseEncoding.base64().omitPadding().encode(binaryData); + return BaseEncoding.base64Url().omitPadding().encode(binaryData); } /** From 494228e227563d4aea916d93a70cbe46b819d17e Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Fri, 4 Jan 2019 10:42:34 -0800 Subject: [PATCH 9/9] Relax javadoc type suppression to allow for windows --- checkstyle-suppressions.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml index d95ec318d..c25fd971a 100644 --- a/checkstyle-suppressions.xml +++ b/checkstyle-suppressions.xml @@ -9,7 +9,7 @@ - +