[OLINGO-255] fixed

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

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 15abea36ed0b9f74d5d6b3c0c7a68b9717566642
Parents: 2541c88
Author: Stephan Klevenz <[email protected]>
Authored: Fri Apr 25 10:21:48 2014 +0200
Committer: Stephan Klevenz <[email protected]>
Committed: Fri Apr 25 10:21:48 2014 +0200

----------------------------------------------------------------------
 .../processor/core/util/ClassHelperTest.java    |  2 +-
 .../core/ep/consumer/JsonEntryConsumer.java     |  5 ++-
 .../core/ep/consumer/JsonFeedConsumer.java      |  3 +-
 .../consumer/JsonEntryDeepInsertEntryTest.java  | 16 +++++++
 .../resources/JsonInlineRoomWithInlineNull.json | 44 ++++++++++++++++++++
 5 files changed, 67 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/15abea36/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
 
b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
index 3a1aba0..4da0960 100644
--- 
a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
+++ 
b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
@@ -96,7 +96,7 @@ public class ClassHelperTest {
   //
 
   @EdmEntityType
-  @SuppressWarnings("unused")
+//  @SuppressWarnings("unused")
   private class SimpleEntity {
     @EdmKey
     @EdmProperty

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/15abea36/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
index 5bae8e7..1a6bca2 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
@@ -280,7 +280,8 @@ public class JsonEntryConsumer {
       throw new 
EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT.addContent(navigationPropertyName));
     }
 
-    if (reader.peek() == JsonToken.BEGIN_OBJECT) {
+    JsonToken peek = reader.peek();
+    if (peek == JsonToken.BEGIN_OBJECT) {
       reader.beginObject();
       String name = reader.nextName();
       if (FormatJson.DEFERRED.equals(name)) {
@@ -342,6 +343,8 @@ public class JsonEntryConsumer {
         }
       }
       reader.endObject();
+    } else if (peek == JsonToken.NULL) {
+      reader.nextNull();
     } else {
       final EdmNavigationProperty navigationProperty =
           (EdmNavigationProperty) 
eia.getEntityType().getProperty(navigationPropertyName);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/15abea36/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumer.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumer.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumer.java
index f607286..04edbdc 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumer.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonFeedConsumer.java
@@ -82,7 +82,8 @@ public class JsonFeedConsumer {
   }
 
   private void readFeed() throws IOException, EdmException, 
EntityProviderException {
-    if (reader.peek() == JsonToken.BEGIN_ARRAY) {
+    JsonToken peek = reader.peek();
+    if (peek == JsonToken.BEGIN_ARRAY) {
       readArrayContent();
     } else {
       reader.beginObject();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/15abea36/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
index 4919d99..1a057af 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
@@ -51,6 +51,7 @@ public class JsonEntryDeepInsertEntryTest extends 
AbstractConsumerTest {
 
   private static final String EMPLOYEE_WITH_INLINE_TEAM = 
"JsonEmployeeWithInlineTeam.json";
   private static final String INLINE_ROOM_WITH_INLINE_BUILDING = 
"JsonInlineRoomWithInlineBuilding.json";
+  private static final String INLINE_ROOM_WITH_INLINE_NULL = 
"JsonInlineRoomWithInlineNull.json";
 
   @Test
   public void innerEntryNoMediaResourceWithoutCallback() throws Exception {
@@ -266,6 +267,21 @@ public class JsonEntryDeepInsertEntryTest extends 
AbstractConsumerTest {
     
assertEquals("http://localhost:8080/ReferenceScenario.svc/Buildings('1')/nb_Rooms",
 associationUris.get(0));
   }
 
+  @Test
+  public void inlineRoomWithInlineNullWithCallbacks() throws Exception {
+    EntryCallback buildingCallback = new EntryCallback();
+    EntryCallback roomCallback = new EntryCallback(buildingCallback);
+    EntityProviderReadProperties readProperties =
+        
EntityProviderReadProperties.init().mergeSemantic(false).callback(roomCallback).build();
+    ODataEntry outerEntry = 
prepareAndExecuteEntry(INLINE_ROOM_WITH_INLINE_NULL, "Employees", 
readProperties);
+
+    ODataEntry innerRoom = (ODataEntry) 
outerEntry.getProperties().get("ne_Room");
+    assertNull(innerRoom);
+
+    innerRoom = roomCallback.getEntry();
+    assertNull(innerRoom);
+  }
+
   private class EntryCallback implements OnReadInlineContent {
     private ODataEntry entry;
     private EntryCallback innerCallback;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/15abea36/odata2-lib/odata-core/src/test/resources/JsonInlineRoomWithInlineNull.json
----------------------------------------------------------------------
diff --git 
a/odata2-lib/odata-core/src/test/resources/JsonInlineRoomWithInlineNull.json 
b/odata2-lib/odata-core/src/test/resources/JsonInlineRoomWithInlineNull.json
new file mode 100644
index 0000000..a4b8c5e
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/JsonInlineRoomWithInlineNull.json
@@ -0,0 +1,44 @@
+{
+       "d" : {
+               "__metadata" : {
+                       "id" : 
"http://localhost:8080/ReferenceScenario.svc/Employees('1')",
+                       "uri" : 
"http://localhost:8080/ReferenceScenario.svc/Employees('1')",
+                       "type" : "RefScenario.Employee",
+                       "content_type" : "image/jpeg",
+                       "media_src" : "Employees('1')/$value",
+                       "edit_media" : 
"http://localhost:8080/ReferenceScenario.svc/Employees('1')/$value"
+               },
+               "EmployeeId" : "1",
+               "EmployeeName" : "Walter Winter",
+               "ManagerId" : "1",
+               "RoomId" : "1",
+               "TeamId" : "1",
+               "Location" : {
+                       "__metadata" : {
+                               "type" : "RefScenario.c_Location"
+                       },
+                       "City" : {
+                               "__metadata" : {
+                                       "type" : "RefScenario.c_City"
+                               },
+                               "PostalCode" : "69124",
+                               "CityName" : "Heidelberg"
+                       },
+                       "Country" : "Germany"
+               },
+               "Age" : 52,
+               "EntryDate" : "\/Date(915148800000)\/",
+               "ImageUrl" : "Employees('1')/$value",
+               "ne_Manager" : {
+                       "__deferred" : {
+                               "uri" : 
"http://localhost:8080/ReferenceScenario.svc/Employees('1')/ne_Manager"
+                       }
+               },
+               "ne_Team" : {
+                       "__deferred" : {
+                               "uri" : 
"http://localhost:8080/ReferenceScenario.svc/Employees('1')/ne_Team"
+                       }
+               },
+               "ne_Room" : null
+       }
+}

Reply via email to