diff --git a/ChangeLog.md b/ChangeLog.md index 9a19a1549..b6036b065 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ### Fixed - fixed compatibility of `ArangoCursor#filter` with Java 6 +- fixed replace-insert with `DocumentCreateOptions#overwrite(Boolean)` for `ArangoCollection#insertDocuments` ## [5.0.1] - 2018-09-25 diff --git a/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/src/main/java/com/arangodb/internal/InternalArangoCollection.java index cc024e09e..77a08c744 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoCollection.java +++ b/src/main/java/com/arangodb/internal/InternalArangoCollection.java @@ -84,6 +84,7 @@ public abstract class InternalArangoCollection, D private static final String RETURN_NEW = "returnNew"; private static final String NEW = "new"; private static final String RETURN_OLD = "returnOld"; + private static final String OVERWRITE = "overwrite"; private static final String OLD = "old"; private static final String SILENT = "silent"; @@ -111,7 +112,7 @@ protected Request insertDocumentRequest(final T value, final DocumentCreateO request.putQueryParam(RETURN_NEW, params.getReturnNew()); request.putQueryParam(RETURN_OLD, params.getReturnOld()); request.putQueryParam(SILENT, params.getSilent()); - request.putQueryParam("overwrite", params.getOverwrite()); + request.putQueryParam(OVERWRITE, params.getOverwrite()); request.setBody(util(Serializer.CUSTOM).serialize(value)); return request; } @@ -149,7 +150,9 @@ protected Request insertDocumentsRequest(final Collection values, final D final Request request = request(db.name(), RequestType.POST, PATH_API_DOCUMENT, name); request.putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()); request.putQueryParam(RETURN_NEW, params.getReturnNew()); + request.putQueryParam(RETURN_OLD, params.getReturnOld()); request.putQueryParam(SILENT, params.getSilent()); + request.putQueryParam(OVERWRITE, params.getOverwrite()); request.setBody(util(Serializer.CUSTOM).serialize(values, new ArangoSerializer.Options().serializeNullValues(false).stringAsJson(true))); return request; @@ -186,6 +189,10 @@ public MultiDocumentEntity> deserialize(final Response r if (newDoc.isObject()) { doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, type)); } + final VPackSlice oldDoc = next.get(OLD); + if (oldDoc.isObject()) { + doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, type)); + } docs.add(doc); documentsAndErrors.add(doc); } @@ -212,7 +219,7 @@ protected Request importDocumentsRequest(final DocumentImportOptions options) { return request(db.name(), RequestType.POST, PATH_API_IMPORT).putQueryParam(COLLECTION, name) .putQueryParam(ArangoRequestParam.WAIT_FOR_SYNC, params.getWaitForSync()) .putQueryParam("fromPrefix", params.getFromPrefix()).putQueryParam("toPrefix", params.getToPrefix()) - .putQueryParam("overwrite", params.getOverwrite()).putQueryParam("onDuplicate", params.getOnDuplicate()) + .putQueryParam(OVERWRITE, params.getOverwrite()).putQueryParam("onDuplicate", params.getOnDuplicate()) .putQueryParam("complete", params.getComplete()).putQueryParam("details", params.getDetails()); } diff --git a/src/test/java/com/arangodb/ArangoCollectionTest.java b/src/test/java/com/arangodb/ArangoCollectionTest.java index eeac3e3b8..e5f99deba 100644 --- a/src/test/java/com/arangodb/ArangoCollectionTest.java +++ b/src/test/java/com/arangodb/ArangoCollectionTest.java @@ -1218,6 +1218,8 @@ public void insertDocumentsOverwrite() { .insertDocuments(Arrays.asList(doc1, doc2), new DocumentCreateOptions().overwrite(true).returnOld(true).returnNew(true)); assertThat(repsert, is(notNullValue())); + assertThat(repsert.getDocuments().size(), is(2)); + assertThat(repsert.getErrors().size(), is(0)); for (final DocumentCreateEntity documentCreateEntity : repsert.getDocuments()) { assertThat(documentCreateEntity.getRev(), is(not(meta1.getRev()))); assertThat(documentCreateEntity.getRev(), is(not(meta2.getRev())));