Repository: olingo-odata4
Updated Branches:
  refs/heads/master 8b4947b86 -> 4768048fb


[OLINGO-590] Fix: Single value navigation properties with null values will be 
correctly deserialized


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/f6fa1eec
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/f6fa1eec
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/f6fa1eec

Branch: refs/heads/master
Commit: f6fa1eeca738e744375357a5fd223534ba1d17e7
Parents: 8b4947b
Author: Christian Holzer <[email protected]>
Authored: Wed Mar 11 17:19:42 2015 +0100
Committer: Christian Holzer <[email protected]>
Committed: Thu Mar 12 16:52:19 2015 +0100

----------------------------------------------------------------------
 .../json/ODataJsonDeserializer.java             |  3 ++-
 .../json/ODataDeserializerDeepInsertTest.java   | 20 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f6fa1eec/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
----------------------------------------------------------------------
diff --git 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
index 492c586..6892aff 100644
--- 
a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
+++ 
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
@@ -250,7 +250,8 @@ public class ODataJsonDeserializer implements 
ODataDeserializer {
           EntitySetImpl inlineEntitySet = new EntitySetImpl();
           
inlineEntitySet.getEntities().addAll(consumeEntitySetArray(edmNavigationProperty.getType(),
 jsonNode));
           link.setInlineEntitySet(inlineEntitySet);
-        } else if (!jsonNode.isArray() && !jsonNode.isValueNode() && 
!edmNavigationProperty.isCollection()) {
+        } else if (!jsonNode.isArray() && (!jsonNode.isValueNode() || 
jsonNode.isNull()) 
+            && !edmNavigationProperty.isCollection()) {
           link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
           if (!jsonNode.isNull()) {
             Entity inlineEntity = 
consumeEntityNode(edmNavigationProperty.getType(), (ObjectNode) jsonNode);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f6fa1eec/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataDeserializerDeepInsertTest.java
----------------------------------------------------------------------
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataDeserializerDeepInsertTest.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataDeserializerDeepInsertTest.java
index 417e371..f2a65cd 100644
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataDeserializerDeepInsertTest.java
+++ 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataDeserializerDeepInsertTest.java
@@ -121,7 +121,25 @@ public class ODataDeserializerDeepInsertTest extends 
AbstractODataDeserializerTe
       throw e;
     }
   }
-
+  
+  @Test
+  public void expandedToOneValidNullValue() throws Exception {
+    String entityString =
+        "{\"PropertyInt16\":32767,"
+            + "\"NavPropertyETAllPrimOne\":null"
+            + "}";
+    InputStream stream = new ByteArrayInputStream(entityString.getBytes());
+    EdmEntityType edmEntityType = edm.getEntityType(new 
FullQualifiedName("Namespace1_Alias", "ETTwoPrim"));
+    final Entity entity = 
OData.newInstance().createDeserializer(ODataFormat.JSON).entity(stream, 
edmEntityType);
+  
+    assertEquals(1, entity.getNavigationLinks().size());
+    final Link link = entity.getNavigationLinks().get(0);
+    
+    assertEquals("NavPropertyETAllPrimOne", link.getTitle());
+    assertNull(link.getInlineEntity());
+    assertNull(link.getInlineEntitySet());
+  }
+  
   @Test(expected = DeserializerException.class)
   public void expandedToOneInvalidStringValue() throws Exception {
     String entityString =

Reply via email to