From 0a06c65d7934354cb1ed9873a47159030049df68 Mon Sep 17 00:00:00 2001 From: salyh Date: Sat, 28 Jun 2014 23:22:37 +0200 Subject: [PATCH 3/3] isintegral does now throw ise, little renaming, cleanup of possibly unnecessary code Signed-off-by: salyh --- .../java/org/apache/fleece/core/JsonStreamParser.java | 18 ++++++++++++------ .../java/org/apache/fleece/core/JsonParserTest.java | 12 ++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonStreamParser.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonStreamParser.java index ffcb870..de2fee2 100644 --- a/fleece-core/src/main/java/org/apache/fleece/core/JsonStreamParser.java +++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonStreamParser.java @@ -97,10 +97,10 @@ public class JsonStreamParser implements JsonChars, EscapedStringAwareJsonParser if (escape) { // this induces an overhead but that's not that often normally final StringBuilder builder = new StringBuilder(currentValue.length()); - boolean escaped = false; + //boolean escaped = false; for (final char current : currentValue.toCharArray()) { if (current == ESCAPE_CHAR) { - escaped = true; + //escaped = true; continue; } if (!escape) { @@ -187,10 +187,10 @@ public class JsonStreamParser implements JsonChars, EscapedStringAwareJsonParser } private boolean isNumber() { - return isNumber(loadedChars[currentBufferIdx]) || loadedChars[currentBufferIdx] == DOT || loadedChars[currentBufferIdx] == MINUS || loadedChars[currentBufferIdx] == PLUS || loadedChars[currentBufferIdx] == EXP_LOWERCASE || loadedChars[currentBufferIdx] == EXP_UPPERCASE; + return isAsciiDigit(loadedChars[currentBufferIdx]) || loadedChars[currentBufferIdx] == DOT || loadedChars[currentBufferIdx] == MINUS || loadedChars[currentBufferIdx] == PLUS || loadedChars[currentBufferIdx] == EXP_LOWERCASE || loadedChars[currentBufferIdx] == EXP_UPPERCASE; } - private static boolean isNumber(final char value) { + private static boolean isAsciiDigit(final char value) { return value >= ZERO && value <= NINE; } @@ -276,16 +276,22 @@ public class JsonStreamParser implements JsonChars, EscapedStringAwareJsonParser if (lastEvent == Event.KEY_NAME || lastEvent == Event.VALUE_STRING || lastEvent == Event.VALUE_NUMBER) { return currentValue; } - throw new IllegalStateException(event + " doesnt support getString()"); + throw new IllegalStateException(event + " doesn't support getString()"); } @Override public boolean isIntegralNumber() { + + if (lastEvent != Event.VALUE_NUMBER) { + throw new IllegalStateException(event + " doesn't support isIntegralNumber()"); + } + for (int i = 0; i < currentValue.length(); i++) { - if (!isNumber(currentValue.charAt(i))) { + if (!isAsciiDigit(currentValue.charAt(i))) { return false; } } + return true; } diff --git a/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java b/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java index 6e4727f..31f1b93 100644 --- a/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java +++ b/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java @@ -347,6 +347,18 @@ public class JsonParserTest { } parser.close(); } + + @Test(expected=IllegalStateException.class) + public void isIntegralThrowsISE() { + final JsonParser parser = Json.createParser(Thread.currentThread().getContextClassLoader().getResourceAsStream("json/bigdecimal.json")); + assertNotNull(parser); + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.START_OBJECT, event); + assertFalse(parser.isIntegralNumber()); + + } @Test public void escaping() { -- 1.8.5.2 (Apple Git-48)