diff --git a/pom.xml b/pom.xml index 9af847a97..2ba3a0feb 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.gitlab4j gitlab4j-api jar - 5.0.1 + 5.0.2 GitLab4J-API - GitLab API Java Client GitLab4J-API (gitlab4j-api) provides a full featured Java client library for working with GitLab repositories and servers via the GitLab REST API. https://github.com/gitlab4j/gitlab4j-api diff --git a/src/main/java/org/gitlab4j/api/GitLabApiClient.java b/src/main/java/org/gitlab4j/api/GitLabApiClient.java index 3322e8ba1..8c0ed92af 100755 --- a/src/main/java/org/gitlab4j/api/GitLabApiClient.java +++ b/src/main/java/org/gitlab4j/api/GitLabApiClient.java @@ -1,5 +1,21 @@ package org.gitlab4j.api; +import org.gitlab4j.api.Constants.TokenType; +import org.gitlab4j.api.GitLabApi.ApiVersion; +import org.gitlab4j.api.utils.JacksonJson; +import org.gitlab4j.api.utils.MaskingLoggingFilter; +import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; +import org.glassfish.jersey.client.ClientConfig; +import org.glassfish.jersey.client.ClientProperties; +import org.glassfish.jersey.client.JerseyClientBuilder; +import org.glassfish.jersey.jackson.JacksonFeature; +import org.glassfish.jersey.media.multipart.*; +import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; +import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; + +import javax.net.ssl.*; +import javax.ws.rs.client.*; +import javax.ws.rs.core.*; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -14,38 +30,6 @@ import java.util.function.Supplier; import java.util.logging.Level; import java.util.logging.Logger; -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLEngine; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509ExtendedTrustManager; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.Form; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.StreamingOutput; -import org.gitlab4j.api.Constants.TokenType; -import org.gitlab4j.api.GitLabApi.ApiVersion; -import org.gitlab4j.api.utils.JacksonJson; -import org.gitlab4j.api.utils.MaskingLoggingFilter; -import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; -import org.glassfish.jersey.client.ClientConfig; -import org.glassfish.jersey.client.ClientProperties; -import org.glassfish.jersey.client.JerseyClientBuilder; -import org.glassfish.jersey.jackson.JacksonFeature; -import org.glassfish.jersey.media.multipart.BodyPart; -import org.glassfish.jersey.media.multipart.Boundary; -import org.glassfish.jersey.media.multipart.FormDataMultiPart; -import org.glassfish.jersey.media.multipart.MultiPart; -import org.glassfish.jersey.media.multipart.MultiPartFeature; -import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; -import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; /** @@ -69,9 +53,6 @@ public class GitLabApiClient implements AutoCloseable { private SSLContext openSslContext; private HostnameVerifier openHostnameVerifier; private Long sudoAsId; - private Integer connectTimeout; - private Integer readTimeout; - /** * Construct an instance to communicate with a GitLab API server using the specified GitLab API version, * server URL, private token, and secret token. @@ -243,6 +224,7 @@ public GitLabApiClient(ApiVersion apiVersion, String hostUrl, TokenType tokenTyp // to use the features and services explicitly configured by gitlab4j clientConfig.property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true); clientConfig.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true); + clientConfig.property(ClientProperties.FOLLOW_REDIRECTS, true); clientConfig.register(JacksonJson.class); clientConfig.register(JacksonFeature.class); @@ -264,7 +246,7 @@ public void close() { * * @param logger the Logger instance to log to * @param level the logging level (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST) - * @param maxEntitySize maximum number of entity bytes to be logged. When logging if the maxEntitySize + * @param maxEntityLength maximum number of entity bytes to be logged. When logging if the maxEntitySize * is reached, the entity logging will be truncated at maxEntitySize and "...more..." will be added at * the end of the log entry. If maxEntitySize is <= 0, entity logging will be disabled * @param maskedHeaderNames a list of header names that should have the values masked @@ -287,8 +269,13 @@ void enableRequestResponseLogging(Logger logger, Level level, int maxEntityLengt * @param readTimeout the per request read timeout in milliseconds, can be null to use default */ void setRequestTimeout(Integer connectTimeout, Integer readTimeout) { - this.connectTimeout = connectTimeout; - this.readTimeout = readTimeout; + clientConfig.property(ClientProperties.CONNECT_TIMEOUT, connectTimeout); + clientConfig.property(ClientProperties.READ_TIMEOUT, readTimeout); + + // Recreate the Client instance if already created. + if (apiClient != null) { + createApiClient(); + } } /** @@ -796,7 +783,7 @@ protected Invocation.Builder invocation(URL url, MultivaluedMap createApiClient(); } - WebTarget target = apiClient.target(url.toExternalForm()).property(ClientProperties.FOLLOW_REDIRECTS, true); + WebTarget target = apiClient.target(url.toExternalForm()); if (queryParams != null) { for (Map.Entry> param : queryParams.entrySet()) { target = target.queryParam(param.getKey(), param.getValue().toArray()); @@ -816,16 +803,6 @@ protected Invocation.Builder invocation(URL url, MultivaluedMap if (sudoAsId != null && sudoAsId.intValue() > 0) builder = builder.header(SUDO_HEADER, sudoAsId); - // Set the per request connect timeout - if (connectTimeout != null) { - builder.property(ClientProperties.CONNECT_TIMEOUT, connectTimeout); - } - - // Set the per request read timeout - if (readTimeout != null) { - builder.property(ClientProperties.READ_TIMEOUT, readTimeout); - } - return (builder); }