From cc6bba48c57beb61cf787c07ba291af21f11d09c Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Tue, 5 Dec 2023 11:53:58 +0100 Subject: [PATCH] Remove deprecated `HttpClientBuilder` `HttpClientBuilder` has been deprecated for removal for a while and it is now safe to remove it. The functionality has been fully migrated to `NessieClientBuilder`. --- .../client/http/HttpClientBuilder.java | 169 ------------------ .../tools/compatibility/api/NessieAPI.java | 4 +- .../internal/AbstractNessieApiHolder.java | 9 + .../internal/TestNessieApiHolder.java | 2 +- .../TestNessieCompatibilityExtensions.java | 11 +- 5 files changed, 23 insertions(+), 172 deletions(-) delete mode 100644 api/client/src/main/java/org/projectnessie/client/http/HttpClientBuilder.java diff --git a/api/client/src/main/java/org/projectnessie/client/http/HttpClientBuilder.java b/api/client/src/main/java/org/projectnessie/client/http/HttpClientBuilder.java deleted file mode 100644 index 5971e5996b4..00000000000 --- a/api/client/src/main/java/org/projectnessie/client/http/HttpClientBuilder.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2020 Dremio - * - * 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 org.projectnessie.client.http; - -import static org.projectnessie.client.NessieConfigConstants.CONF_ENABLE_API_COMPATIBILITY_CHECK; - -import java.net.URI; -import java.util.function.Function; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLParameters; -import org.projectnessie.client.NessieClientBuilder; -import org.projectnessie.client.api.NessieApi; -import org.projectnessie.client.auth.NessieAuthentication; - -/** - * This is the deprecated builder class to create a {@link NessieApi} instance for - * HTTP/REST. - * - *

Note that this class does not build an HTTP client but a Nessie API client. - * - * @deprecated This class is deprecated for removal. Migrate your code to use {@link - * NessieClientBuilder#createClientBuilder(String, String)} - */ -@Deprecated -public class HttpClientBuilder extends NessieHttpClientBuilderImpl { - - @Deprecated // for removal - public static final String ENABLE_API_COMPATIBILITY_CHECK_SYSTEM_PROPERTY = - CONF_ENABLE_API_COMPATIBILITY_CHECK; - - public HttpClientBuilder() {} - - /** - * Migrate calling code to use {@link - * NessieClientBuilder#createClientBuilderFromSystemSettings()}. - */ - @Deprecated - public static HttpClientBuilder builder() { - return new HttpClientBuilder(); - } - - @Override - public HttpClientBuilder withUri(String uri) { - return (HttpClientBuilder) super.withUri(uri); - } - - @SuppressWarnings("deprecation") - @Override - public HttpClientBuilder fromSystemProperties() { - return (HttpClientBuilder) super.fromSystemProperties(); - } - - @Override - public HttpClientBuilder fromConfig(Function configuration) { - return (HttpClientBuilder) super.fromConfig(configuration); - } - - @Override - public HttpClientBuilder withAuthenticationFromConfig(Function configuration) { - return (HttpClientBuilder) super.withAuthenticationFromConfig(configuration); - } - - @Override - public HttpClientBuilder withUri(URI uri) { - return (HttpClientBuilder) super.withUri(uri); - } - - @Override - public HttpClientBuilder withAuthentication(NessieAuthentication authentication) { - return (HttpClientBuilder) super.withAuthentication(authentication); - } - - @Override - public HttpClientBuilder withTracing(boolean tracing) { - return (HttpClientBuilder) super.withTracing(tracing); - } - - @Override - public HttpClientBuilder withReadTimeout(int readTimeoutMillis) { - return (HttpClientBuilder) super.withReadTimeout(readTimeoutMillis); - } - - @Override - public HttpClientBuilder withConnectionTimeout(int connectionTimeoutMillis) { - return (HttpClientBuilder) super.withConnectionTimeout(connectionTimeoutMillis); - } - - @Override - public HttpClientBuilder withDisableCompression(boolean disableCompression) { - return (HttpClientBuilder) super.withDisableCompression(disableCompression); - } - - @Override - public HttpClientBuilder withSSLCertificateVerificationDisabled( - boolean certificateVerificationDisabled) { - return (HttpClientBuilder) - super.withSSLCertificateVerificationDisabled(certificateVerificationDisabled); - } - - @Override - public HttpClientBuilder withSSLContext(SSLContext sslContext) { - return (HttpClientBuilder) super.withSSLContext(sslContext); - } - - @Override - public HttpClientBuilder withSSLParameters(SSLParameters sslParameters) { - return (HttpClientBuilder) super.withSSLParameters(sslParameters); - } - - @Override - public HttpClientBuilder withHttp2Upgrade(boolean http2Upgrade) { - return (HttpClientBuilder) super.withHttp2Upgrade(http2Upgrade); - } - - @Override - public HttpClientBuilder withFollowRedirects(String redirects) { - return (HttpClientBuilder) super.withFollowRedirects(redirects); - } - - @Override - @Deprecated - @SuppressWarnings("deprecation") - public HttpClientBuilder withForceUrlConnectionClient(boolean forceUrlConnectionClient) { - return (HttpClientBuilder) super.withForceUrlConnectionClient(forceUrlConnectionClient); - } - - @Override - public HttpClientBuilder withClientName(String clientName) { - return (HttpClientBuilder) super.withClientName(clientName); - } - - @Override - public HttpClientBuilder withApiCompatibilityCheck(boolean enable) { - return (HttpClientBuilder) super.withApiCompatibilityCheck(enable); - } - - @Override - public HttpClientBuilder withResponseFactory(HttpResponseFactory responseFactory) { - return (HttpClientBuilder) super.withResponseFactory(responseFactory); - } - - @Override - public HttpClientBuilder addRequestFilter(RequestFilter filter) { - return (HttpClientBuilder) super.addRequestFilter(filter); - } - - @Override - public HttpClientBuilder addResponseFilter(ResponseFilter filter) { - return (HttpClientBuilder) super.addResponseFilter(filter); - } - - @Override - public API build(Class apiVersion) { - return super.build(apiVersion); - } -} diff --git a/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/api/NessieAPI.java b/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/api/NessieAPI.java index 2f0534fa9ca..3ceed8cd20d 100644 --- a/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/api/NessieAPI.java +++ b/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/api/NessieAPI.java @@ -34,7 +34,9 @@ @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface NessieAPI { - String builderClassName() default "org.projectnessie.client.http.HttpClientBuilder"; + String DEFAULT_BUILDER_CLASS_NAME = "_DEFAULT_BUILDER_CLASS_NAME_"; + + String builderClassName() default DEFAULT_BUILDER_CLASS_NAME; /** * Defines the target Nessie version instance in case multiple Nessie versions are running, for diff --git a/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/internal/AbstractNessieApiHolder.java b/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/internal/AbstractNessieApiHolder.java index 5ece3d31da2..78def628fac 100644 --- a/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/internal/AbstractNessieApiHolder.java +++ b/compatibility/common/src/main/java/org/projectnessie/tools/compatibility/internal/AbstractNessieApiHolder.java @@ -124,6 +124,10 @@ protected static AutoCloseable createNessieClient(ClassLoader classLoader, Clien Class nessieClientBuilderClass = classLoader.loadClass("org.projectnessie.client.NessieClientBuilder"); String builderClass = clientKey.getBuilderClass(); + if (NessieAPI.DEFAULT_BUILDER_CLASS_NAME.equals(builderClass)) { + builderClass = null; + } + try { // New functionality using NessieClientBuilder and the service loader mechanism. Method createClientBuilderMethod = @@ -131,6 +135,11 @@ protected static AutoCloseable createNessieClient(ClassLoader classLoader, Clien "createClientBuilder", String.class, String.class); builderInstance = createClientBuilderMethod.invoke(null, null, builderClass); } catch (NoSuchMethodException ignore) { + if (builderClass == null) { + // Fall back to legacy (and now removed) HttpClientBuilder. See + // https://github.com/projectnessie/nessie/pull/7803 + builderClass = "org.projectnessie.client.http.HttpClientBuilder"; + } Class builderClazz = classLoader.loadClass(builderClass); builderInstance = builderClazz.getMethod("builder").invoke(null); } diff --git a/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieApiHolder.java b/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieApiHolder.java index b4e536a1f63..5b532430803 100644 --- a/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieApiHolder.java +++ b/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieApiHolder.java @@ -55,7 +55,7 @@ void currentVersionServer() { new CurrentNessieApiHolder( new ClientKey( Version.CURRENT, - "org.projectnessie.client.http.HttpClientBuilder", + "org.projectnessie.client.http.NessieHttpClientBuilderImpl", NessieApiV1.class, ImmutableMap.of( "nessie.uri", "http://127.42.42.42:19120", diff --git a/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieCompatibilityExtensions.java b/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieCompatibilityExtensions.java index 7a274ac60c2..ee5d141b7a9 100644 --- a/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieCompatibilityExtensions.java +++ b/compatibility/common/src/test/java/org/projectnessie/tools/compatibility/internal/TestNessieCompatibilityExtensions.java @@ -209,6 +209,7 @@ void upgrade() { soft.assertThat(UpgradeSample.never).isEmpty(); } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith({OlderNessieClientsExtension.class, SoftAssertionsExtension.class}) static class OldClientsSample { @InjectSoftAssertions protected SoftAssertions soft; @@ -254,6 +255,7 @@ void never() { } } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith({OlderNessieServersExtension.class, SoftAssertionsExtension.class}) static class OldServersSample { @InjectSoftAssertions protected SoftAssertions soft; @@ -304,6 +306,7 @@ void never() { } } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith({OlderNessieServersExtension.class, SoftAssertionsExtension.class}) static class ApiEndpointServerSample { @InjectSoftAssertions protected SoftAssertions soft; @@ -318,7 +321,7 @@ static class ApiEndpointServerSample { static final List allVersions = new ArrayList<>(); @Test - void testSome() throws Exception { + void testSome() { soft.assertThat(api).isNotNull().isSameAs(apiStatic); soft.assertThat(uri).isNotNull().isEqualTo(uriStatic); soft.assertThat(version).isNotNull().isEqualTo(versionStatic); @@ -330,6 +333,7 @@ void testSome() throws Exception { } } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith(OlderNessieServersExtension.class) static class OuterSample { static final List outerVersions = new ArrayList<>(); @@ -353,6 +357,7 @@ void inner() { } } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith({NessieUpgradesExtension.class, SoftAssertionsExtension.class}) static class UpgradeSample { @InjectSoftAssertions protected SoftAssertions soft; @@ -398,6 +403,7 @@ void never() { } } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith(OlderNessieClientsExtension.class) @ExtendWith(OlderNessieServersExtension.class) static class TooManyExtensions1 { @@ -405,6 +411,7 @@ static class TooManyExtensions1 { void testSome() {} } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith(OlderNessieClientsExtension.class) @ExtendWith(NessieUpgradesExtension.class) static class TooManyExtensions2 { @@ -412,6 +419,7 @@ static class TooManyExtensions2 { void testSome() {} } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith(NessieUpgradesExtension.class) @ExtendWith(OlderNessieServersExtension.class) static class TooManyExtensions3 { @@ -419,6 +427,7 @@ static class TooManyExtensions3 { void testSome() {} } + @SuppressWarnings({"JUnitMalformedDeclaration", "NewClassNamingConvention"}) @ExtendWith(OlderNessieClientsExtension.class) @ExtendWith(OlderNessieServersExtension.class) @ExtendWith(NessieUpgradesExtension.class)