Skip to content

Commit 1c91a96

Browse files
committed
use List to represent documents and errors in com.arangodb.entity.MultiDocumentEntity
1 parent 64b3ba6 commit 1c91a96

File tree

3 files changed

+45
-25
lines changed

3 files changed

+45
-25
lines changed

core/src/main/java/com/arangodb/entity/MultiDocumentEntity.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@
2020

2121
package com.arangodb.entity;
2222

23-
import java.util.Collection;
23+
import java.util.List;
2424

2525
/**
2626
* @author Mark Vollmary
2727
*/
2828
public final class MultiDocumentEntity<E> {
2929

30-
private Collection<E> documents;
31-
private Collection<ErrorEntity> errors;
32-
private Collection<Object> documentsAndErrors;
30+
private List<E> documents;
31+
private List<ErrorEntity> errors;
32+
private List<Object> documentsAndErrors;
3333
private boolean isPotentialDirtyRead = false;
3434

3535
public MultiDocumentEntity() {
@@ -39,33 +39,33 @@ public MultiDocumentEntity() {
3939
/**
4040
* @return all successfully processed documents
4141
*/
42-
public Collection<E> getDocuments() {
42+
public List<E> getDocuments() {
4343
return documents;
4444
}
4545

46-
public void setDocuments(final Collection<E> documents) {
46+
public void setDocuments(final List<E> documents) {
4747
this.documents = documents;
4848
}
4949

5050
/**
5151
* @return all errors
5252
*/
53-
public Collection<ErrorEntity> getErrors() {
53+
public List<ErrorEntity> getErrors() {
5454
return errors;
5555
}
5656

57-
public void setErrors(final Collection<ErrorEntity> errors) {
57+
public void setErrors(final List<ErrorEntity> errors) {
5858
this.errors = errors;
5959
}
6060

6161
/**
6262
* @return all successfully processed documents and all errors in the same order they are processed
6363
*/
64-
public Collection<Object> getDocumentsAndErrors() {
64+
public List<Object> getDocumentsAndErrors() {
6565
return documentsAndErrors;
6666
}
6767

68-
public void setDocumentsAndErrors(final Collection<Object> documentsAndErrors) {
68+
public void setDocumentsAndErrors(final List<Object> documentsAndErrors) {
6969
this.documentsAndErrors = documentsAndErrors;
7070
}
7171

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

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.lang.reflect.Type;
3333
import java.util.ArrayList;
3434
import java.util.Collection;
35+
import java.util.List;
3536

3637
import static com.arangodb.internal.serde.SerdeUtils.constructParametricType;
3738

@@ -109,9 +110,9 @@ private InternalRequest createInsertDocumentRequest(final DocumentCreateOptions
109110
protected <T> ResponseDeserializer<MultiDocumentEntity<DocumentCreateEntity<T>>> insertDocumentsResponseDeserializer(Class<T> userDataClass) {
110111
return response -> {
111112
final MultiDocumentEntity<DocumentCreateEntity<T>> multiDocument = new MultiDocumentEntity<>();
112-
final Collection<DocumentCreateEntity<T>> docs = new ArrayList<>();
113-
final Collection<ErrorEntity> errors = new ArrayList<>();
114-
final Collection<Object> documentsAndErrors = new ArrayList<>();
113+
final List<DocumentCreateEntity<T>> docs = new ArrayList<>();
114+
final List<ErrorEntity> errors = new ArrayList<>();
115+
final List<Object> documentsAndErrors = new ArrayList<>();
115116
final JsonNode body = getSerde().parse(response.getBody());
116117
for (final JsonNode next : body) {
117118
JsonNode isError = next.get(ArangoResponseField.ERROR_FIELD_NAME);
@@ -187,9 +188,9 @@ protected <T> ResponseDeserializer<MultiDocumentEntity<T>> getDocumentsResponseD
187188
final MultiDocumentEntity<T> multiDocument = new MultiDocumentEntity<>();
188189
boolean potentialDirtyRead = Boolean.parseBoolean(response.getMeta("X-Arango-Potential-Dirty-Read"));
189190
multiDocument.setPotentialDirtyRead(potentialDirtyRead);
190-
final Collection<T> docs = new ArrayList<>();
191-
final Collection<ErrorEntity> errors = new ArrayList<>();
192-
final Collection<Object> documentsAndErrors = new ArrayList<>();
191+
final List<T> docs = new ArrayList<>();
192+
final List<ErrorEntity> errors = new ArrayList<>();
193+
final List<Object> documentsAndErrors = new ArrayList<>();
193194
final JsonNode body = getSerde().parse(response.getBody());
194195
for (final JsonNode next : body) {
195196
JsonNode isError = next.get(ArangoResponseField.ERROR_FIELD_NAME);
@@ -247,9 +248,9 @@ protected <T> ResponseDeserializer<MultiDocumentEntity<DocumentUpdateEntity<T>>>
247248
final Class<T> returnType) {
248249
return response -> {
249250
final MultiDocumentEntity<DocumentUpdateEntity<T>> multiDocument = new MultiDocumentEntity<>();
250-
final Collection<DocumentUpdateEntity<T>> docs = new ArrayList<>();
251-
final Collection<ErrorEntity> errors = new ArrayList<>();
252-
final Collection<Object> documentsAndErrors = new ArrayList<>();
251+
final List<DocumentUpdateEntity<T>> docs = new ArrayList<>();
252+
final List<ErrorEntity> errors = new ArrayList<>();
253+
final List<Object> documentsAndErrors = new ArrayList<>();
253254
final JsonNode body = getSerde().parse(response.getBody());
254255
for (final JsonNode next : body) {
255256
JsonNode isError = next.get(ArangoResponseField.ERROR_FIELD_NAME);
@@ -309,9 +310,9 @@ protected <T> ResponseDeserializer<MultiDocumentEntity<DocumentUpdateEntity<T>>>
309310
final Class<T> returnType) {
310311
return response -> {
311312
final MultiDocumentEntity<DocumentUpdateEntity<T>> multiDocument = new MultiDocumentEntity<>();
312-
final Collection<DocumentUpdateEntity<T>> docs = new ArrayList<>();
313-
final Collection<ErrorEntity> errors = new ArrayList<>();
314-
final Collection<Object> documentsAndErrors = new ArrayList<>();
313+
final List<DocumentUpdateEntity<T>> docs = new ArrayList<>();
314+
final List<ErrorEntity> errors = new ArrayList<>();
315+
final List<Object> documentsAndErrors = new ArrayList<>();
315316
final JsonNode body = getSerde().parse(response.getBody());
316317
for (final JsonNode next : body) {
317318
JsonNode isError = next.get(ArangoResponseField.ERROR_FIELD_NAME);
@@ -365,9 +366,9 @@ protected <T> ResponseDeserializer<MultiDocumentEntity<DocumentDeleteEntity<T>>>
365366
final Class<T> userDataClass) {
366367
return response -> {
367368
final MultiDocumentEntity<DocumentDeleteEntity<T>> multiDocument = new MultiDocumentEntity<>();
368-
final Collection<DocumentDeleteEntity<T>> docs = new ArrayList<>();
369-
final Collection<ErrorEntity> errors = new ArrayList<>();
370-
final Collection<Object> documentsAndErrors = new ArrayList<>();
369+
final List<DocumentDeleteEntity<T>> docs = new ArrayList<>();
370+
final List<ErrorEntity> errors = new ArrayList<>();
371+
final List<Object> documentsAndErrors = new ArrayList<>();
371372
final JsonNode body = getSerde().parse(response.getBody());
372373
for (final JsonNode next : body) {
373374
JsonNode isError = next.get(ArangoResponseField.ERROR_FIELD_NAME);

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,25 @@ void insertDocumentsSilent(ArangoCollection collection) {
408408
assertThat(info.getErrors()).isEmpty();
409409
}
410410

411+
@ParameterizedTest(name = "{index}")
412+
@MethodSource("cols")
413+
void insertDocumentsWithErrors(ArangoCollection collection) {
414+
final MultiDocumentEntity<DocumentCreateEntity<BaseDocument>> res =
415+
collection.insertDocuments(Arrays.asList(
416+
new BaseDocument(),
417+
new BaseDocument("<<illegalId>>"),
418+
new BaseDocument()
419+
),
420+
new DocumentCreateOptions(), BaseDocument.class);
421+
assertThat(res).isNotNull();
422+
assertThat(res.getDocuments()).hasSize(2);
423+
assertThat(res.getErrors()).hasSize(1);
424+
assertThat(res.getDocumentsAndErrors()).hasSize(3);
425+
assertThat(res.getDocumentsAndErrors().get(0)).isSameAs(res.getDocuments().get(0));
426+
assertThat(res.getDocumentsAndErrors().get(1)).isSameAs(res.getErrors().get(0));
427+
assertThat(res.getDocumentsAndErrors().get(2)).isSameAs(res.getDocuments().get(1));
428+
}
429+
411430
@ParameterizedTest(name = "{index}")
412431
@MethodSource("cols")
413432
void insertDocumentsRefillIndexCaches(ArangoCollection collection) {

0 commit comments

Comments
 (0)