/*
* Copyright 2017-2020 original authors
*
* 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
*
* https://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 io.micronaut.http.client;
import io.micronaut.context.annotation.ConfigurationProperties;
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
import io.micronaut.core.util.CollectionUtils;
import io.micronaut.http.context.ClientContextPathProvider;
import io.micronaut.http.ssl.SslConfiguration;
import io.micronaut.runtime.ApplicationConfiguration;
import edu.umd.cs.findbugs.annotations.Nullable;
import javax.inject.Inject;
import java.net.URI;
import java.time.Duration;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import static io.micronaut.http.client.ServiceHttpClientConfiguration.PREFIX;
Allows defining HTTP client configurations via the micronaut.http.services
setting. Author: graemerocher Since: 1.0
/**
* Allows defining HTTP client configurations via the {@code micronaut.http.services} setting.
*
* @author graemerocher
* @since 1.0
*/
@EachProperty(PREFIX)
public class ServiceHttpClientConfiguration extends HttpClientConfiguration implements ClientContextPathProvider {
Prefix for HTTP Client settings.
/**
* Prefix for HTTP Client settings.
*/
public static final String PREFIX = "micronaut.http.services";
The default health check uri.
/**
* The default health check uri.
*/
@SuppressWarnings("WeakerAccess")
public static final String DEFAULT_HEALTHCHECKURI = "/health";
The default health check value.
/**
* The default health check value.
*/
@SuppressWarnings("WeakerAccess")
public static final boolean DEFAULT_HEALTHCHECK = false;
The default health check interval in seconds.
/**
* The default health check interval in seconds.
*/
@SuppressWarnings("WeakerAccess")
public static final long DEFAULT_HEALTHCHECKINTERVAL_SECONDS = 30;
private final String serviceId;
private final ServiceConnectionPoolConfiguration connectionPoolConfiguration;
private List<URI> urls = Collections.emptyList();
private String healthCheckUri = DEFAULT_HEALTHCHECKURI;
private boolean healthCheck = DEFAULT_HEALTHCHECK;
private Duration healthCheckInterval = Duration.ofSeconds(DEFAULT_HEALTHCHECKINTERVAL_SECONDS);
private String path;
Creates a new client configuration for the given service ID.
Params: - serviceId – The service id
- connectionPoolConfiguration – The connection pool configuration
- sslConfiguration – The SSL configuration
- applicationConfiguration – The application configuration
/**
* Creates a new client configuration for the given service ID.
*
* @param serviceId The service id
* @param connectionPoolConfiguration The connection pool configuration
* @param sslConfiguration The SSL configuration
* @param applicationConfiguration The application configuration
*/
public ServiceHttpClientConfiguration(
@Parameter String serviceId,
@Nullable ServiceConnectionPoolConfiguration connectionPoolConfiguration,
@Nullable ServiceSslClientConfiguration sslConfiguration,
ApplicationConfiguration applicationConfiguration) {
super(applicationConfiguration);
this.serviceId = serviceId;
if (sslConfiguration != null) {
setSslConfiguration(sslConfiguration);
}
if (connectionPoolConfiguration != null) {
this.connectionPoolConfiguration = connectionPoolConfiguration;
} else {
this.connectionPoolConfiguration = new ServiceConnectionPoolConfiguration();
}
}
Creates a new client configuration for the given service ID.
Params: - serviceId – The service id
- connectionPoolConfiguration – The connection pool configuration
- sslConfiguration – The SSL configuration
- defaultHttpClientConfiguration – The default HTTP client configuration
/**
* Creates a new client configuration for the given service ID.
*
* @param serviceId The service id
* @param connectionPoolConfiguration The connection pool configuration
* @param sslConfiguration The SSL configuration
* @param defaultHttpClientConfiguration The default HTTP client configuration
*/
@Inject
public ServiceHttpClientConfiguration(
@Parameter String serviceId,
@Nullable ServiceConnectionPoolConfiguration connectionPoolConfiguration,
@Nullable ServiceSslClientConfiguration sslConfiguration,
HttpClientConfiguration defaultHttpClientConfiguration) {
super(defaultHttpClientConfiguration);
this.serviceId = serviceId;
if (sslConfiguration != null) {
setSslConfiguration(sslConfiguration);
}
if (connectionPoolConfiguration != null) {
this.connectionPoolConfiguration = connectionPoolConfiguration;
} else {
this.connectionPoolConfiguration = new ServiceConnectionPoolConfiguration();
}
}
The service id.
Returns: The ID of the service
/**
* The service id.
*
* @return The ID of the service
*/
public String getServiceId() {
return serviceId;
}
The URLs.
Returns: The URLs of the service
/**
* The URLs.
*
* @return The URLs of the service
*/
public List<URI> getUrls() {
return urls;
}
Sets the URIs of the service.
Params: - urls – The URIs
/**
* Sets the URIs of the service.
*
* @param urls The URIs
*/
public void setUrls(List<URI> urls) {
if (CollectionUtils.isNotEmpty(urls)) {
this.urls = urls;
}
}
Sets the URL of the service.
Params: - url – The URI
/**
* Sets the URL of the service.
*
* @param url The URI
*/
public void setUrl(URI url) {
if (url != null) {
this.urls = Collections.singletonList(url);
}
}
The URI to check the service for health status.
Returns: The health status uri
/**
* The URI to check the service for health status.
*
* @return The health status uri
*/
public String getHealthCheckUri() {
return healthCheckUri;
}
Sets the health check URI. Default value ("/health"). Params: - healthCheckUri – The health check URI
/**
* Sets the health check URI. Default value ({@value #DEFAULT_HEALTHCHECKURI}).
*
* @param healthCheckUri The health check URI
*/
public void setHealthCheckUri(String healthCheckUri) {
this.healthCheckUri = healthCheckUri;
}
Whether the service health should be checked.
Returns: True if the health should be checked
/**
* Whether the service health should be checked.
*
* @return True if the health should be checked
*/
public boolean isHealthCheck() {
return healthCheck;
}
Sets whether the service health should be checked. Default value (false). Params: - healthCheck – True if the health should be checked
/**
* Sets whether the service health should be checked. Default value ({@value #DEFAULT_HEALTHCHECK}).
* @param healthCheck True if the health should be checked
*/
public void setHealthCheck(boolean healthCheck) {
this.healthCheck = healthCheck;
}
The context path to use for requests.
Returns: The context path
/**
* The context path to use for requests.
*
* @return The context path
*/
public Optional<String> getPath() {
return Optional.ofNullable(path);
}
Sets the context path to use for requests.
Params: - path – The context path
/**
* Sets the context path to use for requests.
*
* @param path The context path
*/
public void setPath(String path) {
this.path = path;
}
@Override
public Optional<String> getContextPath() {
return getPath();
}
The default duration to check health status.
Returns: The duration
/**
* The default duration to check health status.
*
* @return The duration
*/
public Duration getHealthCheckInterval() {
return healthCheckInterval;
}
Sets the default duration to check health status. Default value (30 seconds). Params: - healthCheckInterval – The duration
/**
* Sets the default duration to check health status. Default value ({@value #DEFAULT_HEALTHCHECKINTERVAL_SECONDS} seconds).
*
* @param healthCheckInterval The duration
*/
public void setHealthCheckInterval(Duration healthCheckInterval) {
if (healthCheckInterval != null) {
this.healthCheckInterval = healthCheckInterval;
}
}
@Override
public ConnectionPoolConfiguration getConnectionPoolConfiguration() {
return connectionPoolConfiguration;
}
The default connection pool configuration.
/**
* The default connection pool configuration.
*/
@ConfigurationProperties(ConnectionPoolConfiguration.PREFIX)
public static class ServiceConnectionPoolConfiguration extends ConnectionPoolConfiguration {
}
The default connection pool configuration.
/**
* The default connection pool configuration.
*/
@ConfigurationProperties("ssl")
public static class ServiceSslClientConfiguration extends SslConfiguration {
Sets the key configuration.
Params: - keyConfiguration – The key configuration.
/**
* Sets the key configuration.
*
* @param keyConfiguration The key configuration.
*/
void setKey(@Nullable DefaultKeyConfiguration keyConfiguration) {
if (keyConfiguration != null) {
super.setKey(keyConfiguration);
}
}
Sets the key store.
Params: - keyStoreConfiguration – The key store configuration
/**
* Sets the key store.
*
* @param keyStoreConfiguration The key store configuration
*/
void setKeyStore(@Nullable DefaultKeyStoreConfiguration keyStoreConfiguration) {
if (keyStoreConfiguration != null) {
super.setKeyStore(keyStoreConfiguration);
}
}
Sets trust store configuration.
Params: - trustStore – The trust store configuration
/**
* Sets trust store configuration.
*
* @param trustStore The trust store configuration
*/
void setTrustStore(@Nullable DefaultTrustStoreConfiguration trustStore) {
if (trustStore != null) {
super.setTrustStore(trustStore);
}
}
The default KeyConfiguration
. /**
* The default {@link io.micronaut.http.ssl.SslConfiguration.KeyConfiguration}.
*/
@SuppressWarnings("WeakerAccess")
@ConfigurationProperties(SslConfiguration.KeyConfiguration.PREFIX)
public static class DefaultKeyConfiguration extends SslConfiguration.KeyConfiguration {
}
The default KeyStoreConfiguration
. /**
* The default {@link io.micronaut.http.ssl.SslConfiguration.KeyStoreConfiguration}.
*/
@SuppressWarnings("WeakerAccess")
@ConfigurationProperties(SslConfiguration.KeyStoreConfiguration.PREFIX)
public static class DefaultKeyStoreConfiguration extends SslConfiguration.KeyStoreConfiguration {
}
The default TrustStoreConfiguration
. /**
* The default {@link io.micronaut.http.ssl.SslConfiguration.TrustStoreConfiguration}.
*/
@SuppressWarnings("WeakerAccess")
@ConfigurationProperties(SslConfiguration.TrustStoreConfiguration.PREFIX)
public static class DefaultTrustStoreConfiguration extends SslConfiguration.TrustStoreConfiguration {
}
}
}