rdblue commented on code in PR #6951:
URL: https://github.com/apache/iceberg/pull/6951#discussion_r1125568296
##########
core/src/main/java/org/apache/iceberg/rest/HTTPClient.java:
##########
@@ -361,6 +386,60 @@ public void close() throws IOException {
httpClient.close(CloseMode.GRACEFUL);
}
+ public static HTTPClient buildFrom(Map<String, String> properties) {
+ Builder builder = HTTPClient.builder();
+
+ builder.uri(properties.get(CatalogProperties.URI));
+
+ if (PropertyUtil.propertyAsBoolean(properties, SIGV4_ENABLED, false)) {
+ HttpRequestInterceptor interceptor =
+ loadInterceptorDynamically(SIGV4_REQUEST_INTERCEPTOR_IMPL,
properties);
+ builder.withRequestInterceptor(interceptor);
+ }
+
+ return builder.build();
+ }
+
+ @VisibleForTesting
+ static HttpRequestInterceptor loadInterceptorDynamically(
+ String impl, Map<String, String> properties) {
+ HttpRequestInterceptor instance;
+
+ DynConstructors.Ctor<HttpRequestInterceptor> ctor;
+ try {
+ ctor =
+ DynConstructors.builder(HttpRequestInterceptor.class)
+ .loader(HTTPClient.class.getClassLoader())
+ .impl(impl)
+ .buildChecked();
+ } catch (NoSuchMethodException e) {
+ throw new IllegalArgumentException(
+ String.format(
+ "Cannot initialize RequestInterceptor, missing no-arg
constructor: %s", impl),
+ e);
+ }
+
+ try {
+ instance = ctor.newInstance();
+ } catch (ClassCastException e) {
+ throw new IllegalArgumentException(
+ String.format("Cannot initialize, %s does not implement
RequestInterceptor", impl), e);
+ }
+
+ DynMethods.builder("initialize")
+ .hiddenImpl(impl, Map.class)
+ .orNoop()
+ .build(instance)
+ .invoke(properties);
+
+ return instance;
+ }
+
+ /**
+ * @return http client builder
+ * @deprecated use {@link HTTPClient#buildFrom(Map)}
Review Comment:
This should include when this can be removed. For example, "will be removed
in 1.3.0; use HTTPClient.buildFrom".
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]