8000 vpack · anderick/arangodb-java-driver@2bfb224 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2bfb224

Browse files
author
Mark
committed
vpack
1 parent 8555b72 commit 2bfb224

10 files changed

+71
-45
lines changed

src/main/java/com/arangodb/ArangoDriver.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1932,7 +1932,7 @@ public DocumentEntity<?> deleteDocument(final String documentHandle) throws Aran
19321932
* @return a DocumentEntity object
19331933
* @throws ArangoException
19341934
*/
1935-
public DocumentEntity<?> deleteDocument(final long collectionId, final long documentId, final Long rev)
1935+
public DocumentEntity<?> deleteDocument(final long collectionId, final long documentId, final String rev)
19361936
throws ArangoException {
19371937
return deleteDocument(createDocumentHandle(collectionId, String.valueOf(documentId)), rev);
19381938
}
@@ -1951,7 +1951,7 @@ public DocumentEntity<?> deleteDocument(final long collectionId, final long docu
19511951
* @return a DocumentEntity object
19521952
* @throws ArangoException
19531953
*/
1954-
public DocumentEntity<?> deleteDocument(final String collectionName, final long documentId, final Long rev)
1954+
public DocumentEntity<?> deleteDocument(final String collectionName, final long documentId, final String rev)
19551955
throws ArangoException {
19561956
return deleteDocument(createDocumentHandle(collectionName, String.valueOf(documentId)), rev);
19571957
}
@@ -1970,7 +1970,7 @@ public DocumentEntity<?> deleteDocument(final String collectionName, final long
19701970
* @return a DocumentEntity object
19711971
* @throws ArangoException
19721972
*/
1973-
public DocumentEntity<?> deleteDocument(final long collectionId, final String documentKey, final Long rev)
1973+
public DocumentEntity<?> deleteDocument(final long collectionId, final String documentKey, final String rev)
19741974
throws ArangoException {
19751975
return deleteDocument(createDocumentHandle(collectionId, documentKey), rev);
19761976
}
@@ -1989,7 +1989,7 @@ public DocumentEntity<?> deleteDocument(final long collectionId, final String do
19891989
* @return a DocumentEntity object
19901990
* @throws ArangoException
19911991
*/
1992-
public DocumentEntity<?> deleteDocument(final String collectionName, final String documentKey, final Long rev)
1992+
public DocumentEntity<?> deleteDocument(final String collectionName, final String documentKey, final String rev)
19931993
throws ArangoException {
19941994
return deleteDocument(createDocumentHandle(collectionName, documentKey), rev);
19951995
}
@@ -2006,7 +2006,7 @@ public DocumentEntity<?> deleteDocument(final String collectionName, final Strin
20062006
* @return a DocumentEntity object
20072007
* @throws ArangoException
20082008
*/
2009-
public DocumentEntity<?> deleteDocument(final String documentHandle, final Long rev) throws ArangoException {
2009+
public DocumentEntity<?> deleteDocument(final String documentHandle, final String rev) throws ArangoException {
20102010
return documentDriver.deleteDocument(getDefaultDatabase(), documentHandle, rev);
20112011
}
20122012

@@ -4927,8 +4927,8 @@ public DocumentEntity<String> createDocumentRaw(
49274927
*/
49284928
public String getDocumentRaw(
49294929
final String documentHandle,
4930-
final Long ifNoneMatchRevision,
4931-
final Long ifMatchRevision) throws ArangoException {
4930+
final String ifNoneMatchRevision,
4931+
final String ifMatchRevision) throws ArangoException {
49324932
return documentDriver.getDocumentRaw(getDefaultDatabase(), documentHandle, ifNoneMatchRevision,
49334933
ifMatchRevision);
49344934
}

src/main/java/com/arangodb/InternalDocumentDriver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ <T> DocumentEntity<T> getDocument(
6464
String ifNoneMatchRevision,
6565
String ifMatchRevision) throws ArangoException;
6666

67-
String getDocumentRaw(String database, String documentHandle, Long ifNoneMatchRevision, Long ifMatchRevision)
67+
String getDocumentRaw(String database, String documentHandle, String ifNoneMatchRevision, String ifMatchRevision)
6868
throws ArangoException;
6969

70-
DocumentEntity<?> deleteDocument(String database, String documentHandle, Long rev) throws ArangoException;
70+
DocumentEntity<?> deleteDocument(String database, String documentHandle, String rev) throws ArangoException;
7171

7272
<T> EdgeEntity<T> createEdge(
7373
String database,

src/main/java/com/arangodb/entity/EntityDeserializers.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,8 @@ private static <T extends BaseEntity> T deserializeBaseParameter(final VPackSlic
294294
private static <T extends DocumentHolder> T deserializeDocumentParameter(final VPackSlice obj, final T entity)
295295
throws VPackException {
296296
final VPackSlice rev = obj.get(BaseDocument.REV);
297-
if (rev.isNumber()) {
298-
entity.setDocumentRevision(rev.getAsLong());
297+
if (rev.isString()) {
298+
entity.setDocumentRevision(rev.getAsString());
299299
}
300300
final VPackSlice id = obj.get(BaseDocument.ID);
301301
if (id.isString()) {

src/main/java/com/arangodb/entity/EntityFactory.java

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,22 @@
3737
*/
3838
public class EntityFactory {
3939

40+
private static final boolean INCLUDE_NULL_VALUE_DEFAULT = false;
41+
4042
private static VPack vpack = new VPack();
43+
private static VPack vpackNull = new VPack();
4144

4245
private EntityFactory() {
4346
// this is a helper class
4447
}
4548

4649
static {
47-
configure();
50+
vpackNull.getOptions().setSerializeNullValues(true);
51+
configure(vpack);
52+
configure(vpackNull);
4853
}
4954

50-
public static void configure() {
55+
public static void configure(final VPack vpack) {
5156
vpack.registerSerializer(CollectionStatus.class, new CollectionStatusTypeAdapter())
5257
.registerDeserializer(CollectionStatus.class, new CollectionStatusTypeAdapter())
5358
.registerDeserializer(CollectionEntity.class, new EntityDeserializers.CollectionEntityDeserializer())
@@ -131,16 +136,19 @@ public static void configure() {
131136
// .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
132137
}
133138

134-
public static <T> VPack registerSerializer(final Class<T> clazz, final VPackSerializer<T> serializer) {
135-
return vpack.registerSerializer(clazz, serializer);
139+
public static <T> void registerSerializer(final Class<T> clazz, final VPackSerializer<T> serializer) {
140+
vpack.registerSerializer(clazz, serializer);
141+
vpackNull.registerSerializer(clazz, serializer);
136142
}
137143

138-
public static <T> VPack registerDeserializer(final Class<T> clazz, final VPackDeserializer<T> deserializer) {
139-
return vpack.registerDeserializer(clazz, deserializer);
144+
public static <T> void registerDeserializer(final Class<T> clazz, final VPackDeserializer<T> deserializer) {
145+
vpack.registerDeserializer(clazz, deserializer);
146+
vpackNull.registerDeserializer(clazz, deserializer);
140147
}
141148

142-
public static <T> VPack regitserInstanceCreator(final Class<T> clazz, final VPackInstanceCreator<T> creator) {
143-
return vpack.regitserInstanceCreator(clazz, creator);
149+
public static <T> void regitserInstanceCreator(final Class<T> clazz, final VPackInstanceCreator<T> creator) {
150+
vpack.regitserInstanceCreator(clazz, creator);
151+
vpackNull.regitserInstanceCreator(clazz, creator);
144152
}
145153

146154
public static <T> T createEntity(final VPackSlice vpack, final Class<T> type) throws ArangoException {
@@ -175,27 +183,44 @@ public static <T extends Map<K, C>, K, C> T createEntity(
175183
}
176184

177185
public static <T> VPackSlice toVPack(final T obj) throws ArangoException {
186+
return toVPack(obj, INCLUDE_NULL_VALUE_DEFAULT);
187+
}
188+
189+
public static <T> VPackSlice toVPack(final T obj, final boolean includeNullValue) throws ArangoException {
178190
try {
179-
return EntityFactory.vpack.serialize(obj);
191+
return includeNullValue ? EntityFactory.vpackNull.serialize(obj) : EntityFactory.vpack.serialize(obj);
180192
} catch (final VPackParserException e) {
181193
throw new ArangoException(e);
182194
}
183195
}
184196

185197
public static <T extends Map<?, ?>> VPackSlice toVPack(final T obj) throws ArangoException {
198+
return toVPack(obj, INCLUDE_NULL_VALUE_DEFAULT);
199+
}
200+
201+
public static <T extends Map<?, ?>> VPackSlice toVPack(final T obj, final boolean includeNullValue)
202+
throws ArangoException {
186203
return toVPack(obj, String.class);
187204
}
188205

189206
public static <T extends Map<?, ?>> VPackSlice toVPack(final T obj, final Class<?> keyType) throws ArangoException {
207+
return toVPack(obj, keyType, INCLUDE_NULL_VALUE_DEFAULT);
208+
}
209+
210+
public static <T extends Map<?, ?>> VPackSlice toVPack(
211+
final T obj,
212+
final Class<?> keyType,
213+
final boolean includeNullValue) throws ArangoException {
190214
try {
191-
return EntityFactory.vpack.serialize(obj, keyType);
215+
return includeNullValue ? EntityFactory.vpackNull.serialize(obj, keyType)
216+
: EntityFactory.vpack.serialize(obj, keyType);
192217
} catch (final VPackParserException e) {
193218
throw new ArangoException(e);
194219
}
195220
}
196221

197222
public static String toJson(final VPackSlice vpack) {
198-
return VPackParser.toJson(vpack, false);
223+
return VPackParser.toJson(vpack, INCLUDE_NULL_VALUE_DEFAULT);
199224
}
200225

201226
public static String toJson(final VPackSlice vpack, final boolean includeNullValue) {

src/main/java/com/arangodb/entity/GraphEntity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class GraphEntity extends BaseEntity implements DocumentHolder {
3030
* Revision of graph.
3131
*/
3232
@SerializedName("_rev")
33-
private long documentRevision;
33+
private String documentRevision;
3434

3535
/**
3636
* Id of graph.
@@ -61,7 +61,7 @@ public class GraphEntity extends BaseEntity implements DocumentHolder {
6161
private String name;
6262

6363
@Override
64-
public long getDocumentRevision() {
64+
public String getDocumentRevision() {
6565
return documentRevision;
6666
}
6767

@@ -76,7 +76,7 @@ public String getDocumentKey() {
7676
}
7777

7878
@Override
79-
public void setDocumentRevision(final long documentRevision) {
79+
public void setDocumentRevision(final String documentRevision) {
8080
this.documentRevision = documentRevision;
8181
}
8282

src/main/java/com/arangodb/impl/AnnotationHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ public synchronized void updateDocumentAttributes(
5757
}
5858

5959
@SuppressWarnings({ "unchecked", "rawtypes" })
60-
public synchronized void updateDocumentRev(final Object o, final long rev) {
60+
public synchronized void updateDocumentRev(final Object o, final String rev) {
6161
if (o != null) {
6262
if (o instanceof java.util.Map) {
63-
final java.util.Map m = (java.util.Map) o;
63+
final Map m = (Map) o;
6464
m.put(BaseDocument.REV, rev);
6565
} else {
6666
final DocumentAttributes documentAttributes = getDocumentAttributes(o);

src/main/java/com/arangodb/impl/InternalDocumentDriverImpl.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
import com.arangodb.util.EdgeUtils;
3333
import com.arangodb.util.MapBuilder;
3434
import com.arangodb.velocypack.VPackSlice;
35-
import com.google.gson.JsonElement;
36-
import com.google.gson.JsonObject;
3735

3836
/**
3937
* @author tamtam180 - kirscheless at gmail.com
@@ -108,7 +106,7 @@ public <T> DocumentEntity<T> replaceDocument(
108106
final String database,
109107
final String documentHandle,
110108
final T value,
111-
final Long rev,
109+
final String rev,
112110
final Boolean waitForSync) throws ArangoException {
113111

114112
validateDocumentHandle(documentHandle);
@@ -128,7 +126,7 @@ public DocumentEntity<String> replaceDocumentRaw(
128126
final String database,
129127
final String documentHandle,
130128
final String rawJsonString,
131-
final Long rev,
129+
final String rev,
132130
final Boolean waitForSync) throws ArangoException {
133131

134132
validateDocumentHandle(documentHandle);
@@ -146,7 +144,7 @@ public <T> DocumentEntity<T> updateDocument(
146144
final String database,
147145
final String documentHandle,
148146
final T value,
149-
final Long rev,
147+
final String rev,
150148
final Boolean waitForSync,
151149
final Boolean keepNull) throws ArangoException {
152150

@@ -169,7 +167,7 @@ public DocumentEntity<String> updateDocumentRaw(
169167
final String database,
170168
final String documentHandle,
171169
final String rawJsonString,
172-
final Long rev,
170+
final String rev,
173171
final Boolean waitForSync,
174172
final Boolean keepNull) throws ArangoException {
175173

@@ -210,8 +208,8 @@ public <T> DocumentEntity<T> getDocument(
210208
final String database,
211209
final String documentHandle,
212210
final Class<T> clazz,
213-
final Long ifNoneMatchRevision,
214-
final Long ifMatchRevision) throws ArangoException {
211+
final String ifNoneMatchRevision,
212+
final String ifMatchRevision) throws ArangoException {
215213

216214
validateDocumentHandle(documentHandle);
217215
final HttpResponseEntity res = httpManager.doGet(createDocumentEndpointUrl(database, documentHandle),
@@ -229,8 +227,8 @@ public <T> DocumentEntity<T> getDocument(
229227
public String getDocumentRaw(
230228
final String database,
231229
final String documentHandle,
232-
final Long ifNoneMatchRevision,
233-
final Long ifMatchRevision) throws ArangoException {
230+
final String ifNoneMatchRevision,
231+
final String ifMatchRevision) throws ArangoException {
234232

235233
validateDocumentHandle(documentHandle);
236234
final HttpResponseEntity res = httpManager.doGet(createDocumentEndpointUrl(database, documentHandle),
@@ -249,7 +247,7 @@ public String getDocumentRaw(
249247
}
250248

251249
@Override
252-
public DocumentEntity<?> deleteDocument(final String database, final String documentHandle, final Long rev)
250+
public DocumentEntity<?> deleteDocument(final String database, final String documentHandle, final String rev)
253251
throws ArangoException {
254252

255253
validateDocumentHandle(documentHandle);
@@ -258,7 +256,7 @@ public DocumentEntity<?> deleteDocument(final String database, final String docu
258256
return createEntity(res, DocumentEntity.class);
259257
}
260258

261-
private Map<String, Object> createRevisionCheckHeader(final Long rev) {
259+
private Map<String, Object> createRevisionCheckHeader(final String rev) {
262260
Map<String, Object> header = null;
263261
if (rev != null) {
264262
final MapBuilder mapBuilder = new MapBuilder().put("If-Match", rev);

src/main/java/com/arangodb/impl/InternalGraphDriverImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ public <T> VertexEntity<T> updateVertex(
478478
StringUtils.encodeUrl(collectionName), StringUtils.encodeUrl(key)),
479479
new MapBuilder().put(IF_MATCH, ifMatchRevision, true).put(IF_NONE_MATCH, ifNoneMatchRevision, true).get(),
480480
new MapBuilder().put("keepNull", keepNull).put(WAIT_FOR_SYNC, waitForSync).get(),
481-
EntityFactory.toVPack(vertex/* , keepNull != null && !keepNull */));
481+
EntityFactory.toVPack(vertex, keepNull != null && !keepNull));
482482

483483
VertexEntity<T> result;
484484
if (vertex != null) {

src/main/java/com/arangodb/velocypack/VPack.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,14 +356,17 @@ private void serialize(final String name, final Object entity, final VPackBuilde
356356
}
357357
}
358358

359-
public VPackSlice serialize(final Map entity, final Class<?> keyType) throws VPackParserException {
359+
public VPackSlice serialize(final Map<?, ?> entity, final Class<?> keyType) throws VPackParserException {
360360
final VPackBuilder builder = new VPackBuilder(options);
361361
serialize(null, entity, keyType, builder);
362362
return builder.slice();
363363
}
364364

365-
private void serialize(final String name, final Map entity, final Class<?> keyType, final VPackBuilder builder)
366-
throws VPackParserException {
365+
private void serialize(
366+
final String name,
367+
final Map<?, ?&g C2EE t; entity,
368+
final Class<?> keyType,
369+
final VPackBuilder builder) throws VPackParserException {
367370
try {
368371
serializeMap(name, entity, builder, keyType);
369372
} catch (final Exception e) {

src/test/java/com/arangodb/ArangoDriverGraphTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public void test_createGraph() throws ArangoException {
8585
final GraphEntity graph = driver.createGraph(this.graphName, edgeDefinitions, orphanCollections, true);
8686

8787
assertThat(graph.getCode(), is(201));
88-
assertThat(graph.getDocumentRevision(), is(not(0L)));
88+
assertThat(graph.getDocumentRevision(), is(not("")));
8989
assertThat(graph.getDocumentHandle(), is("_graphs/" + this.graphName));
9090
assertThat(graph.getName(), is(this.graphName));
9191
assertThat(graph.getOrphanCollections(), is(orphanCollections));
@@ -102,7 +102,7 @@ public void test_createGraph_2() throws ArangoException {
102102
// create
103103
final GraphEntity graph = driver.createGraph(this.graphName, edgeDefinitions, orphanCollections, true);
104104
assertThat(graph.getCode(), is(201));
105-
assertThat(graph.getDocumentRevision(), is(not(0L)));
105+
assertThat(graph.getDocumentRevision(), is(not("")));
106106
assertThat(graph.getDocumentHandle(), is("_graphs/" + this.graphName));
107107
assertThat(graph.getName(), is(this.graphName));
108108
assertThat(graph.getOrphanCollections(), is(orphanCollections));

0 commit comments

Comments
 (0)
0