[OLINGO-665] All primitive types are null

This commit is contained in:
Christian Holzer 2015-05-21 14:37:52 +02:00
parent 24898bda9b
commit 6ff644d6cc
3 changed files with 48 additions and 41 deletions

View File

@ -484,12 +484,10 @@ public class ODataJsonSerializer implements ODataSerializer {
final JsonGenerator json) throws EdmPrimitiveTypeException, IOException { final JsonGenerator json) throws EdmPrimitiveTypeException, IOException {
final String value = type.valueToString(primitiveValue, final String value = type.valueToString(primitiveValue,
isNullable, maxLength, precision, scale, isUnicode); isNullable, maxLength, precision, scale, isUnicode);
if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean)) { if (value == null) {
if(value == null) { json.writeNull();
json.writeNull(); } else if(type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Boolean)) {
} else {
json.writeBoolean(Boolean.parseBoolean(value)); json.writeBoolean(Boolean.parseBoolean(value));
}
} else if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Byte) } else if (type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Byte)
|| type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Decimal) || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Decimal)
|| type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Double) || type == EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Double)

View File

@ -349,35 +349,38 @@ public class DataCreator {
entityCollection.getEntities().add( entityCollection.getEntities().add(
new Entity() new Entity()
.addProperty(createPrimitive("PropertyKey", 1)) .addProperty(createPrimitive("PropertyKey", 1))
.addProperty(createPrimitive("PropertyInt16", 0)) .addProperty(createPrimitive("PropertyInt16", null))
.addProperty(createPrimitive("PropertyString", "")) .addProperty(createPrimitive("PropertyString", null))
.addProperty(createPrimitive("PropertyBoolean", null)) .addProperty(createPrimitive("PropertyBoolean", null))
.addProperty(createPrimitive("PropertyByte", 0)) .addProperty(createPrimitive("PropertyByte", null))
.addProperty(createPrimitive("PropertySByte", 0)) .addProperty(createPrimitive("PropertySByte", null))
.addProperty(createPrimitive("PropertyInt32", 0)) .addProperty(createPrimitive("PropertyInt32", null))
.addProperty(createPrimitive("PropertyInt64", 0)) .addProperty(createPrimitive("PropertyInt64", null))
.addProperty(createPrimitive("PropertySingle", 0)) .addProperty(createPrimitive("PropertySingle", null))
.addProperty(createPrimitive("PropertyDouble", 0)) .addProperty(createPrimitive("PropertyDouble", null))
.addProperty(createPrimitive("PropertyDecimal", 0)) .addProperty(createPrimitive("PropertyDecimal", null))
.addProperty(createPrimitive("PropertyBinary", new byte[0])) .addProperty(createPrimitive("PropertyBinary", null))
.addProperty(createPrimitive("PropertyDate", null)) .addProperty(createPrimitive("PropertyDate", null))
.addProperty(createPrimitive("PropertyDateTimeOffset", null)) .addProperty(createPrimitive("PropertyDateTimeOffset", null))
.addProperty(createPrimitive("PropertyDuration", 0)) .addProperty(createPrimitive("PropertyDuration", null))
.addProperty(createPrimitive("PropertyGuid", null)) .addProperty(createPrimitive("PropertyGuid", null))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 0, 0))) .addProperty(createPrimitive("PropertyTimeOfDay", null))
.addProperty(createPrimitiveCollection("CollPropertyString", "spiderman@comic.com", "", "spidergirl@comic.com")) .addProperty(createPrimitiveCollection("CollPropertyString",
"spiderman@comic.com",
null,
"spidergirl@comic.com"))
.addProperty(createPrimitiveCollection("CollPropertyBoolean", true, null, false)) .addProperty(createPrimitiveCollection("CollPropertyBoolean", true, null, false))
.addProperty(createPrimitiveCollection("CollPropertyByte", 50, 0, 249)) .addProperty(createPrimitiveCollection("CollPropertyByte", 50, null, 249))
.addProperty(createPrimitiveCollection("CollPropertySByte", -120, 0, 126)) .addProperty(createPrimitiveCollection("CollPropertySByte", -120, null, 126))
.addProperty(createPrimitiveCollection("CollPropertyInt16", 1000, 0, 30112)) .addProperty(createPrimitiveCollection("CollPropertyInt16", 1000, null, 30112))
.addProperty(createPrimitiveCollection("CollPropertyInt32", 23232323, 0, 10000001)) .addProperty(createPrimitiveCollection("CollPropertyInt32", 23232323, null, 10000001))
.addProperty(createPrimitiveCollection("CollPropertyInt64", 929292929292L, 0L, 444444444444L)) .addProperty(createPrimitiveCollection("CollPropertyInt64", 929292929292L, null, 444444444444L))
.addProperty(createPrimitiveCollection("CollPropertySingle", 1790, 0, 3210)) .addProperty(createPrimitiveCollection("CollPropertySingle", 1790, null, 3210))
.addProperty(createPrimitiveCollection("CollPropertyDouble", -17900, 0, 3210)) .addProperty(createPrimitiveCollection("CollPropertyDouble", -17900, null, 3210))
.addProperty(createPrimitiveCollection("CollPropertyDecimal", 12, 0, 1234)) .addProperty(createPrimitiveCollection("CollPropertyDecimal", 12, null, 1234))
.addProperty(createPrimitiveCollection("CollPropertyBinary", .addProperty(createPrimitiveCollection("CollPropertyBinary",
new byte[] { -85, -51, -17 }, new byte[] { -85, -51, -17 },
new byte[0], null,
new byte[] { 84, 103, -119 } )) new byte[] { 84, 103, -119 } ))
.addProperty(createPrimitiveCollection("CollPropertyDate", .addProperty(createPrimitiveCollection("CollPropertyDate",
getDateTime(1958, 12, 3, 0, 0, 0), getDateTime(1958, 12, 3, 0, 0, 0),
@ -387,13 +390,17 @@ public class DataCreator {
getDateTime(2015, 8, 12, 3, 8, 34), getDateTime(2015, 8, 12, 3, 8, 34),
null, null,
getDateTime(1948, 2, 17, 9, 9, 9))) getDateTime(1948, 2, 17, 9, 9, 9)))
.addProperty(createPrimitiveCollection("CollPropertyDuration",
getDurration(0, 0, 0, 13),
null,
getDurration(0, 1, 0, 0)))
.addProperty(createPrimitiveCollection("CollPropertyGuid", .addProperty(createPrimitiveCollection("CollPropertyGuid",
UUID.fromString("ffffff67-89ab-cdef-0123-456789aaaaaa"), UUID.fromString("ffffff67-89ab-cdef-0123-456789aaaaaa"),
null, null,
UUID.fromString("cccccc67-89ab-cdef-0123-456789cccccc"))) UUID.fromString("cccccc67-89ab-cdef-0123-456789cccccc")))
.addProperty(createPrimitiveCollection("CollPropertyTimeOfDay", .addProperty(createPrimitiveCollection("CollPropertyTimeOfDay",
getTime(4, 14, 13), getTime(4, 14, 13),
getTime(0, 0, 0), null,
getTime(0, 37, 13)) getTime(0, 37, 13))
)); ));

