![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.Compression;
import com.arangodb.Protocol;
import com.arangodb.arch.UsedInApi;
import com.arangodb.config.ArangoConfigProperties;
import com.arangodb.config.HostDescription;
import com.arangodb.config.ProtocolConfig;
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 javax.net.ssl.SSLContext;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
@UsedInApi
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 Class extends ArangoSerdeProvider> serdeProviderClass;
private Integer responseQueueTimeSamples;
private Module protocolModule;
private Executor asyncExecutor;
private Compression compression;
private Integer compressionThreshold;
private Integer compressionLevel;
private ProtocolConfig protocolConfig;
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);
compression = properties.getCompression().orElse(ArangoDefaults.DEFAULT_COMPRESSION);
compressionThreshold = properties.getCompressionThreshold().orElse(ArangoDefaults.DEFAULT_COMPRESSION_THRESHOLD);
compressionLevel = properties.getCompressionLevel().orElse(ArangoDefaults.DEFAULT_COMPRESSION_LEVEL);
serdeProviderClass = properties.getSerdeProviderClass().map((String className) -> {
try {
//noinspection unchecked
return (Class extends ArangoSerdeProvider>) Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}).orElse(null);
}
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() {
if (connectionTtl == null && getProtocol() != Protocol.VST) {
connectionTtl = ArangoDefaults.DEFAULT_CONNECTION_TTL_HTTP;
}
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 Class extends ArangoSerdeProvider> getSerdeProviderClass() {
return serdeProviderClass;
}
public ArangoSerde getUserDataSerde() {
if (userDataSerde != null) {
return userDataSerde;
} else if (serdeProviderClass != null) {
try {
return serdeProviderClass.getDeclaredConstructor().newInstance().create();
} catch (InstantiationException | IllegalAccessException | InvocationTargetException |
NoSuchMethodException e) {
throw new RuntimeException(e);
}
} else {
return ArangoSerdeProvider.of(ContentTypeFactory.of(getProtocol())).create();
}
}
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 void setUserDataSerdeProvider(Class extends ArangoSerdeProvider> serdeProviderClass) {
this.serdeProviderClass = serdeProviderClass;
}
public Integer getResponseQueueTimeSamples() {
return responseQueueTimeSamples;
}
public void setResponseQueueTimeSamples(Integer responseQueueTimeSamples) {
this.responseQueueTimeSamples = responseQueueTimeSamples;
}
public void setProtocolModule(Module m) {
protocolModule = m;
}
public Executor getAsyncExecutor() {
return asyncExecutor;
}
public void setAsyncExecutor(Executor asyncExecutor) {
this.asyncExecutor = asyncExecutor;
}
public Compression getCompression() {
return compression;
}
public void setCompression(Compression compression) {
this.compression = compression;
}
public Integer getCompressionThreshold() {
return compressionThreshold;
}
public void setCompressionThreshold(Integer compressionThreshold) {
this.compressionThreshold = compressionThreshold;
}
public Integer getCompressionLevel() {
return compressionLevel;
}
public void setCompressionLevel(Integer compressionLevel) {
this.compressionLevel = compressionLevel;
}
public ProtocolConfig getProtocolConfig() {
return protocolConfig;
}
public void setProtocolConfig(ProtocolConfig protocolConfig) {
this.protocolConfig = protocolConfig;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy