[OLINGO-1365]Child entities not serialized if parent has no property
diff --git a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
index b727538..fec92c8 100644
--- a/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
+++ b/odata2-lib/odata-client-core/src/main/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializer.java
@@ -92,7 +92,7 @@
       } 
       writeProperties(entityInfo, data.getProperties(), type, containsMetadata);
 
-      writeNavigationProperties(writer, entityInfo, data.getNavigations(), type);
+      writeNavigationProperties(writer, entityInfo, data.getNavigations(), type, data.getProperties().isEmpty());
       jsonStreamWriter.endObject();
       
       writer.flush();
@@ -107,7 +107,7 @@
 
   private void writeNavigationProperties(final Writer writer, final EntityInfoAggregator entityInfo,
       final Map<String, Object> data,
-      final EdmEntityType type) throws EdmException, EntityProviderException, IOException {
+      final EdmEntityType type, boolean emptyData) throws EdmException, EntityProviderException, IOException {
     for (final String navigationPropertyName : type.getNavigationPropertyNames()) {
       if (data.containsKey(navigationPropertyName)) {
         if (data.get(navigationPropertyName) == null) {
@@ -115,7 +115,10 @@
         }
         if (data.get(navigationPropertyName) instanceof Entity || 
             data.get(navigationPropertyName) instanceof EntityCollection) {
-          jsonStreamWriter.separator();
+          if( !emptyData){
+            jsonStreamWriter.separator();
+          }
+          emptyData=false;
           jsonStreamWriter.name(navigationPropertyName);
           writeExpandedNavigationProperty(writer, entityInfo, data, type, navigationPropertyName);
         } else if (data.get(navigationPropertyName) instanceof Map<?,?>){
@@ -157,8 +160,7 @@
       if(inlineData == null){
         throw new EntityProviderException(EntityProviderException.NULL_VALUE);
       }
-      if (inlineData != null && inlineData.getProperties() != null && 
-          !inlineData.getProperties().isEmpty()) {
+      if (inlineData != null && inlineData.getProperties() != null) {
         final EntitySerializerProperties inlineProperties = inlineData.getWriteProperties() == null ?
             EntitySerializerProperties.
             serviceRoot(properties.getServiceRoot()).build() : inlineData.getWriteProperties();
diff --git a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
index e3e06f0..69524a4 100644
--- a/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
+++ b/odata2-lib/odata-client-core/src/test/java/org/apache/olingo/odata2/client/core/ep/serializer/JsonEntryEntitySerializerTest.java
@@ -739,6 +739,51 @@
     assertNotNull(json);
     assertEquals("{\"Id\":\"1\",\"Version\":1,\"nr_Building\":{\"Id\":\"1\",\"Name\":\"Building1\"}}", json);
   }
+  
+  @Test
+  public void unbalancedPropertyEntryWithMultipleInlineEntry() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    Entity roomData = new Entity();
+    roomData.addProperty("Id", "1");
+    roomData.addProperty("Version", 1);
+    
+    Entity nrBuildingData = new Entity();
+    EntityCollection roomsCollection = new EntityCollection();
+    Entity nbRoomData = new Entity();
+    nbRoomData.addProperty("Id", "1");
+    nbRoomData.addProperty("Version", 1);
+    roomsCollection.addEntity(nbRoomData);
+    nrBuildingData.addNavigation("nb_Rooms", roomsCollection);
+    roomData.addNavigation("nr_Building", nrBuildingData);
+    
+    EntityCollection nrEmployeeCollection = new EntityCollection();
+    Entity employeeData = new Entity();
+    Entity managerData = new Entity();
+    managerData.addProperty("EmployeeId", "1");
+    managerData.addProperty("ImageUrl", "hhtp://url");
+    employeeData.addNavigation("ne_Manager", managerData);
+    Entity neRoomData = new Entity();
+    neRoomData.addProperty("Id", "1");
+    neRoomData.addProperty("Version", 1);
+    employeeData.addNavigation("ne_Room", neRoomData);
+    nrEmployeeCollection.addEntity(employeeData);
+    nrEmployeeCollection.addEntity(managerData);
+    roomData.addNavigation("nr_Employees", nrEmployeeCollection);
+    
+    final ODataResponse response =
+        new JsonSerializerDeserializer().writeEntry(entitySet, roomData);
+    assertNotNull(response);
+    assertNotNull(response.getEntity());
+    assertNull("EntitypProvider must not set content header", response.getContentHeader());
+
+    final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+    assertNotNull(json);
+    assertEquals("{\"Id\":\"1\",\"Version\":1,\"nr_Employees\":[{" +
+        "\"ne_Manager\":{\"EmployeeId\":\"1\"},\"ne_Room\":{\"Id\":\"1\",\"Version\":1}},"+
+        "{\"EmployeeId\":\"1\",\"ImageUrl\":\"hhtp://url\"}],"+
+        "\"nr_Building\":{\"nb_Rooms\":[{\"Id\":\"1\",\"Version\":1}]}}", json);
+  }
+  
   @Test
   public void entryWithEmptyInlineEntry() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");