![JAR search and dependency download from the Maven repository](/logo.png)
com.arangodb.internal.config.ArangoConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
Core module for ArangoDB Java Driver
package com.arangodb.internal.config;
import com.arangodb.ArangoDBException;
import com.arangodb.ContentType;
import com.arangodb.Protocol;
import com.arangodb.config.ArangoConfigProperties;
import com.arangodb.config.HostDescription;
import com.arangodb.entity.LoadBalancingStrategy;
import com.arangodb.internal.ArangoDefaults;
import com.arangodb.internal.serde.ContentTypeFactory;
import com.arangodb.internal.serde.InternalSerde;
import com.arangodb.internal.serde.InternalSerdeProvider;
import com.arangodb.serde.ArangoSerde;
import com.arangodb.serde.ArangoSerdeProvider;
import com.fasterxml.jackson.databind.Module;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLContext;
import java.util.*;
import java.util.stream.Collectors;
public class ArangoConfig {
private final List hosts = new ArrayList<>();
private Protocol protocol;
private Integer timeout;
private String user;
private String password;
private String jwt;
private Boolean useSsl;
private SSLContext sslContext;
private Boolean verifyHost;
private Integer chunkSize;
private Integer maxConnections;
private Long connectionTtl;
private Integer keepAliveInterval;
private Boolean acquireHostList;
private Integer acquireHostListInterval;
private LoadBalancingStrategy loadBalancingStrategy;
private InternalSerde internalSerde;
private ArangoSerde userDataSerde;
private Integer responseQueueTimeSamples;
private Module protocolModule;
private static final Logger LOG = LoggerFactory.getLogger(ArangoConfig.class);
private static ArangoSerdeProvider serdeProvider(ContentType contentType) {
ServiceLoader loader = ServiceLoader.load(ArangoSerdeProvider.class);
ArangoSerdeProvider serdeProvider = null;
for (ArangoSerdeProvider p : loader) {
if (contentType.equals(p.getContentType())) {
if (serdeProvider != null) {
throw new ArangoDBException("Found multiple serde providers! Please set explicitly the one to use.");
}
serdeProvider = p;
}
}
if (serdeProvider == null) {
LOG.warn("No ArangoSerdeProvider found, using InternalSerdeProvider. Please consider registering a custom " +
"ArangoSerdeProvider to avoid depending on internal classes which are not part of the public API.");
serdeProvider = new InternalSerdeProvider(contentType);
}
return serdeProvider;
}
public ArangoConfig() {
// load default properties
loadProperties(new ArangoConfigProperties() {
});
}
public void loadProperties(final ArangoConfigProperties properties) {
hosts.addAll(properties.getHosts().orElse(ArangoDefaults.DEFAULT_HOSTS).stream()
.map(it -> new HostDescription(it.getHost(), it.getPort()))
.collect(Collectors.toList()));
protocol = properties.getProtocol().orElse(ArangoDefaults.DEFAULT_PROTOCOL);
timeout = properties.getTimeout().orElse(ArangoDefaults.DEFAULT_TIMEOUT);
user = properties.getUser().orElse(ArangoDefaults.DEFAULT_USER);
// FIXME: make password field Optional
password = properties.getPassword().orElse(null);
// FIXME: make jwt field Optional
jwt = properties.getJwt().orElse(null);
useSsl = properties.getUseSsl().orElse(ArangoDefaults.DEFAULT_USE_SSL);
verifyHost = properties.getVerifyHost().orElse(ArangoDefaults.DEFAULT_VERIFY_HOST);
chunkSize = properties.getChunkSize().orElse(ArangoDefaults.DEFAULT_CHUNK_SIZE);
// FIXME: make maxConnections field Optional
maxConnections = properties.getMaxConnections().orElse(null);
// FIXME: make connectionTtl field Optional
connectionTtl = properties.getConnectionTtl().orElse(null);
// FIXME: make keepAliveInterval field Optional
keepAliveInterval = properties.getKeepAliveInterval().orElse(null);
acquireHostList = properties.getAcquireHostList().orElse(ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST);
acquireHostListInterval = properties.getAcquireHostListInterval().orElse(ArangoDefaults.DEFAULT_ACQUIRE_HOST_LIST_INTERVAL);
loadBalancingStrategy = properties.getLoadBalancingStrategy().orElse(ArangoDefaults.DEFAULT_LOAD_BALANCING_STRATEGY);
responseQueueTimeSamples = properties.getResponseQueueTimeSamples().orElse(ArangoDefaults.DEFAULT_RESPONSE_QUEUE_TIME_SAMPLES);
}
public List getHosts() {
return hosts;
}
public void addHost(HostDescription hostDescription) {
hosts.add(hostDescription);
}
public Protocol getProtocol() {
return protocol;
}
public void setProtocol(Protocol protocol) {
this.protocol = protocol;
}
public Integer getTimeout() {
return timeout;
}
public void setTimeout(Integer timeout) {
this.timeout = timeout;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getJwt() {
return jwt;
}
public void setJwt(String jwt) {
this.jwt = jwt;
}
public Boolean getUseSsl() {
return useSsl;
}
public void setUseSsl(Boolean useSsl) {
this.useSsl = useSsl;
}
public SSLContext getSslContext() {
return sslContext;
}
public void setSslContext(SSLContext sslContext) {
this.sslContext = sslContext;
}
public Boolean getVerifyHost() {
return verifyHost;
}
public void setVerifyHost(Boolean verifyHost) {
this.verifyHost = verifyHost;
}
public Integer getChunkSize() {
return chunkSize;
}
public void setChunkSize(Integer chunkSize) {
this.chunkSize = chunkSize;
}
public Integer getMaxConnections() {
if (maxConnections == null) {
maxConnections = getDefaultMaxConnections();
}
return maxConnections;
}
private int getDefaultMaxConnections() {
int defaultMaxConnections;
switch (getProtocol()) {
case VST:
defaultMaxConnections = ArangoDefaults.MAX_CONNECTIONS_VST_DEFAULT;
break;
case HTTP_JSON:
case HTTP_VPACK:
defaultMaxConnections = ArangoDefaults.MAX_CONNECTIONS_HTTP_DEFAULT;
break;
case HTTP2_JSON:
case HTTP2_VPACK:
defaultMaxConnections = ArangoDefaults.MAX_CONNECTIONS_HTTP2_DEFAULT;
break;
default:
throw new IllegalArgumentException();
}
return defaultMaxConnections;
}
public void setMaxConnections(Integer maxConnections) {
this.maxConnections = maxConnections;
}
public Long getConnectionTtl() {
return connectionTtl;
}
public void setConnectionTtl(Long connectionTtl) {
this.connectionTtl = connectionTtl;
}
public Integer getKeepAliveInterval() {
return keepAliveInterval;
}
public void setKeepAliveInterval(Integer keepAliveInterval) {
this.keepAliveInterval = keepAliveInterval;
}
public Boolean getAcquireHostList() {
return acquireHostList;
}
public void setAcquireHostList(Boolean acquireHostList) {
this.acquireHostList = acquireHostList;
}
public Integer getAcquireHostListInterval() {
return acquireHostListInterval;
}
public void setAcquireHostListInterval(Integer acquireHostListInterval) {
this.acquireHostListInterval = acquireHostListInterval;
}
public LoadBalancingStrategy getLoadBalancingStrategy() {
return loadBalancingStrategy;
}
public void setLoadBalancingStrategy(LoadBalancingStrategy loadBalancingStrategy) {
this.loadBalancingStrategy = loadBalancingStrategy;
}
public ArangoSerde getUserDataSerde() {
if (userDataSerde == null) {
userDataSerde = serdeProvider(ContentTypeFactory.of(getProtocol())).create();
}
return userDataSerde;
}
public InternalSerde getInternalSerde() {
if (internalSerde == null) {
internalSerde = new InternalSerdeProvider(ContentTypeFactory.of(getProtocol())).create(getUserDataSerde(), protocolModule);
}
return internalSerde;
}
public void setUserDataSerde(ArangoSerde userDataSerde) {
this.userDataSerde = userDataSerde;
}
public Integer getResponseQueueTimeSamples() {
return responseQueueTimeSamples;
}
public void setResponseQueueTimeSamples(Integer responseQueueTimeSamples) {
this.responseQueueTimeSamples = responseQueueTimeSamples;
}
public void setProtocolModule(Module m) {
protocolModule = m;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy