Skip to content

Commit b887856

Browse files
committed
typed ArangoCollection#deleteDocuments
1 parent 89ef22a commit b887856

File tree

7 files changed

+77
-34
lines changed

7 files changed

+77
-34
lines changed

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

+15-1
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,20 @@ <T> DocumentDeleteEntity<T> deleteDocument(String key, DocumentDeleteOptions opt
446446
*/
447447
MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteDocuments(Collection<?> values) throws ArangoDBException;
448448

449+
/**
450+
* Deletes multiple documents from the collection.
451+
*
452+
* @param values The keys of the documents or the documents themselves
453+
* @param options Additional options, can be null
454+
* @return information about the documents
455+
* @throws ArangoDBException
456+
* @see <a href=
457+
* "https://www.arangodb.com/docs/stable/http/document-working-with-documents.html#removes-multiple-documents">API
458+
* Documentation</a>
459+
*/
460+
<T> MultiDocumentEntity<DocumentDeleteEntity<T>> deleteDocuments(
461+
Collection<?> values, DocumentDeleteOptions options) throws ArangoDBException;
462+
449463
/**
450464
* Deletes multiple documents from the collection.
451465
*
@@ -460,7 +474,7 @@ <T> DocumentDeleteEntity<T> deleteDocument(String key, DocumentDeleteOptions opt
460474
* Documentation</a>
461475
*/
462476
<T> MultiDocumentEntity<DocumentDeleteEntity<T>> deleteDocuments(
463-
Collection<?> values, Class<T> type, DocumentDeleteOptions options) throws ArangoDBException;
477+
Collection<?> values, DocumentDeleteOptions options, Class<T> type) throws ArangoDBException;
464478

465479
/**
466480
* Checks if the document exists by reading a single document head

src/main/java/com/arangodb/async/ArangoCollectionAsync.java

+16-2
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,20 @@ <T> CompletableFuture<DocumentDeleteEntity<T>> deleteDocument(
444444
*/
445445
CompletableFuture<MultiDocumentEntity<DocumentDeleteEntity<Void>>> deleteDocuments(final Collection<?> values);
446446

447+
/**
448+
* Removes multiple document
449+
*
450+
* @param values The keys of the documents or the documents themselves
451+
* @param options Additional options, can be null
452+
* @return information about the documents
453+
* @see <a href=
454+
* "https://www.arangodb.com/docs/stable/http/document-working-with-documents.html#removes-multiple-documents">API
455+
* Documentation</a>
456+
*/
457+
<T> CompletableFuture<MultiDocumentEntity<DocumentDeleteEntity<T>>> deleteDocuments(
458+
final Collection<?> values,
459+
final DocumentDeleteOptions options);
460+
447461
/**
448462
* Removes multiple document
449463
*
@@ -458,8 +472,8 @@ <T> CompletableFuture<DocumentDeleteEntity<T>> deleteDocument(
458472
*/
459473
<T> CompletableFuture<MultiDocumentEntity<DocumentDeleteEntity<T>>> deleteDocuments(
460474
final Collection<?> values,
461-
final Class<T> type,
462-
final DocumentDeleteOptions options);
475+
final DocumentDeleteOptions options,
476+
final Class<T> type);
463477

464478
/**
465479
* Checks if the document exists by reading a single document head

src/main/java/com/arangodb/async/internal/ArangoCollectionAsyncImpl.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -253,15 +253,20 @@ public <T> CompletableFuture<DocumentDeleteEntity<T>> deleteDocument(
253253
@Override
254254
public CompletableFuture<MultiDocumentEntity<DocumentDeleteEntity<Void>>> deleteDocuments(
255255
final Collection<?> values) {
256-
return executor.execute(deleteDocumentsRequest(values, new DocumentDeleteOptions()),
257-
deleteDocumentsResponseDeserializer(Void.class));
256+
return deleteDocuments(values, new DocumentDeleteOptions(), Void.class);
257+
}
258+
259+
@Override
260+
@SuppressWarnings("unchecked")
261+
public <T> CompletableFuture<MultiDocumentEntity<DocumentDeleteEntity<T>>> deleteDocuments(Collection<?> values, DocumentDeleteOptions options) {
262+
return deleteDocuments(values, options, (Class<T>) getCollectionContentClass(values));
258263
}
259264

260265
@Override
261266
public <T> CompletableFuture<MultiDocumentEntity<DocumentDeleteEntity<T>>> deleteDocuments(
262267
final Collection<?> values,
263-
final Class<T> type,
264-
final DocumentDeleteOptions options) {
268+
final DocumentDeleteOptions options,
269+
final Class<T> type) {
265270
return executor.execute(deleteDocumentsRequest(values, options), deleteDocumentsResponseDeserializer(type));
266271
}
267272

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

+10-3
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,20 @@ public <T> DocumentDeleteEntity<T> deleteDocument(
245245
@Override
246246
public MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteDocuments(final Collection<?> values)
247247
throws ArangoDBException {
248-
return executor.execute(deleteDocumentsRequest(values, new DocumentDeleteOptions()),
249-
deleteDocumentsResponseDeserializer(Void.class));
248+
return deleteDocuments(values, new DocumentDeleteOptions(), Void.class);
249+
}
250+
251+
@Override
252+
@SuppressWarnings("unchecked")
253+
public <T> MultiDocumentEntity<DocumentDeleteEntity<T>> deleteDocuments(
254+
final Collection<?> values, final DocumentDeleteOptions options)
255+
throws ArangoDBException {
256+
return deleteDocuments(values, options, (Class<T>) getCollectionContentClass(values));
250257
}
251258

252259
@Override
253260
public <T> MultiDocumentEntity<DocumentDeleteEntity<T>> deleteDocuments(
254-
final Collection<?> values, final Class<T> type, final DocumentDeleteOptions options)
261+
final Collection<?> values, final DocumentDeleteOptions options, final Class<T> type)
255262
throws ArangoDBException {
256263
return executor.execute(deleteDocumentsRequest(values, options), deleteDocumentsResponseDeserializer(type));
257264
}

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

+15-12
Original file line numberDiff line numberDiff line change
@@ -1208,7 +1208,10 @@ void deleteDocumentSilent(ArangoCollection collection) {
12081208
void deleteDocumentsSilent(ArangoCollection collection) {
12091209
assumeTrue(isSingleServer());
12101210
final DocumentCreateEntity<?> createResult = collection.insertDocument(new BaseDocument());
1211-
final MultiDocumentEntity<DocumentDeleteEntity<BaseDocument>> info = collection.deleteDocuments(Collections.singletonList(createResult.getKey()), BaseDocument.class, new DocumentDeleteOptions().silent(true));
1211+
final MultiDocumentEntity<DocumentDeleteEntity<BaseDocument>> info = collection.deleteDocuments(
1212+
Collections.singletonList(createResult.getKey()),
1213+
new DocumentDeleteOptions().silent(true),
1214+
BaseDocument.class);
12121215
assertThat(info).isNotNull();
12131216
assertThat(info.getDocuments()).isEmpty();
12141217
assertThat(info.getDocumentsAndErrors()).isEmpty();
@@ -2344,10 +2347,10 @@ void deleteDocumentsByKey(ArangoCollection collection) {
23442347
final Collection<String> keys = new ArrayList<>();
23452348
keys.add("1");
23462349
keys.add("2");
2347-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(keys, null, null);
2350+
final MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteResult = collection.deleteDocuments(keys);
23482351
assertThat(deleteResult).isNotNull();
23492352
assertThat(deleteResult.getDocuments()).hasSize(2);
2350-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
2353+
for (final DocumentDeleteEntity<Void> i : deleteResult.getDocuments()) {
23512354
assertThat(i.getKey()).isIn("1", "2");
23522355
}
23532356
assertThat(deleteResult.getErrors()).isEmpty();
@@ -2368,10 +2371,10 @@ void deleteDocumentsByDocuments(ArangoCollection collection) {
23682371
values.add(e);
23692372
}
23702373
collection.insertDocuments(values);
2371-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(values, null, null);
2374+
MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteResult = collection.deleteDocuments(values);
23722375
assertThat(deleteResult).isNotNull();
23732376
assertThat(deleteResult.getDocuments()).hasSize(2);
2374-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
2377+
for (final DocumentDeleteEntity<Void> i : deleteResult.getDocuments()) {
23752378
assertThat(i.getKey()).isIn("1", "2");
23762379
}
23772380
assertThat(deleteResult.getErrors()).isEmpty();
@@ -2389,10 +2392,10 @@ void deleteDocumentsByKeyOne(ArangoCollection collection) {
23892392
collection.insertDocuments(values);
23902393
final Collection<String> keys = new ArrayList<>();
23912394
keys.add("1");
2392-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(keys, null, null);
2395+
final MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteResult = collection.deleteDocuments(keys);
23932396
assertThat(deleteResult).isNotNull();
23942397
assertThat(deleteResult.getDocuments()).hasSize(1);
2395-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
2398+
for (final DocumentDeleteEntity<Void> i : deleteResult.getDocuments()) {
23962399
assertThat(i.getKey()).isEqualTo("1");
23972400
}
23982401
assertThat(deleteResult.getErrors()).isEmpty();
@@ -2408,10 +2411,10 @@ void deleteDocumentsByDocumentOne(ArangoCollection collection) {
24082411
values.add(e);
24092412
}
24102413
collection.insertDocuments(values);
2411-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(values, null, null);
2414+
final MultiDocumentEntity<DocumentDeleteEntity<Void>> deleteResult = collection.deleteDocuments(values);
24122415
assertThat(deleteResult).isNotNull();
24132416
assertThat(deleteResult.getDocuments()).hasSize(1);
2414-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
2417+
for (final DocumentDeleteEntity<Void> i : deleteResult.getDocuments()) {
24152418
assertThat(i.getKey()).isEqualTo("1");
24162419
}
24172420
assertThat(deleteResult.getErrors()).isEmpty();
@@ -2423,7 +2426,7 @@ void deleteDocumentsEmpty(ArangoCollection collection) {
24232426
final Collection<BaseDocument> values = new ArrayList<>();
24242427
collection.insertDocuments(values);
24252428
final Collection<String> keys = new ArrayList<>();
2426-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(keys, null, null);
2429+
final MultiDocumentEntity<?> deleteResult = collection.deleteDocuments(keys);
24272430
assertThat(deleteResult).isNotNull();
24282431
assertThat(deleteResult.getDocuments()).isEmpty();
24292432
assertThat(deleteResult.getErrors()).isEmpty();
@@ -2436,7 +2439,7 @@ void deleteDocumentsByKeyNotExisting(ArangoCollection collection) {
24362439
collection.insertDocuments(values);
24372440
final Collection<String> keys = Arrays.asList(rnd(), rnd());
24382441

2439-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(keys, null, null);
2442+
final MultiDocumentEntity<?> deleteResult = collection.deleteDocuments(keys);
24402443
assertThat(deleteResult).isNotNull();
24412444
assertThat(deleteResult.getDocuments()).isEmpty();
24422445
assertThat(deleteResult.getErrors()).hasSize(2);
@@ -2456,7 +2459,7 @@ void deleteDocumentsByDocumentsNotExisting(ArangoCollection collection) {
24562459
e.setKey("2");
24572460
values.add(e);
24582461
}
2459-
final MultiDocumentEntity<DocumentDeleteEntity<Object>> deleteResult = collection.deleteDocuments(values, null, null);
2462+
final MultiDocumentEntity<?> deleteResult = collection.deleteDocuments(values);
24602463
assertThat(deleteResult).isNotNull();
24612464
assertThat(deleteResult.getDocuments()).isEmpty();
24622465
assertThat(deleteResult.getErrors()).hasSize(2);

src/test/java/com/arangodb/StreamTransactionTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ void deleteDocuments(ArangoDatabase db) {
584584

585585
// delete document from within the tx
586586
collection
587-
.deleteDocuments(keys, null, new DocumentDeleteOptions().streamTransactionId(tx.getId()));
587+
.deleteDocuments(keys, new DocumentDeleteOptions().streamTransactionId(tx.getId()));
588588

589589
// assert that the documents has not been deleted from outside the tx
590590
assertThat(collection.getDocuments(keys, BaseDocument.class, null).getDocuments()).hasSize(keys.size());

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

+11-11
Original file line numberDiff line numberDiff line change
@@ -1899,11 +1899,11 @@ void deleteDocumentsByKey() throws InterruptedException, ExecutionException {
18991899
final Collection<String> keys = new ArrayList<>();
19001900
keys.add("1");
19011901
keys.add("2");
1902-
db.collection(COLLECTION_NAME).deleteDocuments(keys, null, null)
1902+
db.collection(COLLECTION_NAME).deleteDocuments(keys)
19031903
.whenComplete((deleteResult, ex) -> {
19041904
assertThat(deleteResult).isNotNull();
19051905
assertThat(deleteResult.getDocuments().size()).isEqualTo(2);
1906-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
1906+
for (final DocumentDeleteEntity<?> i : deleteResult.getDocuments()) {
19071907
assertThat(i.getKey()).isIn("1", "2");
19081908
}
19091909
assertThat(deleteResult.getErrors().size()).isEqualTo(0);
@@ -1925,11 +1925,11 @@ void deleteDocumentsByDocuments() throws InterruptedException, ExecutionExceptio
19251925
values.add(e);
19261926
}
19271927
db.collection(COLLECTION_NAME).insertDocuments(values).get();
1928-
db.collection(COLLECTION_NAME).deleteDocuments(values, null, null)
1928+
db.collection(COLLECTION_NAME).deleteDocuments(values)
19291929
.whenComplete((deleteResult, ex) -> {
19301930
assertThat(deleteResult).isNotNull();
19311931
assertThat(deleteResult.getDocuments().size()).isEqualTo(2);
1932-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
1932+
for (final DocumentDeleteEntity<?> i : deleteResult.getDocuments()) {
19331933
assertThat(i.getKey()).isIn("1", "2");
19341934
}
19351935
assertThat(deleteResult.getErrors().size()).isEqualTo(0);
@@ -1948,11 +1948,11 @@ void deleteDocumentsByKeyOne() throws InterruptedException, ExecutionException {
19481948
db.collection(COLLECTION_NAME).insertDocuments(values).get();
19491949
final Collection<String> keys = new ArrayList<>();
19501950
keys.add("1");
1951-
db.collection(COLLECTION_NAME).deleteDocuments(keys, null, null)
1951+
db.collection(COLLECTION_NAME).deleteDocuments(keys)
19521952
.whenComplete((deleteResult, ex) -> {
19531953
assertThat(deleteResult).isNotNull();
19541954
assertThat(deleteResult.getDocuments().size()).isEqualTo(1);
1955-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
1955+
for (final DocumentDeleteEntity<?> i : deleteResult.getDocuments()) {
19561956
assertThat(i.getKey()).isEqualTo("1");
19571957
}
19581958
assertThat(deleteResult.getErrors().size()).isEqualTo(0);
@@ -1969,11 +1969,11 @@ void deleteDocumentsByDocumentOne() throws InterruptedException, ExecutionExcept
19691969
values.add(e);
19701970
}
19711971
db.collection(COLLECTION_NAME).insertDocuments(values).get();
1972-
db.collection(COLLECTION_NAME).deleteDocuments(values, null, null)
1972+
db.collection(COLLECTION_NAME).deleteDocuments(values)
19731973
.whenComplete((deleteResult, ex) -> {
19741974
assertThat(deleteResult).isNotNull();
19751975
assertThat(deleteResult.getDocuments().size()).isEqualTo(1);
1976-
for (final DocumentDeleteEntity<Object> i : deleteResult.getDocuments()) {
1976+
for (final DocumentDeleteEntity<?> i : deleteResult.getDocuments()) {
19771977
assertThat(i.getKey()).isEqualTo("1");
19781978
}
19791979
assertThat(deleteResult.getErrors().size()).isEqualTo(0);
@@ -1986,7 +1986,7 @@ void deleteDocumentsEmpty() throws InterruptedException, ExecutionException {
19861986
final Collection<BaseDocument> values = new ArrayList<>();
19871987
db.collection(COLLECTION_NAME).insertDocuments(values).get();
19881988
final Collection<String> keys = new ArrayList<>();
1989-
db.collection(COLLECTION_NAME).deleteDocuments(keys, null, null)
1989+
db.collection(COLLECTION_NAME).deleteDocuments(keys)
19901990
.whenComplete((deleteResult, ex) -> {
19911991
assertThat(deleteResult).isNotNull();
19921992
assertThat(deleteResult.getDocuments().size()).isEqualTo(0);
@@ -2002,7 +2002,7 @@ void deleteDocumentsByKeyNotExisting() throws InterruptedException, ExecutionExc
20022002
final Collection<String> keys = new ArrayList<>();
20032003
keys.add("1");
20042004
keys.add("2");
2005-
db.collection(COLLECTION_NAME).deleteDocuments(keys, null, null)
2005+
db.collection(COLLECTION_NAME).deleteDocuments(keys)
20062006
.whenComplete((deleteResult, ex) -> {
20072007
assertThat(deleteResult).isNotNull();
20082008
assertThat(deleteResult.getDocuments().size()).isEqualTo(0);
@@ -2024,7 +2024,7 @@ void deleteDocumentsByDocumentsNotExisting() throws InterruptedException, Execut
20242024
e.setKey("2");
20252025
values.add(e);
20262026
}
2027-
db.collection(COLLECTION_NAME).deleteDocuments(values, null, null)
2027+
db.collection(COLLECTION_NAME).deleteDocuments(values)
20282028
.whenComplete((deleteResult, ex) -> {
20292029
assertThat(deleteResult).isNotNull();
20302030
assertThat(deleteResult.getDocuments().size()).isEqualTo(0);

0 commit comments

Comments
 (0)