diff --git a/spring-web/src/main/java/org/springframework/http/client/ClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/ClientHttpRequestFactory.java index f2ea5497927..2c433fb6fee 100644 --- a/spring-web/src/main/java/org/springframework/http/client/ClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/ClientHttpRequestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.http.client; -import java.io.Closeable; import java.io.IOException; import java.net.URI; @@ -30,7 +29,7 @@ import org.springframework.http.HttpMethod; * @since 3.0 */ @FunctionalInterface -public interface ClientHttpRequestFactory extends Closeable { +public interface ClientHttpRequestFactory { /** * Create a new {@link ClientHttpRequest} for the specified URI and HTTP method. @@ -43,8 +42,4 @@ public interface ClientHttpRequestFactory extends Closeable { */ ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) throws IOException; - @Override - default void close() throws IOException { - - } } diff --git a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java index 2e641865b7c..00d068231dc 100644 --- a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -327,11 +327,6 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest */ @Override public void destroy() throws Exception { - close(); - } - - @Override - public void close() throws IOException { HttpClient httpClient = getHttpClient(); if (httpClient instanceof Closeable) { ((Closeable) httpClient).close(); diff --git a/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java index d321652af97..e81bbe61a4c 100644 --- a/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -107,11 +107,6 @@ public class OkHttp3ClientHttpRequestFactory implements ClientHttpRequestFactory @Override public void destroy() throws IOException { - close(); - } - - @Override - public void close() throws IOException { if (this.defaultClient) { // Clean up the client if we created it in the constructor Cache cache = this.client.cache(); @@ -123,6 +118,7 @@ public class OkHttp3ClientHttpRequestFactory implements ClientHttpRequestFactory } } + static Request buildRequest(HttpHeaders headers, byte[] content, URI uri, HttpMethod method) throws MalformedURLException { diff --git a/spring-web/src/main/java/org/springframework/http/client/support/HttpAccessor.java b/spring-web/src/main/java/org/springframework/http/client/support/HttpAccessor.java index 648c808fd5a..e2d59b63470 100644 --- a/spring-web/src/main/java/org/springframework/http/client/support/HttpAccessor.java +++ b/spring-web/src/main/java/org/springframework/http/client/support/HttpAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.http.client.support; -import java.io.Closeable; import java.io.IOException; import java.net.URI; import java.util.ArrayList; @@ -49,7 +48,7 @@ import org.springframework.util.Assert; * @see ClientHttpRequestFactory * @see org.springframework.web.client.RestTemplate */ -public abstract class HttpAccessor implements Closeable { +public abstract class HttpAccessor { /** Logger available to subclasses. */ protected final Log logger = HttpLogging.forLogName(getClass()); @@ -67,7 +66,7 @@ public abstract class HttpAccessor implements Closeable { * Configure the Apache HttpComponents or OkHttp request factory to enable PATCH. * @see #createRequest(URI, HttpMethod) * @see SimpleClientHttpRequestFactory - * @see org.springframework.http.client.HttpComponentsClientHttpRequestFactory + * @see org.springframework.http.client.HttpComponentsAsyncClientHttpRequestFactory * @see org.springframework.http.client.OkHttp3ClientHttpRequestFactory */ public void setRequestFactory(ClientHttpRequestFactory requestFactory) { @@ -134,15 +133,4 @@ public abstract class HttpAccessor implements Closeable { this.clientHttpRequestInitializers.forEach(initializer -> initializer.initialize(request)); } - /** - * Close the underlying {@link ClientHttpRequestFactory}. - *
This should not be called if the factory has been {@link #setRequestFactory(ClientHttpRequestFactory) set} - * and is externally managed. - * @throws IOException if the request factory cannot be closed properly - */ - @Override - public void close() throws IOException { - this.requestFactory.close(); - } - } diff --git a/spring-web/src/test/java/org/springframework/http/client/AbstractHttpRequestFactoryTests.java b/spring-web/src/test/java/org/springframework/http/client/AbstractHttpRequestFactoryTests.java index 652efe58b06..427f21f6190 100644 --- a/spring-web/src/test/java/org/springframework/http/client/AbstractHttpRequestFactoryTests.java +++ b/spring-web/src/test/java/org/springframework/http/client/AbstractHttpRequestFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; @@ -46,15 +47,17 @@ abstract class AbstractHttpRequestFactoryTests extends AbstractMockWebServerTest @BeforeEach final void createFactory() throws Exception { - this.factory = createRequestFactory(); - if (this.factory instanceof InitializingBean) { - ((InitializingBean) this.factory).afterPropertiesSet(); + factory = createRequestFactory(); + if (factory instanceof InitializingBean) { + ((InitializingBean) factory).afterPropertiesSet(); } } @AfterEach final void destroyFactory() throws Exception { - this.factory.close(); + if (factory instanceof DisposableBean) { + ((DisposableBean) factory).destroy(); + } } diff --git a/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java b/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java index 4d7b4ebe9ef..96a725d156e 100644 --- a/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java +++ b/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java @@ -55,22 +55,19 @@ public class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpReq @Test public void assertCustomConfig() throws Exception { HttpClient httpClient = HttpClientBuilder.create().build(); - HttpComponentsClientHttpRequest request; - try (HttpComponentsClientHttpRequestFactory hrf = new HttpComponentsClientHttpRequestFactory(httpClient)) { - hrf.setConnectTimeout(1234); - hrf.setConnectionRequestTimeout(4321); + HttpComponentsClientHttpRequestFactory hrf = new HttpComponentsClientHttpRequestFactory(httpClient); + hrf.setConnectTimeout(1234); + hrf.setConnectionRequestTimeout(4321); - URI uri = new URI(baseUrl + "/status/ok"); - request = (HttpComponentsClientHttpRequest) - hrf.createRequest(uri, HttpMethod.GET); + URI uri = new URI(baseUrl + "/status/ok"); + HttpComponentsClientHttpRequest request = (HttpComponentsClientHttpRequest) hrf.createRequest(uri, HttpMethod.GET); - Object config = request.getHttpContext().getAttribute(HttpClientContext.REQUEST_CONFIG); - assertThat(config).as("Request config should be set").isNotNull(); - assertThat(config).as("Wrong request config type " + config.getClass().getName()).isInstanceOf(RequestConfig.class); - RequestConfig requestConfig = (RequestConfig) config; - assertThat(requestConfig.getConnectTimeout()).as("Wrong custom connection timeout").isEqualTo(Timeout.of(1234, MILLISECONDS)); - assertThat(requestConfig.getConnectionRequestTimeout()).as("Wrong custom connection request timeout").isEqualTo(Timeout.of(4321, MILLISECONDS)); - } + Object config = request.getHttpContext().getAttribute(HttpClientContext.REQUEST_CONFIG); + assertThat(config).as("Request config should be set").isNotNull(); + assertThat(config).as("Wrong request config type " + config.getClass().getName()).isInstanceOf(RequestConfig.class); + RequestConfig requestConfig = (RequestConfig) config; + assertThat(requestConfig.getConnectTimeout()).as("Wrong custom connection timeout").isEqualTo(Timeout.of(1234, MILLISECONDS)); + assertThat(requestConfig.getConnectionRequestTimeout()).as("Wrong custom connection request timeout").isEqualTo(Timeout.of(4321, MILLISECONDS)); } @Test