Skip to content

Commit 7d4d5e4

Browse files
author
Mark
committed
changed ArangoCollection.deleteDocuments() to work with keys+docs
1 parent dd4e4f3 commit 7d4d5e4

File tree

4 files changed

+76
-12
lines changed

4 files changed

+76
-12
lines changed

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ v4.1.8 (2017-02-xx)
66
* added byte[] de-/serialization from/to VPack.string (Base64)
77
* added ArangoCollection.drop(isSystem)
88
* improved ArangoDBException with responseCode, errorNum, errorMessage
9+
* changed ArangoCollection.deleteDocuments() to work with keys and documents
910

1011
v4.1.7 (2017-01-26)
1112
---------------------------

src/main/java/com/arangodb/ArangoCollection.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -456,17 +456,17 @@ public <T> DocumentDeleteEntity<T> deleteDocument(
456456
* @see <a href=
457457
* "https://docs.arangodb.com/current/HTTP/Document/WorkingWithDocuments.html#removes-multiple-documents">API
458458
* Documentation</a>
459-
* @param keys
460-
* The keys of the documents
459+
* @param values
460+
* The keys of the documents or the documents themselves
461461
* @param type
462462
* The type of the documents (POJO class, VPackSlice or String for Json). Only necessary if
463463
* options.returnOld is set to true, otherwise can be null.
464464
* @return information about the documents
465465
* @throws ArangoDBException
466466
*/
467-
public MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteDocuments(final Collection<String> keys)
467+
public MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteDocuments(final Collection<?> values)
468468
throws ArangoDBException {
469-
return executor.execute(deleteDocumentsRequest(keys, new DocumentDeleteOptions()),
469+
return executor.execute(deleteDocumentsRequest(values, new DocumentDeleteOptions()),
470470
deleteDocumentsResponseDeserializer(Void.class));
471471
}
472472

@@ -476,8 +476,8 @@ public MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteDocuments(final Col
476476
* @see <a href=
477477
* "https://docs.arangodb.com/current/HTTP/Document/WorkingWithDocuments.html#removes-multiple-documents">API
478478
* Documentation</a>
479-
* @param keys
480-
* The keys of the documents
479+
* @param values
480+
* The keys of the documents or the documents themselves
481481
* @param type
482482
* The type of the documents (POJO class, VPackSlice or String for Json). Only necessary if
483483
* options.returnOld is set to true, otherwise can be null.
@@ -487,10 +487,10 @@ public MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteDocuments(final Col
487487
* @throws ArangoDBException
488488
*/
489489
public <T> MultiDocumentEntity<DocumentDeleteEntity<T>> deleteDocuments(
490-
final Collection<String> keys,
490+
final Collection<?> values,
491491
final Class<T> type,
492492
final DocumentDeleteOptions options) throws ArangoDBException {
493-
return executor.execute(deleteDocumentsRequest(keys, options), deleteDocumentsResponseDeserializer(type));
493+
return executor.execute(deleteDocumentsRequest(values, options), deleteDocumentsResponseDeserializer(type));
494494
}
495495

496496
/**

src/main/java/com/arangodb/internal/InternalArangoCollection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ public DocumentDeleteEntity<T> deserialize(final Response response) throws VPack
409409
};
410410
}
411411

412-
protected Request deleteDocumentsRequest(final Collection<String> keys, final DocumentDeleteOptions options) {
412+
protected <T> Request deleteDocumentsRequest(final Collection<T> keys, final DocumentDeleteOptions options) {
413413
final Request request;
414414
request = new Request(db, RequestType.DELETE, executor.createPath(ArangoDBConstants.PATH_API_DOCUMENT, name));
415415
final DocumentDeleteOptions params = (options != null ? options : new DocumentDeleteOptions());

src/test/java/com/arangodb/ArangoCollectionTest.java

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,7 @@ public void importDocumentsJsonFromToPrefix() {
13221322
}
13231323

13241324
@Test
1325-
public void deleteDocuments() {
1325+
public void deleteDocumentsByKey() {
13261326
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
13271327
{
13281328
final BaseDocument e = new BaseDocument();
@@ -1349,7 +1349,31 @@ public void deleteDocuments() {
13491349
}
13501350

13511351
@Test
1352-
public void deleteDocumentsOne() {
1352+
public void deleteDocumentsByDocuments() {
1353+
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
1354+
{
1355+
final BaseDocument e = new BaseDocument();
1356+
e.setKey("1");
1357+
values.add(e);
1358+
}
1359+
{
1360+
final BaseDocument e = new BaseDocument();
1361+
e.setKey("2");
1362+
values.add(e);
1363+
}
1364+
db.collection(COLLECTION_NAME).insertDocuments(values, null);
1365+
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = db.collection(COLLECTION_NAME)
1366+
.deleteDocuments(values, null, null);
1367+
assertThat(deleteResult, is(notNullValue()));
1368+
assertThat(deleteResult.getDocuments().size(), is(2));
1369+
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
1370+
assertThat(i.getKey(), anyOf(is("1"), is("2")));
1371+
}
1372+
assertThat(deleteResult.getErrors().size(), is(0));
1373+
}
1374+
1375+
@Test
1376+
public void deleteDocumentsByKeyOne() {
13531377
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
13541378
{
13551379
final BaseDocument e = new BaseDocument();
@@ -1369,6 +1393,25 @@ public void deleteDocumentsOne() {
13691393
assertThat(deleteResult.getErrors().size(), is(0));
13701394
}
13711395

1396+
@Test
1397+
public void deleteDocumentsByDocumentOne() {
1398+
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
1399+
{
1400+
final BaseDocument e = new BaseDocument();
1401+
e.setKey("1");
1402+
values.add(e);
1403+
}
1404+
db.collection(COLLECTION_NAME).insertDocuments(values, null);
1405+
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = db.collection(COLLECTION_NAME)
1406+
.deleteDocuments(values, null, null);
1407+
assertThat(deleteResult, is(notNullValue()));
1408+
assertThat(deleteResult.getDocuments().size(), is(1));
1409+
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
1410+
assertThat(i.getKey(), is("1"));
1411+
}
1412+
assertThat(deleteResult.getErrors().size(), is(0));
1413+
}
1414+
13721415
@Test
13731416
public void deleteDocumentsEmpty() {
13741417
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
@@ -1382,7 +1425,7 @@ public void deleteDocumentsEmpty() {
13821425
}
13831426

13841427
@Test
1385-
public void deleteDocumentsNotExisting() {
1428+
public void deleteDocumentsByKeyNotExisting() {
13861429
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
13871430
db.collection(COLLECTION_NAME).insertDocuments(values, null);
13881431
final Collection<String> keys = new ArrayList<String>();
@@ -1395,6 +1438,26 @@ public void deleteDocumentsNotExisting() {
13951438
assertThat(deleteResult.getErrors().size(), is(2));
13961439
}
13971440

1441+
@Test
1442+
public void deleteDocumentsByDocumentsNotExisting() {
1443+
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();
1444+
{
1445+
final BaseDocument e = new BaseDocument();
1446+
e.setKey("1");
1447+
values.add(e);
1448+
}
1449+
{
1450+
final BaseDocument e = new BaseDocument();
1451+
e.setKey("2");
1452+
values.add(e);
1453+
}
1454+
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = db.collection(COLLECTION_NAME)
1455+
.deleteDocuments(values, null, null);
1456+
assertThat(deleteResult, is(notNullValue()));
1457+
assertThat(deleteResult.getDocuments().size(), is(0));
1458+
assertThat(deleteResult.getErrors().size(), is(2));
1459+
}
1460+
13981461
@Test
13991462
public void updateDocuments() {
14001463
final Collection<BaseDocument> values = new ArrayList<BaseDocument>();

0 commit comments

Comments
 (0)