Skip to content

Commit 7323ace

Browse files
authored
Fixed deserializing null String (#411)
* fixed deserializing null String * fixed queryWithFailOnWarningFalse test
1 parent b361c03 commit 7323ace

File tree

5 files changed

+20
-8
lines changed

5 files changed

+20
-8
lines changed

src/main/java/com/arangodb/internal/util/ArangoDeserializerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public ArangoDeserializerImpl(final VPack vpacker, final VPackParser vpackParser
4848
public <T> T deserialize(final VPackSlice vpack, final Type type) throws ArangoDBException {
4949
try {
5050
final T doc;
51-
if (type == String.class && !vpack.isString()) {
51+
if (type == String.class && !vpack.isString() && !vpack.isNull()) {
5252
doc = (T) vpackParser.toJson(vpack, true);
5353
} else {
5454
doc = vpacker.deserialize(vpack, type);

src/main/java/com/arangodb/mapping/ArangoJack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public VPackSlice serialize(final Object entity, final Options options) throws A
154154
public <T> T deserialize(final VPackSlice vpack, final Type type) throws ArangoDBException {
155155
try {
156156
final T doc;
157-
if (type == String.class && !vpack.isString()) {
157+
if (type == String.class && !vpack.isString() && !vpack.isNull()) {
158158
final JsonNode node = vpackMapper.readTree(
159159
Arrays.copyOfRange(vpack.getBuffer(), vpack.getStart(), vpack.getStart() + vpack.getByteSize()));
160160
doc = (T) jsonMapper.writeValueAsString(node);

src/test/java/com/arangodb/ArangoDatabaseTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ public void queryWithFailOnWarningTrue() {
700700
public void queryWithFailOnWarningFalse() {
701701
final ArangoCursor<String> cursor = db
702702
.query("RETURN 1 / 0", null, new AqlQueryOptions().failOnWarning(false), String.class);
703-
assertThat(cursor.next(), is("null"));
703+
assertThat(cursor.next(), nullValue());
704704
}
705705

706706
@Test

src/test/java/com/arangodb/serde/CustomSerdeTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.arangodb.mapping.ArangoJack;
2929
import com.arangodb.model.DocumentCreateOptions;
3030
import com.arangodb.util.ArangoSerialization;
31+
import com.arangodb.velocypack.VPackBuilder;
3132
import com.arangodb.velocypack.VPackSlice;
3233
import com.fasterxml.jackson.core.JsonGenerator;
3334
import com.fasterxml.jackson.core.JsonParser;
@@ -53,7 +54,7 @@
5354
import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED;
5455
import static org.hamcrest.MatcherAssert.assertThat;
5556
import static org.hamcrest.Matchers.instanceOf;
56-
import static org.hamcrest.Matchers.is;
57+
import static org.hamcrest.Matchers.*;
5758

5859

5960
/**
@@ -234,4 +235,10 @@ public void getDocument() {
234235
assertThat(result.getAttribute("int"), is(BigInteger.valueOf(10)));
235236
}
236237

238+
@Test
239+
public void parseNullString() {
240+
final String json = arangoDB.util(CUSTOM).deserialize(new VPackBuilder().add((String) null).slice(), String.class);
241+
assertThat(json, nullValue());
242+
}
243+
237244
}

src/test/java/com/arangodb/util/ArangoSerializationTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@
2222

2323
import com.arangodb.ArangoDB;
2424
import com.arangodb.entity.BaseDocument;
25-
import com.arangodb.velocypack.Type;
26-
import com.arangodb.velocypack.VPackBuilder;
27-
import com.arangodb.velocypack.VPackSlice;
28-
import com.arangodb.velocypack.ValueType;
25+
import com.arangodb.velocypack.*;
2926
import org.junit.BeforeClass;
3027
import org.junit.Test;
3128

@@ -36,6 +33,7 @@
3633

3734
import static org.hamcrest.MatcherAssert.assertThat;
3835
import static org.hamcrest.Matchers.is;
36+
import static org.hamcrest.Matchers.nullValue;
3937

4038
/**
4139
* @author Mark Vollmary
@@ -102,4 +100,11 @@ public void parseJsonIncludeNull() {
102100
final String json = util.deserialize(util.serialize(entity, new ArangoSerializer.Options()), String.class);
103101
assertThat(json, is("{\"value\":[\"test\",null]}"));
104102
}
103+
104+
@Test
105+
public void parseNullString() {
106+
final String json = util.deserialize(new VPackBuilder().add((String) null).slice(), String.class);
107+
assertThat(json, nullValue());
108+
}
109+
105110
}

0 commit comments

Comments
 (0)