Skip to content

Commit d7bf6dc

Browse files
committed
overwriteMode conflict and ignore
1 parent 4b507ce commit d7bf6dc

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
66

77
## [Unreleased]
88

9+
- support `overwriteMode` values `ignore` and `conflict` (ArangoDB v3.7)
10+
911
## [6.6.3] - 2020-05-06
1012

1113
- velocypack v2.3.1

src/main/java/com/arangodb/model/OverwriteMode.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
* @author Michele Rastelli
2626
*/
2727
public enum OverwriteMode {
28-
replace("replace"), update("update");
28+
ignore("ignore"),
29+
replace("replace"),
30+
update("update"),
31+
conflict("conflict");
2932

3033
private final String value;
3134

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,43 @@ public void insertDocumentOverwriteReturnOld() {
158158
assertThat(collection.count().getCount(), is(initialCount + 1L));
159159
}
160160

161+
@Test
162+
public void insertDocumentOverwriteModeIgnore() {
163+
assumeTrue(isAtLeastVersion(3, 7));
164+
165+
String key = "key-" + UUID.randomUUID().toString();
166+
final BaseDocument doc = new BaseDocument(key);
167+
doc.addAttribute("foo", "a");
168+
final DocumentCreateEntity<BaseDocument> meta = collection.insertDocument(doc);
169+
170+
final BaseDocument doc2 = new BaseDocument(key);
171+
doc2.addAttribute("bar", "b");
172+
final DocumentCreateEntity<BaseDocument> insertIgnore = collection
173+
.insertDocument(doc2, new DocumentCreateOptions().overwriteMode(OverwriteMode.ignore));
174+
175+
assertThat(insertIgnore, is(notNullValue()));
176+
assertThat(insertIgnore.getRev(), is(meta.getRev()));
177+
}
178+
179+
@Test
180+
public void insertDocumentOverwriteModeConflict() {
181+
assumeTrue(isAtLeastVersion(3, 7));
182+
183+
String key = "key-" + UUID.randomUUID().toString();
184+
final BaseDocument doc = new BaseDocument(key);
185+
doc.addAttribute("foo", "a");
186+
final DocumentCreateEntity<BaseDocument> meta = collection.insertDocument(doc);
187+
188+
final BaseDocument doc2 = new BaseDocument(key);
189+
try {
190+
collection.insertDocument(doc2, new DocumentCreateOptions().overwriteMode(OverwriteMode.conflict));
191+
fail();
192+
} catch (ArangoDBException e) {
193+
assertThat(e.getResponseCode(), is(409));
194+
assertThat(e.getErrorNum(), is(1210));
195+
}
196+
}
197+
161198
@Test
162199
public void insertDocumentOverwriteModeReplace() {
163200
assumeTrue(isAtLeastVersion(3, 7));

0 commit comments

Comments
 (0)