From cb33db43d3e9190a8fcefeab6137ae8014581343 Mon Sep 17 00:00:00 2001 From: Sergey Tolstov Date: Fri, 23 Sep 2016 12:46:08 -0700 Subject: [PATCH 1/2] don't use JSONObject.getNames --- .../core/geometry/JSONObjectEnumerator.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java b/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java index 7b8f2e8b..fa1a278a 100644 --- a/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java +++ b/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java @@ -23,18 +23,17 @@ */ package com.esri.core.geometry; -import java.util.ArrayList; -import org.codehaus.jackson.JsonParser; -import org.codehaus.jackson.JsonToken; -import org.json.JSONArray; import org.json.JSONObject; +import java.util.Iterator; + final class JSONObjectEnumerator { private JSONObject m_jsonObject; private boolean m_bStarted; private int m_currentIndex; - private String[] m_keys; + private Iterator m_keys_iter; + private String m_current_key; JSONObjectEnumerator(JSONObject jsonObject) { m_bStarted = false; @@ -51,7 +50,7 @@ String getCurrentKey() { throw new GeometryException("invalid call"); } - return m_keys[m_currentIndex]; + return m_current_key; } Object getCurrentObject() { @@ -63,15 +62,23 @@ Object getCurrentObject() { throw new GeometryException("invalid call"); } - return m_jsonObject.opt(m_keys[m_currentIndex]); + return m_jsonObject.opt(m_current_key); } boolean next() { if (!m_bStarted) { m_currentIndex = 0; - m_keys = JSONObject.getNames(m_jsonObject); + m_keys_iter = m_jsonObject.keys(); m_bStarted = true; + if (m_keys_iter.hasNext()) { + m_current_key = (String)m_keys_iter.next(); + } + } else if (m_currentIndex != m_jsonObject.length()) { + if (m_keys_iter.hasNext()) { + m_current_key = (String)m_keys_iter.next(); + } + m_currentIndex++; } From 0b58f1df25be5851173932a386f6d7b648b64220 Mon Sep 17 00:00:00 2001 From: Sergey Tolstov Date: Tue, 27 Sep 2016 11:57:56 -0700 Subject: [PATCH 2/2] cleanup --- .../core/geometry/JSONObjectEnumerator.java | 43 ++++++++----------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java b/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java index fa1a278a..2b4e25b4 100644 --- a/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java +++ b/src/main/java/com/esri/core/geometry/JSONObjectEnumerator.java @@ -30,23 +30,17 @@ final class JSONObjectEnumerator { private JSONObject m_jsonObject; - private boolean m_bStarted; - private int m_currentIndex; + private int m_troolean; private Iterator m_keys_iter; private String m_current_key; JSONObjectEnumerator(JSONObject jsonObject) { - m_bStarted = false; - m_currentIndex = -1; + m_troolean = 0; m_jsonObject = jsonObject; } String getCurrentKey() { - if (!m_bStarted) { - throw new GeometryException("invalid call"); - } - - if (m_currentIndex == m_jsonObject.length()) { + if (m_troolean != 1) { throw new GeometryException("invalid call"); } @@ -54,11 +48,7 @@ String getCurrentKey() { } Object getCurrentObject() { - if (!m_bStarted) { - throw new GeometryException("invalid call"); - } - - if (m_currentIndex == m_jsonObject.length()) { + if (m_troolean != 1) { throw new GeometryException("invalid call"); } @@ -66,22 +56,25 @@ Object getCurrentObject() { } boolean next() { - if (!m_bStarted) { - m_currentIndex = 0; - m_keys_iter = m_jsonObject.keys(); - m_bStarted = true; - if (m_keys_iter.hasNext()) { - m_current_key = (String)m_keys_iter.next(); + if (m_troolean == 0) { + if (m_jsonObject.length() > 0) { + m_keys_iter = m_jsonObject.keys(); + m_troolean = 1;//started } - - } else if (m_currentIndex != m_jsonObject.length()) { + else { + m_troolean = -1;//stopped + } + } + + if (m_troolean == 1) {//still exploring if (m_keys_iter.hasNext()) { m_current_key = (String)m_keys_iter.next(); } - - m_currentIndex++; + else { + m_troolean = -1; //done + } } - return m_currentIndex != m_jsonObject.length(); + return m_troolean == 1; } }