View File

@ -353,7 +353,7 @@ public class ODataJsonSerializerTest {
} }
@Test @Test
public void primitiveBooleanCollectionWithNull() throws Exception { public void primitiveValuesAllNull() throws Exception {
final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllNullable"); final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllNullable");
final EntityCollection entitySet = data.readAll(edmEntitySet); final EntityCollection entitySet = data.readAll(edmEntitySet);
final String resultString = IOUtils.toString(serializer.entityCollection(metadata, final String resultString = IOUtils.toString(serializer.entityCollection(metadata,
@ -362,18 +362,20 @@ public class ODataJsonSerializerTest {
.contextURL(ContextURL.with().entitySet(edmEntitySet).build()).build()).getContent()); .contextURL(ContextURL.with().entitySet(edmEntitySet).build()).build()).getContent());
final String expected = "{\"@odata.context\":\"$metadata#ESAllNullable\",\"value\":[{\"PropertyKey\":1," final String expected = "{\"@odata.context\":\"$metadata#ESAllNullable\",\"value\":[{\"PropertyKey\":1,"
+ "\"PropertyInt16\":0,\"PropertyString\":\"\",\"PropertyBoolean\":null,\"PropertyByte\":0,\"PropertySByte\":0," + "\"PropertyInt16\":null,\"PropertyString\":null,\"PropertyBoolean\":null,\"PropertyByte\":null,"
+ "\"PropertyInt32\":0,\"PropertyInt64\":0,\"PropertySingle\":0,\"PropertyDouble\":0,\"PropertyDecimal\":0," + "\"PropertySByte\":null,\"PropertyInt32\":null,\"PropertyInt64\":null,\"PropertySingle\":null,"
+ "\"PropertyBinary\":\"\",\"PropertyDate\":null,\"PropertyDateTimeOffset\":null,\"PropertyDuration\":\"PT0S\"," + "\"PropertyDouble\":null,\"PropertyDecimal\":null,\"PropertyBinary\":null,\"PropertyDate\":null,"
+ "\"PropertyGuid\":null,\"PropertyTimeOfDay\":\"00:00:00\",\"CollPropertyString\":[\"spiderman@comic.com\",\"\"," + "\"PropertyDateTimeOffset\":null,\"PropertyDuration\":null,\"PropertyGuid\":null,\"PropertyTimeOfDay\":null,"
+ "\"spidergirl@comic.com\"],\"CollPropertyBoolean\":[true,null,false],\"CollPropertyByte\":[50,0,249]," + "\"CollPropertyString\":[\"spiderman@comic.com\",null,\"spidergirl@comic.com\"],"
+ "\"CollPropertySByte\":[-120,0,126],\"CollPropertyInt16\":[1000,0,30112],\"CollPropertyInt32\":" + "\"CollPropertyBoolean\":[true,null,false],\"CollPropertyByte\":[50,null,249],"
+ "[23232323,0,10000001],\"CollPropertyInt64\":[929292929292,0,444444444444],\"CollPropertySingle\":" + "\"CollPropertySByte\":[-120,null,126],\"CollPropertyInt16\":[1000,null,30112],"
+ "[1790,0,3210],\"CollPropertyDouble\":[-17900,0,3210],\"CollPropertyDecimal\":[12,0,1234]," + "\"CollPropertyInt32\":[23232323,null,10000001],\"CollPropertyInt64\":[929292929292,null,444444444444],"
+ "\"CollPropertyBinary\":[\"q83v\",\"\",\"VGeJ\"],\"CollPropertyDate\":[\"1958-12-03\",null,\"2013-06-25\"]," + "\"CollPropertySingle\":[1790,null,3210],\"CollPropertyDouble\":[-17900,null,3210],\"CollPropertyDecimal\":"
+ "\"CollPropertyDateTimeOffset\":[\"2015-08-12T03:08:34Z\",null,\"1948-02-17T09:09:09Z\"]," + "[12,null,1234],\"CollPropertyBinary\":[\"q83v\",null,\"VGeJ\"],\"CollPropertyDate\":"
+ "\"CollPropertyDuration\":null,\"CollPropertyGuid\":[\"ffffff67-89ab-cdef-0123-456789aaaaaa\",null," + "[\"1958-12-03\",null,\"2013-06-25\"],\"CollPropertyDateTimeOffset\":[\"2015-08-12T03:08:34Z\",null,"
+ "\"cccccc67-89ab-cdef-0123-456789cccccc\"],\"CollPropertyTimeOfDay\":[\"04:14:13\",\"00:00:00\",\"00:37:13\"]}]}"; + "\"1948-02-17T09:09:09Z\"],\"CollPropertyDuration\":[\"PT13S\",null,\"PT1H0S\"],\"CollPropertyGuid\":"
+ "[\"ffffff67-89ab-cdef-0123-456789aaaaaa\",null,\"cccccc67-89ab-cdef-0123-456789cccccc\"],"
+ "\"CollPropertyTimeOfDay\":[\"04:14:13\",null,\"00:37:13\"]}]}";
Assert.assertEquals(expected, resultString); Assert.assertEquals(expected, resultString);
} }