Skip to content

Commit 6be1a86

Browse files
author
a-brandt
committed
added deserializer for BaseDocument (issue #50)
1 parent ec24309 commit 6be1a86

File tree

3 files changed

+66
-8
lines changed

3 files changed

+66
-8
lines changed

Diff for: src/main/java/com/arangodb/entity/EntityDeserializers.java

+22
Original file line numberDiff line numberDiff line change
@@ -2090,6 +2090,28 @@ public GraphsEntity deserialize(
20902090
}
20912091
}
20922092

2093+
public static class BaseDocumentDeserializer implements JsonDeserializer<BaseDocument> {
2094+
@Override
2095+
public BaseDocument deserialize(
2096+
final JsonElement json,
2097+
final Type typeOfT,
2098+
final JsonDeserializationContext context) {
2099+
2100+
if (json.isJsonNull()) {
2101+
return null;
2102+
}
2103+
2104+
final JsonObject obj = json.getAsJsonObject();
2105+
final BaseDocument entity = deserializeDocumentParameter(obj, new BaseDocument());
2106+
2107+
if (entity instanceof BaseDocument) {
2108+
entity.setProperties(DeserializeSingleEntry.deserializeJsonObject(obj));
2109+
}
2110+
2111+
return entity;
2112+
}
2113+
}
2114+
20932115
public static class DeleteEntityDeserializer implements JsonDeserializer<DeletedEntity> {
20942116
@Override
20952117
public DeletedEntity deserialize(

Diff for: src/main/java/com/arangodb/entity/EntityFactory.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public static GsonBuilder getGsonBuilder() {
112112
new EntityDeserializers.ReplicationLoggerStateEntityDeserializer())
113113
.registerTypeAdapter(ReplicationLoggerStateEntity.Client.class,
114114
new EntityDeserializers.ReplicationLoggerStateEntityClientDeserializer())
115+
.registerTypeAdapter(BaseDocument.class, new EntityDeserializers.BaseDocumentDeserializer())
115116
.registerTypeAdapter(GraphEntity.class, new EntityDeserializers.GraphEntityDeserializer())
116117
.registerTypeAdapter(GraphsEntity.class, new EntityDeserializers.GraphsEntityDeserializer())
117118
.registerTypeAdapter(DeletedEntity.class, new EntityDeserializers.DeleteEntityDeserializer())
@@ -136,13 +137,10 @@ public static GsonBuilder getGsonBuilder() {
136137
* Configures instances of Gson used by this factory.
137138
*
138139
* @param builders
139-
* one or two GsonBuilder instances. If only one is provided it
140-
* will be used for initializing both <code>gson</code> and
141-
* <code>gsonNull</code> fields (latter with
142-
* <code>serializeNulls()</code> called prior to creating). If
143-
* two are given - first initializes <code>gson</code> field,
144-
* second initializes <code>gsonNull</code> (used when
145-
* serialization of nulls is requested).
140+
* one or two GsonBuilder instances. If only one is provided it will be used for initializing both
141+
* <code>gson</code> and <code>gsonNull</code> fields (latter with <code>serializeNulls()</code> called
142+
* prior to creating). If two are given - first initializes <code>gson</code> field, second initializes
143+
* <code>gsonNull</code> (used when serialization of nulls is requested).
146144
*/
147145
public static void configure(GsonBuilder... builders) {
148146
if (builders.length < 1) {

Diff for: src/test/java/com/arangodb/ArangoDriverTraversalTest.java

+39-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.junit.Before;
3232
import org.junit.Test;
3333

34+
import com.arangodb.entity.BaseDocument;
3435
import com.arangodb.entity.BaseEntity;
3536
import com.arangodb.entity.EdgeDefinitionEntity;
3637
import com.arangodb.entity.PathEntity;
@@ -88,7 +89,7 @@ public void _before() throws ArangoException {
8889

8990
@SuppressWarnings("rawtypes")
9091
@Test
91-
public void test_create_vertex() throws ArangoException {
92+
public void test_getTraversal() throws ArangoException {
9293
final TraversalQueryOptions traversalQueryOptions = new TraversalQueryOptions();
9394

9495
traversalQueryOptions.setGraphName(graphName);
@@ -124,12 +125,49 @@ public void test_create_vertex() throws ArangoException {
124125
assertThat(paths.get(3).getVertices().size(), is(3));
125126
}
126127

128+
@Test
129+
public void test_getTraversalWithBaseDocument() throws ArangoException {
130+
final TraversalQueryOptions traversalQueryOptions = new TraversalQueryOptions();
131+
132+
traversalQueryOptions.setGraphName(graphName);
133+
traversalQueryOptions.setStartVertex("person/Alice");
134+
traversalQueryOptions.setDirection(Direction.OUTBOUND);
135+
136+
final TraversalEntity<BaseDocument, BaseDocument> traversal = driver.getTraversal(traversalQueryOptions,
137+
BaseDocument.class, BaseDocument.class);
138+
139+
assertThat(traversal, is(notNullValue()));
140+
141+
final List<VertexEntity<BaseDocument>> vertices = traversal.getVertices();
142+
assertThat(vertices, is(notNullValue()));
143+
assertThat(vertices.size(), is(4));
144+
assertThat(vertices.get(0).getEntity().getProperties().size(), is(1));
145+
assertThat((String) vertices.get(0).getEntity().getAttribute("name"), is("Alice"));
146+
assertThat((String) vertices.get(1).getEntity().getAttribute("name"), is("Bob"));
147+
assertThat((String) vertices.get(2).getEntity().getAttribute("name"), is("Charlie"));
148+
assertThat((String) vertices.get(3).getEntity().getAttribute("name"), is("Dave"));
149+
150+
final List<PathEntity<BaseDocument, BaseDocument>> paths = traversal.getPaths();
151+
assertThat(paths, is(notNullValue()));
152+
assertThat(paths.size(), is(4));
153+
154+
// start vertex!
155+
assertThat(paths.get(0).getEdges().size(), is(0));
156+
assertThat(paths.get(0).getVertices().size(), is(1));
157+
assertThat((String) paths.get(0).getVertices().get(0).getEntity().getAttribute("name"), is("Alice"));
158+
159+
assertThat(paths.get(3).getEdges().size(), is(2));
160+
assertThat(paths.get(3).getVertices().size(), is(3));
161+
}
162+
127163
private VertexEntity<Person> createPerson(final String name) throws ArangoException {
128164
return driver.graphCreateVertex(graphName, vertexCollectionName, name, new Person(name), true);
129165
}
130166

131167
public class Person extends BaseEntity {
132168

169+
private static final long serialVersionUID = 1L;
170+
133171
private String name;
134172

135173
public Person(final String name) {

0 commit comments

Comments
 (0)