Fix the error in removing a bin value while updating in aerospike module

Project: http://git-wip-us.apache.org/repos/asf/gora/repo
Commit: http://git-wip-us.apache.org/repos/asf/gora/commit/31af406e
Tree: http://git-wip-us.apache.org/repos/asf/gora/tree/31af406e
Diff: http://git-wip-us.apache.org/repos/asf/gora/diff/31af406e

Branch: refs/heads/master
Commit: 31af406eb992beebcb8c0f6908df8031ef179aeb
Parents: 18c6426
Author: nishadi <ndime...@gmail.com>
Authored: Mon Aug 21 20:55:46 2017 +0530
Committer: nishadi <ndime...@gmail.com>
Committed: Mon Aug 21 20:55:46 2017 +0530

----------------------------------------------------------------------
 .../gora/aerospike/store/AerospikeStore.java    | 39 ++++++++------------
 1 file changed, 16 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/gora/blob/31af406e/gora-aerospike/src/main/java/org/apache/gora/aerospike/store/AerospikeStore.java
----------------------------------------------------------------------
diff --git 
a/gora-aerospike/src/main/java/org/apache/gora/aerospike/store/AerospikeStore.java
 
b/gora-aerospike/src/main/java/org/apache/gora/aerospike/store/AerospikeStore.java
index 677302d..53545f1 100644
--- 
a/gora-aerospike/src/main/java/org/apache/gora/aerospike/store/AerospikeStore.java
+++ 
b/gora-aerospike/src/main/java/org/apache/gora/aerospike/store/AerospikeStore.java
@@ -187,37 +187,30 @@ public class AerospikeStore<K, T extends PersistentBase> 
extends DataStoreBase<K
 
     List<Field> fields = persistent.getSchema().getFields();
 
-    // Delete the record, if the record exists and a field has been removed
-    for (int i = 0; i < fields.size(); i++) {
-      if (persistent.isDirty(i)) {
-        Object persistentValue = persistent.get(i);
-        if (persistentValue == null && aerospikeClient.exists(null, 
recordKey)) {
-          this.delete(key);
-        }
-      }
-    }
-
     for (int i = 0; i < fields.size(); i++) {
       if (!persistent.isDirty(i)) {
         continue;
       }
       Object persistentValue = persistent.get(i);
+
+      String mappingBinName = 
aerospikeParameters.getAerospikeMapping().getBinMapping()
+              .get(fields.get(i).name());
+      if (mappingBinName == null) {
+        LOG.error("Aerospike mapping for field {}#{} not found. Wrong 
gora-aerospike-mapping.xml?",
+                persistent.getClass().getName(), fields.get(i).name());
+        throw new RuntimeException(
+                "Aerospike mapping for field [" + 
persistent.getClass().getName() + "#" + fields
+                        .get(i).name() + "] not found. Wrong 
gora-aerospike-mapping.xml?");
+      }
+      Bin bin;
       if (persistentValue != null) {
-        String mappingBinName = 
aerospikeParameters.getAerospikeMapping().getBinMapping()
-                .get(fields.get(i).name());
-        if (mappingBinName == null) {
-          LOG.error(
-                  "Aerospike mapping for field {}#{} not found. Wrong 
gora-aerospike-mapping.xml?",
-                  persistent.getClass().getName(), fields.get(i).name());
-          throw new RuntimeException(
-                  "Aerospike mapping for field [" + 
persistent.getClass().getName() + "#" + fields
-                          .get(i).name() + "] not found. Wrong 
gora-aerospike-mapping.xml?");
-        }
-        Bin bin = new Bin(mappingBinName,
+        bin = new Bin(mappingBinName,
                 getSerializableValue(persistentValue, fields.get(i).schema()));
-        aerospikeClient
-                
.put(aerospikeParameters.getAerospikeMapping().getWritePolicy(), recordKey, 
bin);
+      } else {
+        bin = Bin.asNull(mappingBinName);
       }
+      aerospikeClient
+              .put(aerospikeParameters.getAerospikeMapping().getWritePolicy(), 
recordKey, bin);
     }
   }
 

Reply via email to