Repository: olingo-odata4
Updated Branches:
  refs/heads/master d1ef643c9 -> aea44a33a


[OLINGO-1126]ClientProperty hasNullValue incorrect for null complex values


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

Branch: refs/heads/master
Commit: aea44a33a09b68d588e1c5908be9a44e423407ec
Parents: d1ef643
Author: ramya vasanth <ramya.vasa...@sap.com>
Authored: Fri Jun 9 12:57:54 2017 +0530
Committer: ramya vasanth <ramya.vasa...@sap.com>
Committed: Fri Jun 9 12:57:54 2017 +0530

----------------------------------------------------------------------
 .../java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java | 7 ++-----
 .../apache/olingo/client/core/domain/ClientPropertyImpl.java  | 3 ++-
 .../apache/olingo/client/core/domain/ClientValuableImpl.java  | 2 +-
 .../olingo/client/core/serialization/ODataBinderImpl.java     | 1 -
 4 files changed, 5 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/aea44a33/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
----------------------------------------------------------------------
diff --git 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index cbccb00..63a0d0e 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
@@ -1519,7 +1519,7 @@ public class BasicITCase extends 
AbstractParamTecSvcITCase {
     assertNotNull(entity.getProperty(PROPERTY_COMP).getComplexValue());
     assertEquals("olingo.odata.test1.CTAllPrim", 
entity.getProperty(PROPERTY_COMP).getComplexValue().getTypeName());
     assertEquals(PROPERTY_COMP, entity.getProperty(PROPERTY_COMP).getName());
-    
assertNull(entity.getProperty(PROPERTY_COMP).getComplexValue().get(PROPERTY_COMP).getComplexValue());
+    assertTrue(entity.getProperty(PROPERTY_COMP).hasNullValue());
   }
   
   @Test
@@ -1540,7 +1540,7 @@ public class BasicITCase extends 
AbstractParamTecSvcITCase {
     ClientEntity entity = odataClient.getReader().readEntity(input, 
ContentType.JSON);
     assertEquals("olingo.odata.test1.CTAllPrim", 
entity.getProperty(PROPERTY_COMP).getComplexValue().getTypeName());
     assertEquals(PROPERTY_COMP, entity.getProperty(PROPERTY_COMP).getName());
-    
assertTrue(entity.getProperty(PROPERTY_COMP).getComplexValue().asJavaMap().size()
 == 0);
+    assertTrue(entity.getProperty(PROPERTY_COMP).hasNullValue());
   }
   
   @SuppressWarnings("unchecked")
@@ -1565,7 +1565,6 @@ public class BasicITCase extends 
AbstractParamTecSvcITCase {
     Map<String, Object> map = 
entity.getProperty(PROPERTY_COMP).getComplexValue().asJavaMap();
     assertEquals(map.size(), 2);
     assertEquals(((Map<String, Object>)map.get(PROPERTY_COMP)).size(), 16);
-    
assertNull(entity.getProperty(PROPERTY_COMP_NAV).getComplexValue().get(PROPERTY_COMP_NAV).getComplexValue());
     assertEquals("Collection(olingo.odata.test1.CTPrimComp)", 
entity.getProperty(COL_PROPERTY_COMP).
         getCollectionValue().getTypeName());
     assertEquals(0, 
entity.getProperty(COL_PROPERTY_COMP).getCollectionValue().size());
@@ -1573,8 +1572,6 @@ public class BasicITCase extends 
AbstractParamTecSvcITCase {
         getComplexValue().getTypeName());
     assertEquals("olingo.odata.test1.CTTwoPrim", 
entity.getProperty(PROPERTY_COMP_TWO_PRIM).
         getComplexValue().getTypeName());
-    assertNull(entity.getProperty(PROPERTY_COMP_TWO_PRIM).getComplexValue().
-        get(PROPERTY_COMP_TWO_PRIM).getComplexValue());
   }
   
   @Test

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/aea44a33/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientPropertyImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientPropertyImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientPropertyImpl.java
index d9aa892..a8447a9 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientPropertyImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientPropertyImpl.java
@@ -77,7 +77,8 @@ public final class ClientPropertyImpl extends 
ClientValuableImpl implements Clie
    */
   @Override
   public boolean hasNullValue() {
-    return value == null || value.isPrimitive() && 
value.asPrimitive().toValue() == null;
+    return value == null || value.isPrimitive() && 
value.asPrimitive().toValue() == null
+        || value.isComplex() && value.asComplex().asJavaMap().size() == 0;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/aea44a33/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientValuableImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientValuableImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientValuableImpl.java
index d2f1a3a..0021a21 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientValuableImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/domain/ClientValuableImpl.java
@@ -65,7 +65,7 @@ public class ClientValuableImpl implements ClientValuable {
 
   @Override
   public boolean hasComplexValue() {
-    return !hasNullValue() && value.isComplex();
+    return value != null && value.isComplex();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/aea44a33/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
index deb58fa..c2080fa 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
@@ -891,7 +891,6 @@ public class ODataBinderImpl implements ODataBinder {
         }
         if (edm != null && edm.getComplexType(type) != null) {
           ClientComplexValue cValue = 
client.getObjectFactory().newComplexValue(type.toString());
-          cValue.add(new ClientPropertyImpl(((Property)valuable).getName(), 
null));
           value = cValue;
           } else {
             if (type != null && 
!EdmPrimitiveTypeKind.String.getFullQualifiedName().equals(type)

Reply via email to