|
44 | 44 | import com.arangodb.internal.util.ArangoDeserializerImpl; |
45 | 45 | import com.arangodb.internal.util.ArangoSerializerImpl; |
46 | 46 | import com.arangodb.internal.util.ArangoUtilImpl; |
| 47 | +import com.arangodb.internal.velocypack.VPackDocumentModule; |
47 | 48 | import com.arangodb.internal.velocypack.VPackDriverModule; |
48 | 49 | import com.arangodb.internal.velocystream.Communication; |
49 | 50 | import com.arangodb.internal.velocystream.CommunicationAsync; |
@@ -93,18 +94,16 @@ public static class Builder { |
93 | 94 | private Integer chunksize; |
94 | 95 | private Integer maxConnections; |
95 | 96 | private final VPack.Builder vpackBuilder; |
96 | | - private final CollectionCache collectionCache; |
97 | 97 | private final VPackParser.Builder vpackParserBuilder; |
98 | 98 | private ArangoSerializer serializer; |
99 | 99 | private ArangoDeserializer deserializer; |
100 | 100 |
|
101 | 101 | public Builder() { |
102 | 102 | super(); |
103 | 103 | vpackBuilder = new VPack.Builder(); |
104 | | - collectionCache = new CollectionCache(); |
105 | 104 | vpackParserBuilder = new VPackParser.Builder(); |
106 | | - vpackBuilder.registerModule(new VPackDriverModule(collectionCache)); |
107 | | - vpackParserBuilder.registerModule(new VPackDriverModule(collectionCache)); |
| 105 | + vpackBuilder.registerModule(new VPackDriverModule()); |
| 106 | + vpackParserBuilder.registerModule(new VPackDriverModule()); |
108 | 107 | vpackBuilder.registerModule(new VPackJdk8Module()); |
109 | 108 | host = new Host(ArangoDBConstants.DEFAULT_HOST, ArangoDBConstants.DEFAULT_PORT); |
110 | 109 | hosts = new ArrayList<>(); |
@@ -325,21 +324,23 @@ public Builder setDeserializer(final ArangoDeserializer deserializer) { |
325 | 324 | return this; |
326 | 325 | } |
327 | 326 |
|
328 | | - public ArangoDBAsync build() { |
| 327 | + public synchronized ArangoDBAsync build() { |
329 | 328 | if (hosts.isEmpty()) { |
330 | 329 | hosts.add(host); |
331 | 330 | } |
332 | | - final VPack vpacker = vpackBuilder.build(); |
| 331 | + final CollectionCache collectionCache = new CollectionCache(); |
| 332 | + vpackBuilder.registerModule(new VPackDocumentModule(collectionCache)); |
| 333 | + vpackParserBuilder.registerModule(new VPackDocumentModule(collectionCache)); |
| 334 | + |
| 335 | + final VPack vpacker = vpackBuilder.serializeNullValues(false).build(); |
333 | 336 | final VPack vpackerNull = vpackBuilder.serializeNullValues(true).build(); |
334 | 337 | final VPackParser vpackParser = vpackParserBuilder.build(); |
335 | | - if (serializer == null) { |
336 | | - serializer = new ArangoSerializerImpl(vpacker, vpackerNull, vpackParser); |
337 | | - } |
338 | | - if (deserializer == null) { |
339 | | - deserializer = new ArangoDeserializerImpl(vpackerNull, vpackParser); |
340 | | - } |
341 | | - final HostHandler hostHandler = new DefaultHostHandler(hosts); |
342 | | - return new ArangoDBAsync(asyncBuilder(hostHandler), new ArangoUtilImpl(serializer, deserializer), |
| 338 | + final ArangoSerializer serializerTemp = serializer != null ? serializer |
| 339 | + : new ArangoSerializerImpl(vpacker, vpackerNull, vpackParser); |
| 340 | + final ArangoDeserializer deserializerTemp = deserializer != null ? deserializer |
| 341 | + : new ArangoDeserializerImpl(vpackerNull, vpackParser); |
| 342 | + final HostHandler hostHandler = new DefaultHostHandler(new ArrayList<>(hosts)); |
| 343 | + return new ArangoDBAsync(asyncBuilder(hostHandler), new ArangoUtilImpl(serializerTemp, deserializerTemp), |
343 | 344 | collectionCache, syncBuilder(hostHandler)); |
344 | 345 | } |
345 | 346 |
|
|
0 commit comments