Repository: ignite
Updated Branches:
  refs/heads/ignite-gg-14206 dd290c972 -> 3ab353367


IGNITE-6500 Fix for POJO fields of java wrapper type are not retaining null 
values from Cassandra persistent store, while using ignite's 
CassandraCacheStoreFactory - Fixes #4014.

Signed-off-by: Dmitriy Pavlov <dpav...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1858acff
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1858acff
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1858acff

Branch: refs/heads/ignite-gg-14206
Commit: 1858acff7646c7aad61e8bbcd84039bb2d5a2db3
Parents: 49315c8
Author: Unknown <yashasvi.kotamr...@netcracker.com>
Authored: Mon Sep 24 18:30:08 2018 +0300
Committer: Dmitriy Pavlov <dpav...@apache.org>
Committed: Mon Sep 24 18:30:08 2018 +0300

----------------------------------------------------------------------
 .../cassandra/common/PropertyMappingHelper.java | 66 ++++++++++++++++++--
 1 file changed, 60 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/1858acff/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java
----------------------------------------------------------------------
diff --git 
a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java
 
b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java
index ed9f054..ea3974f 100644
--- 
a/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java
+++ 
b/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/common/PropertyMappingHelper.java
@@ -125,23 +125,77 @@ public class PropertyMappingHelper {
         if (String.class.equals(clazz))
             return row.getString(col);
 
-        if (Integer.class.equals(clazz) || int.class.equals(clazz))
+        if (Integer.class.equals(clazz))
+            return row.isNull(col) ? null : row.getInt(col);
+
+        if (int.class.equals(clazz)) {
+            if (row.isNull(col)) {
+                throw new IllegalArgumentException("Can't cast null value from 
Cassandra table column '" + col +
+                        "' to " + "int value used in domain object model");
+            }
+
             return row.getInt(col);
+        }
+
+        if (Short.class.equals(clazz))
+            return row.isNull(col) ? null : row.getShort(col);
+
+        if (short.class.equals(clazz)) {
+            if (row.isNull(col)) {
+                throw new IllegalArgumentException("Can't cast null value from 
Cassandra table column '" + col +
+                        "' to " + "short value used in domain object model");
+            }
 
-        if (Short.class.equals(clazz) || short.class.equals(clazz))
             return row.getShort(col);
+        }
+
+        if (Long.class.equals(clazz))
+            return row.isNull(col) ? null : row.getLong(col);
+
+        if (long.class.equals(clazz)) {
+            if (row.isNull(col)) {
+                throw new IllegalArgumentException("Can't cast null value from 
Cassandra table column '" + col +
+                        "' to " + "long value used in domain object model");
+            }
 
-        if (Long.class.equals(clazz) || long.class.equals(clazz))
             return row.getLong(col);
+        }
+
+        if (Double.class.equals(clazz))
+            return row.isNull(col) ? null : row.getDouble(col);
+
+        if (double.class.equals(clazz)) {
+            if (row.isNull(col)) {
+                throw new IllegalArgumentException("Can't cast null value from 
Cassandra table column '" + col +
+                        "' to " + "double value used in domain object model");
+            }
 
-        if (Double.class.equals(clazz) || double.class.equals(clazz))
             return row.getDouble(col);
+        }
+
+        if (Boolean.class.equals(clazz))
+            return row.isNull(col) ? null : row.getBool(col);
+
+        if (boolean.class.equals(clazz)) {
+            if (row.isNull(col)) {
+                throw new IllegalArgumentException("Can't cast null value from 
Cassandra table column '" + col +
+                        "' to " + "boolean value used in domain object model");
+            }
 
-        if (Boolean.class.equals(clazz) || boolean.class.equals(clazz))
             return row.getBool(col);
+        }
+
+        if (Float.class.equals(clazz))
+            return row.isNull(col) ? null : row.getFloat(col);
+
+        if (float.class.equals(clazz)) {
+            if (row.isNull(col)) {
+                throw new IllegalArgumentException("Can't cast null value from 
Cassandra table column '" + col +
+                        "' to " + "float value used in domain object model");
+            }
 
-        if (Float.class.equals(clazz) || float.class.equals(clazz))
             return row.getFloat(col);
+        }
 
         if (ByteBuffer.class.equals(clazz))
             return row.getBytes(col);

Reply via email to