Skip to content

Commit

Permalink
Resolved PR comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
pchitolina-fauna committed Jan 25, 2024
1 parent f5b761e commit acf57b5
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 41 deletions.
58 changes: 17 additions & 41 deletions faunaJava/src/main/java/com/fauna/serialization/FaunaParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ public boolean read() throws IOException {
case VALUE_STRING:
currentFaunaTokenType = FaunaTokenType.STRING;
break;
case NOT_AVAILABLE:
case START_OBJECT:
handleStartObject();
break;
Expand All @@ -111,44 +110,20 @@ private void handleStartObject() throws IOException {
switch (jsonParser.currentToken()) {
case FIELD_NAME:
switch (jsonParser.getText()) {
case DATE_TAG:
handleTaggedString(FaunaTokenType.DATE);
break;
case DOC_TAG:
advance();
currentFaunaTokenType = FaunaTokenType.START_DOCUMENT;
tokenStack.push(FaunaTokenType.START_DOCUMENT);
break;
case DOUBLE_TAG:
handleTaggedString(FaunaTokenType.DOUBLE);
break;
case INT_TAG:
handleTaggedString(FaunaTokenType.INT);
break;
case DATE_TAG:
case DOC_TAG:
case DOUBLE_TAG:
case LONG_TAG:
handleTaggedString(FaunaTokenType.LONG);
break;
case MOD_TAG:
handleTaggedString(FaunaTokenType.MODULE);
break;
case OBJECT_TAG:
advance();
currentFaunaTokenType = FaunaTokenType.START_OBJECT;
tokenStack.push(TokenTypeInternal.START_ESCAPED_OBJECT);
break;
case REF_TAG:
advance();
currentFaunaTokenType = FaunaTokenType.START_REF;
tokenStack.push(FaunaTokenType.START_REF);
break;
case SET_TAG:
advance();
currentFaunaTokenType = FaunaTokenType.START_PAGE;
tokenStack.push(FaunaTokenType.START_PAGE);
break;
case TIME_TAG:
handleTaggedString(FaunaTokenType.TIME);
break;
throw new SerializationException(
"Token not implemented: " + jsonParser.currentToken());
default:
bufferedFaunaTokenType = FaunaTokenType.FIELD_NAME;
tokenStack.push(FaunaTokenType.START_OBJECT);
Expand All @@ -157,12 +132,11 @@ private void handleStartObject() throws IOException {
}
break;
case END_OBJECT:
bufferedFaunaTokenType = FaunaTokenType.END_OBJECT;
tokenStack.push(FaunaTokenType.START_OBJECT);
currentFaunaTokenType = FaunaTokenType.START_OBJECT;
break;
throw new SerializationException(
"Token not implemented: " + jsonParser.currentToken());
default:
throw new SerializationException("Unexpected token following StartObject: " + jsonParser.currentToken());
throw new SerializationException(
"Unexpected token following StartObject: " + jsonParser.currentToken());
}
}

Expand All @@ -174,8 +148,7 @@ private void handleTaggedString(FaunaTokenType token) throws IOException {
}

private void advanceTrue() {
if (!advance())
{
if (!advance()) {
throw new SerializationException("Unexpected end of underlying JSON reader.");
}
}
Expand All @@ -189,8 +162,10 @@ private boolean advance() {
}

private void validateTaggedType(FaunaTokenType type) {
if (currentFaunaTokenType != type || taggedTokenValue == null || !(taggedTokenValue instanceof String)) {
throw new IllegalStateException("CurrentTokenType is a " + currentFaunaTokenType.toString() +
if (currentFaunaTokenType != type || taggedTokenValue == null
|| !(taggedTokenValue instanceof String)) {
throw new IllegalStateException(
"CurrentTokenType is a " + currentFaunaTokenType.toString() +
", not a " + type.toString() + ".");
}
}
Expand All @@ -199,15 +174,16 @@ public String getValueAsString() {
try {
return jsonParser.getValueAsString();
} catch (IOException e) {
throw new RuntimeException("Error reading current token as String", e);
throw new RuntimeException("Error getting the current token as String", e);
}
}

public Integer getValueAsInt() {
validateTaggedType(FaunaTokenType.INT);
try {
return Integer.parseInt(taggedTokenValue);
} catch (NumberFormatException e) {
throw new RuntimeException("Error parsing the current token as Integer", e);
throw new RuntimeException("Error getting the current token as Integer", e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;

import com.fauna.common.enums.FaunaTokenType;
import com.fauna.exception.SerializationException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
Expand Down Expand Up @@ -39,6 +41,22 @@ public void testGetValueAsInt() throws IOException {
);

assertReader(reader, expectedTokens);

String invalidJson = "{\"@int\": \"abc\"}";
InputStream invalidInputStream = new ByteArrayInputStream(invalidJson.getBytes());
FaunaParser invalidReader = new FaunaParser(invalidInputStream);

assertThrows(RuntimeException.class, invalidReader::getValueAsInt);
}

@Test
public void testUnexpectedEndDuringAdvance() throws IOException {

String json = "{\"@int\": \"123\"";
InputStream inputStream = new ByteArrayInputStream(json.getBytes());
FaunaParser reader = new FaunaParser(inputStream);

assertThrows(SerializationException.class, reader::read);
}

private static void assertReader(FaunaParser reader,
Expand Down

0 comments on commit acf57b5

Please sign in to comment.