NIFI-259: Fixed NullPointerException

Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/6af2d4a3
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/6af2d4a3
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/6af2d4a3

Branch: refs/heads/master
Commit: 6af2d4a342a2a578e764b9e5222f69f9c4405f4d
Parents: d6a2153
Author: Mark Payne <marka...@hotmail.com>
Authored: Tue Jan 19 14:01:45 2016 -0500
Committer: Mark Payne <marka...@hotmail.com>
Committed: Tue Jan 19 14:01:45 2016 -0500

----------------------------------------------------------------------
 .../nifi/controller/state/StateMapSerDe.java    | 17 +++++++++++++----
 .../zookeeper/ZooKeeperStateProvider.java       | 20 ++++++++++++++++----
 2 files changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/6af2d4a3/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/StateMapSerDe.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/StateMapSerDe.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/StateMapSerDe.java
index 5671f5a..06c13b4 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/StateMapSerDe.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/StateMapSerDe.java
@@ -50,8 +50,15 @@ public class StateMapSerDe implements SerDe<StateMapUpdate> {
         final Map<String, String> map = stateMap.toMap();
         out.writeInt(map.size());
         for (final Map.Entry<String, String> entry : map.entrySet()) {
-            out.writeUTF(entry.getKey());
-            out.writeUTF(entry.getValue());
+            final boolean hasKey = entry.getKey() != null;
+            final boolean hasValue = entry.getValue() != null;
+            if (hasKey) {
+                out.writeUTF(entry.getKey());
+            }
+
+            if (hasValue) {
+                out.writeUTF(entry.getValue());
+            }
         }
     }
 
@@ -73,8 +80,10 @@ public class StateMapSerDe implements SerDe<StateMapUpdate> {
         final int numEntries = in.readInt();
         final Map<String, String> stateValues = new HashMap<>(numEntries);
         for (int i = 0; i < numEntries; i++) {
-            final String key = in.readUTF();
-            final String value = in.readUTF();
+            final boolean hasKey = in.readBoolean();
+            final String key = hasKey ? in.readUTF() : null;
+            final boolean hasValue = in.readBoolean();
+            final String value = hasValue ? in.readUTF() : null;
             stateValues.put(key, value);
         }
 

http://git-wip-us.apache.org/repos/asf/nifi/blob/6af2d4a3/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java
index 984a229..173711d 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/state/providers/zookeeper/ZooKeeperStateProvider.java
@@ -254,8 +254,17 @@ public class ZooKeeperStateProvider extends 
AbstractStateProvider {
             dos.writeByte(ENCODING_VERSION);
             dos.writeInt(stateValues.size());
             for (final Map.Entry<String, String> entry : 
stateValues.entrySet()) {
-                dos.writeUTF(entry.getKey());
-                dos.writeUTF(entry.getValue());
+                final boolean hasKey = entry.getKey() != null;
+                final boolean hasValue = entry.getValue() != null;
+                dos.writeBoolean(hasKey);
+                if (hasKey) {
+                    dos.writeUTF(entry.getKey());
+                }
+
+                dos.writeBoolean(hasValue);
+                if (hasValue) {
+                    dos.writeUTF(entry.getValue());
+                }
             }
             return baos.toByteArray();
         }
@@ -276,8 +285,11 @@ public class ZooKeeperStateProvider extends 
AbstractStateProvider {
             final int numEntries = dis.readInt();
             final Map<String, String> stateValues = new HashMap<>(numEntries);
             for (int i = 0; i < numEntries; i++) {
-                final String key = dis.readUTF();
-                final String value = dis.readUTF();
+                final boolean hasKey = dis.readBoolean();
+                final String key = hasKey ? dis.readUTF() : null;
+
+                final boolean hasValue = dis.readBoolean();
+                final String value = hasValue ? dis.readUTF() : null;
                 stateValues.put(key, value);
             }
 

Reply via email to