diff --git a/.github/workflows/formatting.yaml b/.github/workflows/formatting.yaml index d4d367cfc..6844407b4 100644 --- a/.github/workflows/formatting.yaml +++ b/.github/workflows/formatting.yaml @@ -18,7 +18,7 @@ jobs: with: java-version: 11 - run: "mvn com.coveo:fmt-maven-plugin:format" - - uses: googleapis/code-suggester@v1.8.0 + - uses: googleapis/code-suggester@v1 with: command: review pull_number: ${{ github.event.pull_request.number }} diff --git a/CHANGELOG.md b/CHANGELOG.md index f2f0776db..b555aa6ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +### [1.31.1](https://www.github.com/googleapis/google-api-java-client/compare/v1.31.0...v1.31.1) (2020-11-16) + + +### Bug Fixes + +* socketfactory not registered for apache ([#1637](https://www.github.com/googleapis/google-api-java-client/issues/1637)) ([e886efa](https://www.github.com/googleapis/google-api-java-client/commit/e886efaa384bac106f2e5efcc3fb59901c251505)) + ## [1.31.0](https://www.github.com/googleapis/google-api-java-client/compare/v1.30.11...v1.31.0) (2020-11-10) diff --git a/README.md b/README.md index c648e2eb9..750e4c398 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ To use Maven, add the following lines to your pom.xml file: com.google.api-client google-api-client - 1.31.0 + 1.31.1 @@ -48,7 +48,7 @@ repositories { google() } dependencies { - compile 'com.google.api-client:google-api-client:1.31.0' + compile 'com.google.api-client:google-api-client:1.31.1' } ``` [//]: # ({x-version-update-end}) diff --git a/google-api-client-android/pom.xml b/google-api-client-android/pom.xml index 9adb76a4f..7569dc0c5 100644 --- a/google-api-client-android/pom.xml +++ b/google-api-client-android/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-android diff --git a/google-api-client-appengine/pom.xml b/google-api-client-appengine/pom.xml index 305f5894d..6989b9379 100644 --- a/google-api-client-appengine/pom.xml +++ b/google-api-client-appengine/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-appengine diff --git a/google-api-client-assembly/pom.xml b/google-api-client-assembly/pom.xml index 59b4383e3..7743928fb 100644 --- a/google-api-client-assembly/pom.xml +++ b/google-api-client-assembly/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml com.google.api-client diff --git a/google-api-client-bom/pom.xml b/google-api-client-bom/pom.xml index 400b1cb2d..c01300ef4 100644 --- a/google-api-client-bom/pom.xml +++ b/google-api-client-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api-client google-api-client-bom - 1.31.0 + 1.31.1 pom Google API Client Library for Java BOM @@ -63,52 +63,52 @@ com.google.api-client google-api-client - 1.31.0 + 1.31.1 com.google.api-client google-api-client-android - 1.31.0 + 1.31.1 com.google.api-client google-api-client-appengine - 1.31.0 + 1.31.1 com.google.api-client google-api-client-assembly - 1.31.0 + 1.31.1 com.google.api-client google-api-client-gson - 1.31.0 + 1.31.1 com.google.api-client google-api-client-jackson2 - 1.31.0 + 1.31.1 com.google.api-client google-api-client-java6 - 1.31.0 + 1.31.1 com.google.api-client google-api-client-protobuf - 1.31.0 + 1.31.1 com.google.api-client google-api-client-servlet - 1.31.0 + 1.31.1 com.google.api-client google-api-client-xml - 1.31.0 + 1.31.1 diff --git a/google-api-client-gson/pom.xml b/google-api-client-gson/pom.xml index 83acf1562..2e4e2da58 100644 --- a/google-api-client-gson/pom.xml +++ b/google-api-client-gson/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-gson diff --git a/google-api-client-jackson2/pom.xml b/google-api-client-jackson2/pom.xml index 97cacb1e6..4246ff2a0 100644 --- a/google-api-client-jackson2/pom.xml +++ b/google-api-client-jackson2/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-jackson2 diff --git a/google-api-client-java6/pom.xml b/google-api-client-java6/pom.xml index 154dba282..825d4943d 100644 --- a/google-api-client-java6/pom.xml +++ b/google-api-client-java6/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-java6 diff --git a/google-api-client-protobuf/pom.xml b/google-api-client-protobuf/pom.xml index 943f80b8f..6f39ae232 100644 --- a/google-api-client-protobuf/pom.xml +++ b/google-api-client-protobuf/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-protobuf diff --git a/google-api-client-servlet/pom.xml b/google-api-client-servlet/pom.xml index 9e3f06386..02c01c584 100644 --- a/google-api-client-servlet/pom.xml +++ b/google-api-client-servlet/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-servlet diff --git a/google-api-client-xml/pom.xml b/google-api-client-xml/pom.xml index 81250443c..26a513acc 100644 --- a/google-api-client-xml/pom.xml +++ b/google-api-client-xml/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client-xml diff --git a/google-api-client/pom.xml b/google-api-client/pom.xml index 65ee561ff..2d8bfc097 100644 --- a/google-api-client/pom.xml +++ b/google-api-client/pom.xml @@ -4,7 +4,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 ../pom.xml google-api-client diff --git a/google-api-client/src/main/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransport.java b/google-api-client/src/main/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransport.java index f5f41fddf..93347cd3e 100644 --- a/google-api-client/src/main/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransport.java +++ b/google-api-client/src/main/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransport.java @@ -21,6 +21,7 @@ import com.google.api.client.http.apache.v2.ApacheHttpTransport; import com.google.api.client.util.Beta; import com.google.api.client.util.SslUtils; +import com.google.common.annotations.VisibleForTesting; import java.io.IOException; import java.net.ProxySelector; import java.security.GeneralSecurityException; @@ -28,7 +29,11 @@ import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; import org.apache.http.client.HttpClient; +import org.apache.http.config.Registry; +import org.apache.http.config.RegistryBuilder; +import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.LayeredConnectionSocketFactory; +import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; @@ -64,42 +69,18 @@ public static ApacheHttpTransport newTrustedTransport() @Beta public static ApacheHttpTransport newTrustedTransport(MtlsProvider mtlsProvider) throws GeneralSecurityException, IOException { - KeyStore mtlsKeyStore = null; - String mtlsKeyStorePassword = null; - if (mtlsProvider.useMtlsClientCertificate()) { - mtlsKeyStore = mtlsProvider.getKeyStore(); - mtlsKeyStorePassword = mtlsProvider.getKeyStorePassword(); - } - + SocketFactoryRegistryHandler handler = new SocketFactoryRegistryHandler(mtlsProvider); PoolingHttpClientConnectionManager connectionManager = - new PoolingHttpClientConnectionManager(-1, TimeUnit.MILLISECONDS); + new PoolingHttpClientConnectionManager( + handler.getSocketFactoryRegistry(), null, null, null, -1, TimeUnit.MILLISECONDS); - // Disable the stale connection check (previously configured in the HttpConnectionParams + // Disable the stale connection check (previously configured in the + // HttpConnectionParams connectionManager.setValidateAfterInactivity(-1); - // Use the included trust store - KeyStore trustStore = GoogleUtils.getCertificateTrustStore(); - SSLContext sslContext = SslUtils.getTlsSslContext(); - - boolean isMtls = false; - if (mtlsKeyStore != null && mtlsKeyStorePassword != null) { - isMtls = true; - SslUtils.initSslContext( - sslContext, - trustStore, - SslUtils.getPkixTrustManagerFactory(), - mtlsKeyStore, - mtlsKeyStorePassword, - SslUtils.getDefaultKeyManagerFactory()); - } else { - SslUtils.initSslContext(sslContext, trustStore, SslUtils.getPkixTrustManagerFactory()); - } - LayeredConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext); - HttpClient client = HttpClientBuilder.create() .useSystemProperties() - .setSSLSocketFactory(socketFactory) .setMaxConnTotal(200) .setMaxConnPerRoute(20) .setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault())) @@ -107,7 +88,56 @@ public static ApacheHttpTransport newTrustedTransport(MtlsProvider mtlsProvider) .disableRedirectHandling() .disableAutomaticRetries() .build(); - return new ApacheHttpTransport(client, isMtls); + return new ApacheHttpTransport(client, handler.isMtls()); + } + + @VisibleForTesting + static class SocketFactoryRegistryHandler { + private final Registry socketFactoryRegistry; + private final boolean isMtls; + + public SocketFactoryRegistryHandler(MtlsProvider mtlsProvider) + throws GeneralSecurityException, IOException { + KeyStore mtlsKeyStore = null; + String mtlsKeyStorePassword = null; + if (mtlsProvider.useMtlsClientCertificate()) { + mtlsKeyStore = mtlsProvider.getKeyStore(); + mtlsKeyStorePassword = mtlsProvider.getKeyStorePassword(); + } + + // Use the included trust store + KeyStore trustStore = GoogleUtils.getCertificateTrustStore(); + SSLContext sslContext = SslUtils.getTlsSslContext(); + + if (mtlsKeyStore != null && mtlsKeyStorePassword != null) { + this.isMtls = true; + SslUtils.initSslContext( + sslContext, + trustStore, + SslUtils.getPkixTrustManagerFactory(), + mtlsKeyStore, + mtlsKeyStorePassword, + SslUtils.getDefaultKeyManagerFactory()); + } else { + this.isMtls = false; + SslUtils.initSslContext(sslContext, trustStore, SslUtils.getPkixTrustManagerFactory()); + } + LayeredConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext); + + this.socketFactoryRegistry = + RegistryBuilder.create() + .register("http", PlainConnectionSocketFactory.getSocketFactory()) + .register("https", socketFactory) + .build(); + } + + public Registry getSocketFactoryRegistry() { + return this.socketFactoryRegistry; + } + + public boolean isMtls() { + return this.isMtls; + } } private GoogleApacheHttpTransport() {} diff --git a/google-api-client/src/test/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransportTest.java b/google-api-client/src/test/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransportTest.java index af7ecea86..18d504287 100644 --- a/google-api-client/src/test/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransportTest.java +++ b/google-api-client/src/test/java/com/google/api/client/googleapis/apache/v2/GoogleApacheHttpTransportTest.java @@ -14,11 +14,16 @@ package com.google.api.client.googleapis.apache.v2; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import com.google.api.client.googleapis.apache.v2.GoogleApacheHttpTransport.SocketFactoryRegistryHandler; import com.google.api.client.googleapis.mtls.MtlsProvider; import com.google.api.client.googleapis.mtls.MtlsTransportBaseTest; import com.google.api.client.http.HttpTransport; import java.io.IOException; import java.security.GeneralSecurityException; +import org.junit.Test; public class GoogleApacheHttpTransportTest extends MtlsTransportBaseTest { @Override @@ -26,4 +31,13 @@ protected HttpTransport buildTrustedTransport(MtlsProvider mtlsProvider) throws GeneralSecurityException, IOException { return GoogleApacheHttpTransport.newTrustedTransport(mtlsProvider); } + + @Test + public void socketFactoryRegistryHandlerTest() throws GeneralSecurityException, IOException { + MtlsProvider mtlsProvider = new TestMtlsProvider(true, createTestMtlsKeyStore(), "", false); + SocketFactoryRegistryHandler handler = new SocketFactoryRegistryHandler(mtlsProvider); + assertNotNull(handler.getSocketFactoryRegistry().lookup("http")); + assertNotNull(handler.getSocketFactoryRegistry().lookup("https")); + assertTrue(handler.isMtls()); + } } diff --git a/google-api-client/src/test/java/com/google/api/client/googleapis/mtls/MtlsTransportBaseTest.java b/google-api-client/src/test/java/com/google/api/client/googleapis/mtls/MtlsTransportBaseTest.java index d795d24cf..096ff4abf 100644 --- a/google-api-client/src/test/java/com/google/api/client/googleapis/mtls/MtlsTransportBaseTest.java +++ b/google-api-client/src/test/java/com/google/api/client/googleapis/mtls/MtlsTransportBaseTest.java @@ -41,7 +41,7 @@ protected static class TestMtlsProvider implements MtlsProvider { private String keyStorePassword; private boolean throwExceptionForGetKeyStore; - TestMtlsProvider( + public TestMtlsProvider( boolean useClientCertificate, KeyStore keystore, String keyStorePassword, diff --git a/pom.xml b/pom.xml index 638a48771..a2239a6e2 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ com.google.api-client google-api-client-parent - 1.31.0 + 1.31.1 pom Parent for the Google API Client Library for Java diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 1032df7c0..c9798f806 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.api-client google-api-client - 1.30.11 + 1.31.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 88b90085e..6b2527149 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.api-client google-api-client - 1.30.11 + 1.31.0 diff --git a/synth.metadata b/synth.metadata index 3ae7fdf24..e35ebbadc 100644 --- a/synth.metadata +++ b/synth.metadata @@ -4,14 +4,14 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/google-api-java-client.git", - "sha": "279fa998adbace327041ea376a2a450e75390cc3" + "sha": "266b309983473ddc066ba957af5bece31aadf7b7" } }, { "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "7db8a6c5ffb12a6e4c2f799c18f00f7f3d60e279" + "sha": "7d652819519dfa24da9e14548232e4aaba71a11c" } } ], diff --git a/versions.txt b/versions.txt index 97bbbea8f..f7e88e380 100644 --- a/versions.txt +++ b/versions.txt @@ -1,4 +1,4 @@ # Format: # module:released-version:current-version -google-api-client:1.31.0:1.31.0 +google-api-client:1.31.1:1.31.1