5555import com .arangodb .velocypack .VPack ;
5656import com .arangodb .velocypack .VPackParser ;
5757
58+
5859/**
5960 * @author Mark Vollmary
6061 *
6162 */
6263public abstract class InternalArangoDBBuilder {
6364
64- private static final Logger LOGGER = LoggerFactory .getLogger (InternalArangoDBBuilder .class );
65+ private static final Logger LOG = LoggerFactory .getLogger (InternalArangoDBBuilder .class );
6566
6667 private static final String PROPERTY_KEY_HOSTS = "arangodb.hosts" ;
6768 private static final String PROPERTY_KEY_HOST = "arangodb.host" ;
@@ -70,10 +71,12 @@ public abstract class InternalArangoDBBuilder {
7071 private static final String PROPERTY_KEY_USER = "arangodb.user" ;
7172 private static final String PROPERTY_KEY_PASSWORD = "arangodb.password" ;
7273 private static final String PROPERTY_KEY_USE_SSL = "arangodb.usessl" ;
74+ private static final String PROPERTY_KEY_COOKIE_SPEC = "arangodb.httpCookieSpec" ;
7375 private static final String PROPERTY_KEY_V_STREAM_CHUNK_CONTENT_SIZE = "arangodb.chunksize" ;
7476 private static final String PROPERTY_KEY_MAX_CONNECTIONS = "arangodb.connections.max" ;
7577 private static final String PROPERTY_KEY_CONNECTION_TTL = "arangodb.connections.ttl" ;
7678 private static final String PROPERTY_KEY_ACQUIRE_HOST_LIST = "arangodb.acquireHostList" ;
79+ private static final String PROPERTY_KEY_ACQUIRE_HOST_LIST_INTERVAL = "arangodb.acquireHostList.interval" ;
7780 private static final String PROPERTY_KEY_LOAD_BALANCING_STRATEGY = "arangodb.loadBalancingStrategy" ;
7881 private static final String DEFAULT_PROPERTY_FILE = "/arangodb.properties" ;
7982
@@ -83,6 +86,7 @@ public abstract class InternalArangoDBBuilder {
8386 protected String user ;
8487 protected String password ;
8588 protected Boolean useSsl ;
89+ protected String httpCookieSpec ;
8690 protected SSLContext sslContext ;
8791 protected Integer chunksize ;
8892 protected Integer maxConnections ;
@@ -92,9 +96,12 @@ public abstract class InternalArangoDBBuilder {
9296 protected ArangoSerializer serializer ;
9397 protected ArangoDeserializer deserializer ;
9498 protected Boolean acquireHostList ;
99+ protected Integer acquireHostListInterval ;
95100 protected LoadBalancingStrategy loadBalancingStrategy ;
96101 protected ArangoSerialization customSerializer ;
97102
103+
104+
98105 public InternalArangoDBBuilder () {
99106 super ();
100107 vpackBuilder = new VPack .Builder ();
@@ -129,10 +136,12 @@ protected void loadProperties(final Properties properties) {
129136 user = loadUser (properties , user );
130137 password = loadPassword (properties , password );
131138 useSsl = loadUseSsl (properties , useSsl );
139+ httpCookieSpec = loadhttpCookieSpec (properties , useSsl );
132140 chunksize = loadChunkSize (properties , chunksize );
133141 maxConnections = loadMaxConnections (properties , maxConnections );
134142 connectionTtl = loadConnectionTtl (properties , connectionTtl );
135143 acquireHostList = loadAcquireHostList (properties , acquireHostList );
144+ acquireHostListInterval = loadAcquireHostListInterval (properties , acquireHostListInterval );
136145 loadBalancingStrategy = loadLoadBalancingStrategy (properties , loadBalancingStrategy );
137146 }
138147
@@ -195,17 +204,19 @@ protected void setSerializer(final ArangoSerialization serializer) {
195204 protected HostResolver createHostResolver (final Collection <Host > hosts , final int maxConnections ,final ConnectionFactory connectionFactory ) {
196205
197206 if (acquireHostList ) {
198- LOGGER .debug ("acquireHostList -> Use ExtendedHostResolver" );
199- return new ExtendedHostResolver (new ArrayList <Host >(hosts ), maxConnections , connectionFactory );
207+ LOG .debug ("acquireHostList -> Use ExtendedHostResolver" );
208+ return new ExtendedHostResolver (new ArrayList <Host >(hosts ), maxConnections , connectionFactory , acquireHostListInterval );
200209 } else {
201- LOGGER .debug ("Use SimpleHostResolver" );
210+ LOG .debug ("Use SimpleHostResolver" );
202211 return new SimpleHostResolver (new ArrayList <Host >(hosts ));
203212 }
204213
205214 }
206215
207216 protected HostHandler createHostHandler (final HostResolver hostResolver ) {
217+
208218 final HostHandler hostHandler ;
219+
209220 if (loadBalancingStrategy != null ) {
210221 switch (loadBalancingStrategy ) {
211222 case ONE_RANDOM :
@@ -222,6 +233,9 @@ protected HostHandler createHostHandler(final HostResolver hostResolver) {
222233 } else {
223234 hostHandler = new FallbackHostHandler (hostResolver );
224235 }
236+
237+ LOG .info ("HostHandler is " + hostHandler .getClass ().getSimpleName ());
238+
225239 return new DirtyReadHostHandler (hostHandler , new RoundRobinHostHandler (hostResolver ));
226240 }
227241
@@ -273,6 +287,10 @@ private static Boolean loadUseSsl(final Properties properties, final Boolean cur
273287 return Boolean .parseBoolean (
274288 getProperty (properties , PROPERTY_KEY_USE_SSL , currentValue , ArangoDefaults .DEFAULT_USE_SSL ));
275289 }
290+
291+ private static String loadhttpCookieSpec (final Properties properties , final Boolean currentValue ) {
292+ return getProperty (properties , PROPERTY_KEY_COOKIE_SPEC , currentValue , "" );
293+ }
276294
277295 private static Integer loadChunkSize (final Properties properties , final Integer currentValue ) {
278296 return Integer .parseInt (getProperty (properties , PROPERTY_KEY_V_STREAM_CHUNK_CONTENT_SIZE , currentValue ,
@@ -295,6 +313,11 @@ private static Boolean loadAcquireHostList(final Properties properties, final Bo
295313 ArangoDefaults .DEFAULT_ACQUIRE_HOST_LIST ));
296314 }
297315
316+ private static int loadAcquireHostListInterval (final Properties properties , final Integer currentValue ) {
317+ return Integer .parseInt (getProperty (properties , PROPERTY_KEY_ACQUIRE_HOST_LIST_INTERVAL , currentValue ,
318+ ArangoDefaults .DEFAULT_ACQUIRE_HOST_LIST_INTERVAL ));
319+ }
320+
298321 private static LoadBalancingStrategy loadLoadBalancingStrategy (
299322 final Properties properties ,
300323 final LoadBalancingStrategy currentValue ) {
0 commit comments