org.apache.iceberg.aws.UrlConnectionHttpClientConfigurations Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of iceberg-aws Show documentation
Show all versions of iceberg-aws Show documentation
A table format for huge analytic datasets
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.iceberg.aws;
import java.time.Duration;
import java.util.Map;
import org.apache.iceberg.relocated.com.google.common.annotations.VisibleForTesting;
import org.apache.iceberg.util.PropertyUtil;
import software.amazon.awssdk.awscore.client.builder.AwsSyncClientBuilder;
import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
class UrlConnectionHttpClientConfigurations {
private Long httpClientUrlConnectionConnectionTimeoutMs;
private Long httpClientUrlConnectionSocketTimeoutMs;
private UrlConnectionHttpClientConfigurations() {}
public void configureHttpClientBuilder(T awsClientBuilder) {
UrlConnectionHttpClient.Builder urlConnectionHttpClientBuilder =
UrlConnectionHttpClient.builder();
configureUrlConnectionHttpClientBuilder(urlConnectionHttpClientBuilder);
awsClientBuilder.httpClientBuilder(urlConnectionHttpClientBuilder);
}
private void initialize(Map httpClientProperties) {
this.httpClientUrlConnectionConnectionTimeoutMs =
PropertyUtil.propertyAsNullableLong(
httpClientProperties, HttpClientProperties.URLCONNECTION_CONNECTION_TIMEOUT_MS);
this.httpClientUrlConnectionSocketTimeoutMs =
PropertyUtil.propertyAsNullableLong(
httpClientProperties, HttpClientProperties.URLCONNECTION_SOCKET_TIMEOUT_MS);
}
@VisibleForTesting
void configureUrlConnectionHttpClientBuilder(
UrlConnectionHttpClient.Builder urlConnectionHttpClientBuilder) {
if (httpClientUrlConnectionConnectionTimeoutMs != null) {
urlConnectionHttpClientBuilder.connectionTimeout(
Duration.ofMillis(httpClientUrlConnectionConnectionTimeoutMs));
}
if (httpClientUrlConnectionSocketTimeoutMs != null) {
urlConnectionHttpClientBuilder.socketTimeout(
Duration.ofMillis(httpClientUrlConnectionSocketTimeoutMs));
}
}
public static UrlConnectionHttpClientConfigurations create(
Map httpClientProperties) {
UrlConnectionHttpClientConfigurations configurations =
new UrlConnectionHttpClientConfigurations();
configurations.initialize(httpClientProperties);
return configurations;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy