Skip to content

Commit 9341578

Browse files
authored
ConfigPropertiesProvider API (#466)
1 parent 84e0cf1 commit 9341578

28 files changed

+306
-204
lines changed

.gitignore

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
/.classpath
2-
/.project
3-
/.settings
4-
**/target
5-
/.idea
6-
/*.iml
7-
/bin
1+
.classpath
2+
.project
3+
.settings
4+
target
5+
.idea
6+
*.iml
7+
.directory
88

99
/docker/jwtHeader
1010
/docker/jwtSecret
11-
1211
/docker/data
13-
**/test-results-native
12+
13+
test-results-native
1414
.flattened-pom.xml

driver/src/main/java/com/arangodb/ArangoDB.java

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
package com.arangodb;
2222

23+
import com.arangodb.config.ConfigPropertiesProvider;
24+
import com.arangodb.config.ConfigPropertyKey;
2325
import com.arangodb.entity.*;
2426
import com.arangodb.internal.ArangoDBImpl;
2527
import com.arangodb.internal.ArangoDefaults;
@@ -39,10 +41,8 @@
3941

4042
import javax.annotation.concurrent.ThreadSafe;
4143
import javax.net.ssl.SSLContext;
42-
import java.io.InputStream;
4344
import java.util.Collection;
4445
import java.util.Locale;
45-
import java.util.Properties;
4646

4747
/**
4848
* Central access point for applications to communicate with an ArangoDB server.
@@ -333,38 +333,28 @@ public interface ArangoDB extends ArangoSerdeAccessor {
333333
* @author Mark Vollmary
334334
*/
335335
class Builder extends InternalArangoDBBuilder {
336-
private static final String PROPERTY_KEY_PROTOCOL = "arangodb.protocol";
337336

338-
protected Protocol protocol;
337+
protected Protocol protocol = ArangoDefaults.DEFAULT_NETWORK_PROTOCOL;
339338

340339
public Builder() {
341340
super();
342341
}
343342

344-
private static Protocol loadProtocol(final Properties properties, final Protocol currentValue) {
345-
return Protocol.valueOf(
346-
getProperty(properties, PROPERTY_KEY_PROTOCOL, currentValue,
347-
ArangoDefaults.DEFAULT_NETWORK_PROTOCOL)
348-
.toUpperCase(Locale.ROOT));
343+
private static Protocol loadProtocol(final ConfigPropertiesProvider properties, final Protocol currentValue) {
344+
return Protocol.valueOf(getProperty(properties, ConfigPropertyKey.PROTOCOL, currentValue).toUpperCase(Locale.ROOT));
349345
}
350346

351-
@Override
352-
protected void loadProperties(final Properties properties) {
353-
super.loadProperties(properties);
347+
public Builder loadProperties(final ConfigPropertiesProvider properties) {
348+
doLoadProperties(properties);
354349
protocol = loadProtocol(properties, protocol);
350+
return this;
355351
}
356352

357353
public Builder useProtocol(final Protocol protocol) {
358354
this.protocol = protocol;
359355
return this;
360356
}
361357

362-
@Override
363-
public Builder loadProperties(final InputStream in) {
364-
super.loadProperties(in);
365-
return this;
366-
}
367-
368358
/**
369359
* Adds a host to connect to. Multiple hosts can be added to provide fallbacks.
370360
*
@@ -461,7 +451,7 @@ public Builder verifyHost(final Boolean verifyHost) {
461451
* @return {@link ArangoDB.Builder}
462452
*/
463453
public Builder chunksize(final Integer chunksize) {
464-
setChunksize(chunksize);
454+
setChunkSize(chunksize);
465455
return this;
466456
}
467457

@@ -617,7 +607,7 @@ public ArangoDB build() {
617607

618608
return new ArangoDBImpl(
619609
new VstCommunicationSync.Builder(hostHandler).timeout(timeout).user(user).password(password)
620-
.jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunksize)
610+
.jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize)
621611
.maxConnections(maxConnections).connectionTtl(connectionTtl),
622612
new HttpCommunication.Builder().hostHandler(hostHandler),
623613
serde,

driver/src/main/java/com/arangodb/async/ArangoDBAsync.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.arangodb.async.internal.ArangoDBAsyncImpl;
2525
import com.arangodb.async.internal.velocystream.VstCommunicationAsync;
2626
import com.arangodb.async.internal.velocystream.VstConnectionFactoryAsync;
27+
import com.arangodb.config.ConfigPropertiesProvider;
2728
import com.arangodb.entity.*;
2829
import com.arangodb.internal.ArangoDefaults;
2930
import com.arangodb.internal.InternalArangoDBBuilder;
@@ -42,7 +43,6 @@
4243

4344
import javax.annotation.concurrent.ThreadSafe;
4445
import javax.net.ssl.SSLContext;
45-
import java.io.InputStream;
4646
import java.util.Collection;
4747
import java.util.concurrent.CompletableFuture;
4848

@@ -308,9 +308,8 @@ public Builder() {
308308
super();
309309
}
310310

311-
@Override
312-
public Builder loadProperties(final InputStream in) {
313-
super.loadProperties(in);
311+
public Builder loadProperties(final ConfigPropertiesProvider config) {
312+
super.doLoadProperties(config);
314313
return this;
315314
}
316315

@@ -399,7 +398,7 @@ public Builder sslContext(final SSLContext sslContext) {
399398
* @return {@link ArangoDBAsync.Builder}
400399
*/
401400
public Builder chunksize(final Integer chunksize) {
402-
setChunksize(chunksize);
401+
setChunkSize(chunksize);
403402
return this;
404403
}
405404

@@ -535,13 +534,13 @@ public ArangoDBAsync build() {
535534

536535
private VstCommunicationAsync.Builder asyncBuilder(final HostHandler hostHandler) {
537536
return new VstCommunicationAsync.Builder(hostHandler).timeout(timeout).user(user).password(password)
538-
.jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunksize).maxConnections(maxConnections)
537+
.jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize).maxConnections(maxConnections)
539538
.connectionTtl(connectionTtl);
540539
}
541540

542541
private VstCommunicationSync.Builder syncBuilder(final HostHandler hostHandler) {
543542
return new VstCommunicationSync.Builder(hostHandler).timeout(timeout).user(user).password(password)
544-
.jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunksize).maxConnections(maxConnections)
543+
.jwt(jwt).useSsl(useSsl).sslContext(sslContext).chunksize(chunkSize).maxConnections(maxConnections)
545544
.connectionTtl(connectionTtl);
546545
}
547546

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.arangodb.config;
2+
3+
4+
public interface ConfigPropertiesProvider {
5+
6+
/**
7+
* @param key the property key
8+
* @return the configuration property with the specified key if present, {@code null} otherwise
9+
*/
10+
String getProperty(String key);
11+
12+
default String getProperty(ConfigPropertyKey key) {
13+
return getProperty(key.getValue());
14+
}
15+
16+
default String getProperty(String key, String defaultValue) {
17+
String p = getProperty(key);
18+
return p != null ? p : defaultValue;
19+
}
20+
21+
default String getProperty(ConfigPropertyKey key, String defaultValue) {
22+
String p = getProperty(key);
23+
return p != null ? p : defaultValue;
24+
}
25+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.arangodb.config;
2+
3+
public enum ConfigPropertyKey {
4+
HOSTS("hosts"),
5+
TIMEOUT("timeout"),
6+
USER("user"),
7+
PASSWORD("password"),
8+
JWT("jwt"),
9+
USE_SSL("ssl"),
10+
VERIFY_HOST("verifyHost"),
11+
VST_CHUNK_SIZE("chunkSize"),
12+
MAX_CONNECTIONS("connections.max"),
13+
CONNECTION_TTL("connections.ttl"),
14+
KEEP_ALIVE_INTERVAL("connections.keepAlive.interval"),
15+
ACQUIRE_HOST_LIST("acquireHostList"),
16+
ACQUIRE_HOST_LIST_INTERVAL("acquireHostList.interval"),
17+
LOAD_BALANCING_STRATEGY("loadBalancingStrategy"),
18+
RESPONSE_QUEUE_TIME_SAMPLES("metrics.responseQueueTimeSamples"),
19+
PROTOCOL("protocol");
20+
21+
private final String value;
22+
23+
ConfigPropertyKey(String value) {
24+
this.value = value;
25+
}
26+
27+
public String getValue() {
28+
return value;
29+
}
30+
31+
}

driver/src/main/java/com/arangodb/internal/ArangoDefaults.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public final class ArangoDefaults {
3838
public static final int CHUNK_MAX_HEADER_SIZE = CHUNK_MIN_HEADER_SIZE + LONG_BYTES;
3939
public static final int CHUNK_DEFAULT_CONTENT_SIZE = 30000;
4040
public static final int MAX_CONNECTIONS_VST_DEFAULT = 1;
41-
public static final Integer CONNECTION_TTL_VST_DEFAULT = null;
41+
public static final Long CONNECTION_TTL_VST_DEFAULT = null;
4242
public static final int MAX_CONNECTIONS_HTTP_DEFAULT = 20;
4343
public static final int MAX_CONNECTIONS_HTTP2_DEFAULT = 1;
4444
public static final Protocol DEFAULT_NETWORK_PROTOCOL = Protocol.HTTP2_JSON;

0 commit comments

Comments
 (0)