Skip to content

Commit 7ad7d5f

Browse files
authored
fixed nested properties deserialization in BaseDocument (#517)
1 parent 95dd395 commit 7ad7d5f

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

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

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public Map<String, Object> getProperties() {
9191
return Collections.unmodifiableMap(properties);
9292
}
9393

94+
@JsonIgnore
9495
public void setProperties(final Map<String, Object> props) {
9596
for (String f : getMetaProps()) {
9697
requireString(f, props.get(f));

driver/src/test/java/com/arangodb/serde/SerdeTest.java

+31
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package com.arangodb.serde;
22

33
import com.arangodb.ContentType;
4+
import com.arangodb.entity.BaseDocument;
45
import com.arangodb.internal.serde.InternalSerde;
56
import com.arangodb.internal.serde.InternalSerdeProvider;
67
import com.arangodb.internal.serde.SerdeUtils;
78
import com.arangodb.util.RawBytes;
89
import com.arangodb.util.RawJson;
910
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
1011
import com.fasterxml.jackson.databind.node.ObjectNode;
12+
import org.assertj.core.api.InstanceOfAssertFactories;
1113
import org.junit.jupiter.params.ParameterizedTest;
1214
import org.junit.jupiter.params.provider.EnumSource;
1315

16+
import java.util.Collections;
17+
import java.util.Map;
18+
1419
import static org.assertj.core.api.Assertions.assertThat;
1520

1621

@@ -38,4 +43,30 @@ void rawBytesSerde(ContentType type) {
3843
assertThat(deserialized).isEqualTo(raw);
3944
}
4045

46+
@ParameterizedTest
47+
@EnumSource(ContentType.class)
48+
void deserializeBaseDocumentWithNestedProperties(ContentType type) {
49+
InternalSerde s = new InternalSerdeProvider(type).create();
50+
RawJson json = RawJson.of("{\"foo\":\"aaa\",\"properties\":{\"foo\":\"bbb\"}}");
51+
BaseDocument deserialized = s.deserialize(s.serialize(json), BaseDocument.class);
52+
assertThat(deserialized.getAttribute("foo")).isEqualTo("aaa");
53+
assertThat(deserialized.getAttribute("properties"))
54+
.isInstanceOf(Map.class)
55+
.asInstanceOf(InstanceOfAssertFactories.MAP)
56+
.containsEntry("foo", "bbb");
57+
}
58+
59+
@ParameterizedTest
60+
@EnumSource(ContentType.class)
61+
void serializeBaseDocumentWithNestedProperties(ContentType type) {
62+
InternalSerde s = new InternalSerdeProvider(type).create();
63+
BaseDocument doc = new BaseDocument();
64+
doc.addAttribute("foo", "aaa");
65+
doc.addAttribute("properties", Collections.singletonMap("foo", "bbb"));
66+
byte[] ser = s.serialize(doc);
67+
ObjectNode on = s.deserializeUserData(ser, ObjectNode.class);
68+
assertThat(on.get("foo").textValue()).isEqualTo("aaa");
69+
assertThat(on.get("properties").get("foo").textValue()).isEqualTo("bbb");
70+
}
71+
4172
}

0 commit comments

Comments
 (0)