Skip to content

Commit c0ab261

Browse files
author
mpv1989
committed
Fix issue #145
* ArangoCollection.updateDocument() * ArangoVertexCollection.updateVertex() * ArangoEdgeCollection.updateEdge()
1 parent 0b7611d commit c0ab261

File tree

7 files changed

+102
-2
lines changed

7 files changed

+102
-2
lines changed

ChangeLog

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ v4.2.x (xxxx-xx-xx)
55
* added ArangoCollection.ensure<IndexType>Index()
66
* maded ArangoCollection.create<IndexType>Index() deprecated
77
* let ArangoCursor implement Iterable
8+
* fixed issue #145: ArangoCollection.updateDocument()
9+
* fixed issue #145: ArangoVertexCollection.updateVertex()
10+
* fixed issue #145: ArangoEdgeCollection.updateEdge()
811

912
v4.2.3 (2017-07-31)
1013
---------------------------

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,9 @@ public DocumentUpdateEntity<T> deserialize(final Response response) throws VPack
374374
if (oldDoc.isObject()) {
375375
doc.setOld((T) util().deserialize(oldDoc, value.getClass()));
376376
}
377+
final Map<DocumentField.Type, String> values = new HashMap<DocumentField.Type, String>();
378+
values.put(DocumentField.Type.REV, doc.getRev());
379+
executor.documentCache().setValues(value, values);
377380
return doc;
378381
}
379382
};

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,11 @@ protected <T> ResponseDeserializer<EdgeUpdateEntity> updateEdgeResponseDeseriali
151151
@Override
152152
public EdgeUpdateEntity deserialize(final Response response) throws VPackException {
153153
final VPackSlice body = response.getBody().get(ArangoDBConstants.EDGE);
154-
return util().deserialize(body, EdgeUpdateEntity.class);
154+
final EdgeUpdateEntity doc = util().deserialize(body, EdgeUpdateEntity.class);
155+
final Map<DocumentField.Type, String> values = new HashMap<DocumentField.Type, String>();
156+
values.put(DocumentField.Type.REV, doc.getRev());
157+
executor.documentCache().setValues(value, values);
158+
return doc;
155159
}
156160
};
157161
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,11 @@ protected <T> ResponseDeserializer<VertexUpdateEntity> updateVertexResponseDeser
156156
@Override
157157
public VertexUpdateEntity deserialize(final Response response) throws VPackException {
158158
final VPackSlice body = response.getBody().get(ArangoDBConstants.VERTEX);
159-
return util().deserialize(body, VertexUpdateEntity.class);
159+
final VertexUpdateEntity doc = util().deserialize(body, VertexUpdateEntity.class);
160+
final Map<DocumentField.Type, String> values = new HashMap<DocumentField.Type, String>();
161+
values.put(DocumentField.Type.REV, doc.getRev());
162+
executor.documentCache().setValues(value, values);
163+
return doc;
160164
}
161165
};
162166
}

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ public void insertDocument() {
111111
assertThat(doc.getId(), is(COLLECTION_NAME + "/" + doc.getKey()));
112112
}
113113

