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); }