Skip to content

Commit f11bdb4

Browse files
authored
Merge pull request #296 from rashtao/bugfix/arangodb-driver-lifecycle
ArangoDB: fixed driver lifecycle
2 parents 9542d66 + 768a69c commit f11bdb4

File tree

8 files changed

+61
-124
lines changed

8 files changed

+61
-124
lines changed

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBBucketManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public <K> void delete(Iterable<K> keys) throws NullPointerException {
132132

133133
@Override
134134
public void close() {
135-
135+
arangoDB.shutdown();
136136
}
137137

138138
@Override

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBBucketManagerFactory.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ public class ArangoDBBucketManagerFactory implements BucketManagerFactory {
3434

3535
private static final String DEFAULT_NAMESPACE = "diana";
3636

37-
private final ArangoDB arangoDB;
37+
private final ArangoDBBuilder arangoDBBuilder;
3838

39-
ArangoDBBucketManagerFactory(ArangoDB arangoDB) {
40-
this.arangoDB = arangoDB;
39+
ArangoDBBucketManagerFactory(ArangoDBBuilder arangoDBBuilder) {
40+
this.arangoDBBuilder = arangoDBBuilder;
4141
}
4242

4343
@Override
@@ -46,6 +46,7 @@ public ArangoDBBucketManager apply(String bucketName) throws UnsupportedOperatio
4646
}
4747

4848
public ArangoDBBucketManager getBucketManager(String bucketName, String namespace) {
49+
ArangoDB arangoDB = arangoDBBuilder.build();
4950
ArangoDBUtil.checkCollection(bucketName, arangoDB, namespace);
5051
return new ArangoDBBucketManager(arangoDB, bucketName, namespace);
5152
}
@@ -72,8 +73,8 @@ public List getList(String bucketName, Class clazz) throws UnsupportedOperationE
7273

7374
@Override
7475
public void close() {
75-
arangoDB.shutdown();
76+
// no-op
77+
// ArangoDB driver instance will be closed in ArangoDBBucketManager.close()
7678
}
7779

78-
7980
}

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBBuilder.java

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,59 @@
1414
*/
1515
package org.eclipse.jnosql.databases.arangodb.communication;
1616

17+
import com.arangodb.ArangoDB;
1718
import com.arangodb.Protocol;
1819
import com.arangodb.entity.LoadBalancingStrategy;
1920

20-
interface ArangoDBBuilder {
21+
public class ArangoDBBuilder {
2122

23+
private final ArangoDB.Builder arangoDB;
2224

23-
void host(String host, int port);
25+
ArangoDBBuilder(ArangoDB.Builder arangoDB) {
26+
this.arangoDB = arangoDB;
27+
}
2428

25-
void timeout(int timeout);
29+
public void host(String host, int port) {
30+
arangoDB.host(host, port);
31+
}
2632

27-
void user(String user);
33+
public void timeout(int timeout) {
34+
arangoDB.timeout(timeout);
35+
}
2836

29-
void password(String password);
37+
public void user(String user) {
38+
arangoDB.user(user);
39+
}
3040

31-
void useSsl(boolean useSsl);
41+
public void password(String password) {
42+
arangoDB.password(password);
43+
}
3244

33-
void chunkSize(int chunkSize);
45+
public void useSsl(boolean useSsl) {
46+
arangoDB.useSsl(useSsl);
47+
}
3448

35-
void maxConnections(int maxConnections);
49+
public void chunkSize(int chunkSize) {
50+
arangoDB.chunkSize(chunkSize);
51+
}
3652

37-
void protocol(Protocol protocol);
53+
public void maxConnections(int maxConnections) {
54+
arangoDB.maxConnections(maxConnections);
55+
}
3856

39-
void acquireHostList(boolean acquireHostList);
57+
public void protocol(Protocol protocol) {
58+
arangoDB.protocol(protocol);
59+
}
4060

41-
void loadBalancingStrategy(LoadBalancingStrategy loadBalancingStrategy);
61+
public void acquireHostList(boolean acquireHostList) {
62+
arangoDB.acquireHostList(acquireHostList);
63+
}
64+
65+
public void loadBalancingStrategy(LoadBalancingStrategy loadBalancingStrategy) {
66+
arangoDB.loadBalancingStrategy(loadBalancingStrategy);
67+
}
68+
69+
public ArangoDB build() {
70+
return arangoDB.build();
71+
}
4272
}

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBBuilderSync.java

Lines changed: 0 additions & 83 deletions
This file was deleted.

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBConfiguration.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -107,21 +107,10 @@ public void setSerde(ArangoSerde serde) {
107107
builder.serde(serde);
108108
}
109109

110-
/**
111-
* Defines a new builder to sync ArangoDB
112-
*
113-
* @param builder the new builder
114-
* @throws NullPointerException when builder is null
115-
*/
116-
public void syncBuilder(ArangoDB.Builder builder) throws NullPointerException {
117-
requireNonNull(builder, "builder is required");
118-
this.builder = builder;
119-
}
120-
121-
protected ArangoDB getArangoDB(Settings settings) {
122-
ArangoDBBuilderSync aragonDB = new ArangoDBBuilderSync(builder);
110+
protected ArangoDBBuilder getArangoDBBuilder(Settings settings) {
111+
ArangoDBBuilder aragonDB = new ArangoDBBuilder(builder);
123112
ArangoDBBuilders.load(settings, aragonDB);
124-
return aragonDB.build();
113+
return aragonDB;
125114
}
126115

127116
}

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBDocumentConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
package org.eclipse.jnosql.databases.arangodb.communication;
1717

18-
import com.arangodb.ArangoDB;
1918
import org.eclipse.jnosql.communication.Settings;
2019
import org.eclipse.jnosql.communication.semistructured.DatabaseConfiguration;
2120

@@ -36,8 +35,8 @@ public final class ArangoDBDocumentConfiguration extends ArangoDBConfiguration
3635
public ArangoDBDocumentManagerFactory apply(Settings settings) throws NullPointerException {
3736
requireNonNull(settings, "settings is required");
3837

39-
ArangoDB arangoDB = getArangoDB(settings);
40-
return new ArangoDBDocumentManagerFactory(arangoDB);
38+
ArangoDBBuilder arangoDBBuilder = getArangoDBBuilder(settings);
39+
return new ArangoDBDocumentManagerFactory(arangoDBBuilder);
4140
}
4241

4342
}

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBDocumentManagerFactory.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,22 @@
2222
public final class ArangoDBDocumentManagerFactory implements DatabaseManagerFactory {
2323

2424

25-
private final ArangoDB arangoDB;
25+
private final ArangoDBBuilder arangoDBBuilder;
2626

27-
ArangoDBDocumentManagerFactory(ArangoDB arangoDB) {
28-
this.arangoDB = arangoDB;
27+
ArangoDBDocumentManagerFactory(ArangoDBBuilder arangoDBBuilder) {
28+
this.arangoDBBuilder = arangoDBBuilder;
2929
}
3030

3131
@Override
3232
public ArangoDBDocumentManager apply(String database) {
33+
ArangoDB arangoDB = arangoDBBuilder.build();
3334
ArangoDBUtil.checkDatabase(database, arangoDB);
3435
return new DefaultArangoDBDocumentManager(database, arangoDB);
3536
}
3637

3738
@Override
3839
public void close() {
39-
arangoDB.shutdown();
40+
// no-op
41+
// ArangoDB driver instance will be closed in ArangoDBDocumentManager.close()
4042
}
4143
}

jnosql-arangodb/src/main/java/org/eclipse/jnosql/databases/arangodb/communication/ArangoDBKeyValueConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
package org.eclipse.jnosql.databases.arangodb.communication;
1616

1717

18-
import com.arangodb.ArangoDB;
1918
import org.eclipse.jnosql.communication.Settings;
2019
import org.eclipse.jnosql.communication.keyvalue.KeyValueConfiguration;
2120

@@ -31,7 +30,7 @@ public final class ArangoDBKeyValueConfiguration extends ArangoDBConfiguration
3130

3231
@Override
3332
public ArangoDBBucketManagerFactory apply(Settings settings) {
34-
ArangoDB arangoDB = getArangoDB(settings);
35-
return new ArangoDBBucketManagerFactory(arangoDB);
33+
ArangoDBBuilder arangoDBBuilder = getArangoDBBuilder(settings);
34+
return new ArangoDBBucketManagerFactory(arangoDBBuilder);
3635
}
3736
}

0 commit comments

Comments
 (0)