114+
@Test
115+
public void insertDocumentUpdateRev() {
116+
final BaseDocument doc = new BaseDocument();
117+
final DocumentCreateEntity<BaseDocument> createResult = db.collection(COLLECTION_NAME).insertDocument(doc,
118+
null);
119+
assertThat(doc.getRevision(), is(createResult.getRev()));
120+
}
121+
114122
@Test
115123
public void insertDocumentReturnNew() {
116124
final DocumentCreateOptions options = new DocumentCreateOptions().returnNew(true);
@@ -292,6 +300,17 @@ public void updateDocument() {
292300
assertThat(readResult.getProperties().keySet(), hasItem("c"));
293301
}
294302

303+
@Test
304+
public void updateDocumentUpdateRev() {
305+
final BaseDocument doc = new BaseDocument();
306+
final DocumentCreateEntity<BaseDocument> createResult = db.collection(COLLECTION_NAME).insertDocument(doc,
307+
null);
308+
assertThat(doc.getRevision(), is(createResult.getRev()));
309+
final DocumentUpdateEntity<BaseDocument> updateResult = db.collection(COLLECTION_NAME)
310+
.updateDocument(createResult.getKey(), doc, null);
311+
assertThat(doc.getRevision(), is(updateResult.getRev()));
312+
}
313+
295314
@Test
296315
public void updateDocumentIfMatch() {
297316
final BaseDocument doc = new BaseDocument();
@@ -576,6 +595,17 @@ public void replaceDocument() {
576595
assertThat(String.valueOf(readResult.getAttribute("b")), is("test"));
577596
}
578597

598+
@Test
599+
public void replaceDocumentUpdateRev() {
600+
final BaseDocument doc = new BaseDocument();
601+
final DocumentCreateEntity<BaseDocument> createResult = db.collection(COLLECTION_NAME).insertDocument(doc,
602+
null);
603+
assertThat(doc.getRevision(), is(createResult.getRev()));
604+
final DocumentUpdateEntity<BaseDocument> replaceResult = db.collection(COLLECTION_NAME)
605+
.replaceDocument(createResult.getKey(), doc, null);
606+
assertThat(doc.getRevision(), is(replaceResult.getRev()));
607+
}
608+
579609
@Test
580610
public void replaceDocumentIfMatch() {
581611
final BaseDocument doc = new BaseDocument();

src/test/java/com/arangodb/ArangoEdgeCollectionTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ public void insertEdge() {
118118
assertThat(document.getTo(), is(notNullValue()));
119119
}
120120

121+
@Test
122+
public void insertEdgeUpdateRev() {
123+
final BaseEdgeDocument value = createEdgeValue();
124+
final EdgeEntity edge = db.graph(GRAPH_NAME).edgeCollection(EDGE_COLLECTION_NAME).insertEdge(value, null);
125+
assertThat(value.getRevision(), is(edge.getRev()));
126+
}
127+
121128
@Test
122129
public void getEdge() {
123130
final BaseEdgeDocument value = createEdgeValue();
@@ -195,6 +202,16 @@ public void replaceEdge() {
195202
assertThat(String.valueOf(readResult.getAttribute("b")), is("test"));
196203
}
197204

205+
@Test
206+
public void replaceEdgeUpdateRev() {
207+
final BaseEdgeDocument doc = createEdgeValue();
208+
final EdgeEntity createResult = db.graph(GRAPH_NAME).edgeCollection(EDGE_COLLECTION_NAME).insertEdge(doc, null);
209+
assertThat(doc.getRevision(), is(createResult.getRev()));
210+
final EdgeUpdateEntity replaceResult = db.graph(GRAPH_NAME).edgeCollection(EDGE_COLLECTION_NAME)
211+
.replaceEdge(createResult.getKey(), doc, null);
212+
assertThat(doc.getRevision(), is(replaceResult.getRev()));
213+
}
214+
198215
@Test
199216
public void replaceEdgeIfMatch() {
200217
final BaseEdgeDocument doc = createEdgeValue();
@@ -261,6 +278,16 @@ public void updateEdge() {
261278
assertThat(readResult.getProperties().keySet(), hasItem("c"));
262279
}
263280

281+
@Test
282+
public void updateEdgeUpdateRev() {
283+
final BaseEdgeDocument doc = createEdgeValue();
284+
final EdgeEntity createResult = db.graph(GRAPH_NAME).edgeCollection(EDGE_COLLECTION_NAME).insertEdge(doc, null);
285+
assertThat(doc.getRevision(), is(createResult.getRev()));
286+
final EdgeUpdateEntity updateResult = db.graph(GRAPH_NAME).edgeCollection(EDGE_COLLECTION_NAME)
287+
.updateEdge(createResult.getKey(), doc, null);
288+
assertThat(doc.getRevision(), is(updateResult.getRev()));
289+
}
290+
264291
@Test
265292
public void updateEdgeIfMatch() {
266293
final BaseEdgeDocument doc = createEdgeValue();

src/test/java/com/arangodb/ArangoVertexCollectionTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ public void insertVertex() {
9797
assertThat(document.getKey(), is(vertex.getKey()));
9898
}
9999

100+
@Test
101+
public void insertVertexUpdateRev() {
102+
final BaseDocument doc = new BaseDocument();
103+
final VertexEntity vertex = db.graph(GRAPH_NAME).vertexCollection(COLLECTION_NAME).insertVertex(doc, null);
104+
assertThat(doc.getRevision(), is(vertex.getRev()));
105+
}
106+
100107
@Test
101108
public void getVertex() {
102109
final VertexEntity vertex = db.graph(GRAPH_NAME).vertexCollection(COLLECTION_NAME)
@@ -173,6 +180,17 @@ public void replaceVertex() {
173180
assertThat(String.valueOf(readResult.getAttribute("b")), is("test"));
174181
}
175182

183+
@Test
184+
public void replaceVertexUpdateRev() {
185+
final BaseDocument doc = new BaseDocument();
186+
final VertexEntity createResult = db.graph(GRAPH_NAME).vertexCollection(COLLECTION_NAME).insertVertex(doc,
187+
null);
188+
assertThat(doc.getRevision(), is(createResult.getRev()));
189+
final VertexUpdateEntity replaceResult = db.graph(GRAPH_NAME).vertexCollection(COLLECTION_NAME)
190+
.replaceVertex(createResult.getKey(), doc, null);
191+
assertThat(doc.getRevision(), is(replaceResult.getRev()));
192+
}
193+
176194
@Test
177195
public void replaceVertexIfMatch() {
178196
final BaseDocument doc = new BaseDocument();
@@ -242,6 +260,17 @@ public void updateVertex() {
242260
assertThat(readResult.getProperties().keySet(), hasItem("c"));
243261
}
244262

263+
@Test
264+
public void updateVertexUpdateRev() {
265+
final BaseDocument doc = new BaseDocument();
266+
final VertexEntity createResult = db.graph(GRAPH_NAME).vertexCollection(COLLECTION_NAME).insertVertex(doc,
267+
null);
268+
assertThat(doc.getRevision(), is(createResult.getRev()));
269+
final VertexUpdateEntity updateResult = db.graph(GRAPH_NAME).vertexCollection(COLLECTION_NAME)
270+
.updateVertex(createResult.getKey(), doc, null);
271+
assertThat(doc.getRevision(), is(updateResult.getRev()));
272+
}
273+
245274
@Test
246275
public void updateVertexIfMatch() {
247276
final BaseDocument doc = new BaseDocument();

0 commit comments

Comments
 (0)