@Override public JsonParser createParser(InputStream in) throws IOException, JsonParseException { return new IonParser(ionSystem.newReader(in), SHOULD_CLOSE_READER_NO); }
@Override public JsonToken nextToken() throws IOException, JsonParseException { currentToken = doNextToken(); return currentToken; }
@Override public boolean hasTokenId(int id) { return getCurrentTokenId() == id; }
@Override public String getValueAsString(String defaultValue) throws IOException { // The documentation is ambiguous about whether field names should // return their text or the default value. To conform with the // CBORParser, they will get the default value here. if (currentToken != JsonToken.VALUE_STRING) { if (currentToken == null || currentToken == JsonToken.VALUE_NULL || !currentToken.isScalarValue()) { return defaultValue; } } return getText(); }
@Override public String getText() throws IOException { if (state == State.FIELD_NAME) { return reader.getFieldName(); } if (IonType.isText(reader.getType())) { return reader.stringValue(); } if (currentToken == null) { // start or end of stream return null; } if (currentToken.isNumeric()) { return getNumberValue().toString(); } return currentToken.asString(); }
@Override public Number getNumberValue() throws IOException { NumberType numberType = getNumberType(); if (numberType == null) { throw new SdkClientException(String.format("Unable to get number value for non-numeric token %s", reader.getType())); } switch (numberType) { case BIG_DECIMAL: return reader.bigDecimalValue(); case BIG_INTEGER: return reader.bigIntegerValue(); case DOUBLE: return reader.doubleValue(); default: throw new SdkClientException(String.format("Unable to get number value for number type %s", numberType)); } }
} else { state = State.VALUE; return getJsonToken(); return getJsonToken();
@Override public String getValueAsString(String defaultValue) throws IOException { // The documentation is ambiguous about whether field names should // return their text or the default value. To conform with the // CBORParser, they will get the default value here. if (currentToken != JsonToken.VALUE_STRING) { if (currentToken == null || currentToken == JsonToken.VALUE_NULL || !currentToken.isScalarValue()) { return defaultValue; } } return getText(); }
@Override public String getText() throws IOException { if (state == State.FIELD_NAME) { return reader.getFieldName(); } if (IonType.isText(reader.getType())) { return reader.stringValue(); } if (currentToken == null) { // start or end of stream return null; } if (currentToken.isNumeric()) { return getNumberValue().toString(); } return currentToken.asString(); }
@Override public Number getNumberValue() throws IOException { NumberType numberType = getNumberType(); if (numberType == null) { throw new SdkClientException(String.format("Unable to get number value for non-numeric token %s", reader.getType())); } switch (numberType) { case BIG_DECIMAL: return reader.bigDecimalValue(); case BIG_INTEGER: return reader.bigIntegerValue(); case DOUBLE: return reader.doubleValue(); default: throw new SdkClientException(String.format("Unable to get number value for number type %s", numberType)); } }
} else { state = State.VALUE; return getJsonToken(); return getJsonToken();
@Override public JsonParser createParser(Reader data) throws IOException, JsonParseException { return new IonParser(ionSystem.newReader(data), SHOULD_CLOSE_READER_NO); }
@Override public JsonToken nextToken() throws IOException, JsonParseException { currentToken = doNextToken(); return currentToken; }
@Override public String getValueAsString(String defaultValue) throws IOException { // The documentation is ambiguous about whether field names should // return their text or the default value. To conform with the // CBORParser, they will get the default value here. if (currentToken != JsonToken.VALUE_STRING) { if (currentToken == null || currentToken == JsonToken.VALUE_NULL || !currentToken.isScalarValue()) { return defaultValue; } } return getText(); }
@Override public boolean hasTokenId(int id) { return getCurrentTokenId() == id; }
@Override public String getText() throws IOException { if (state == State.FIELD_NAME) { return reader.getFieldName(); } if (IonType.isText(reader.getType())) { return reader.stringValue(); } if (currentToken == null) { // start or end of stream return null; } if (currentToken.isNumeric()) { return getNumberValue().toString(); } return currentToken.asString(); }
@Override public Number getNumberValue() throws IOException { NumberType numberType = getNumberType(); if (numberType == null) { throw new SdkClientException(String.format("Unable to get number value for non-numeric token %s", reader.getType())); } switch (numberType) { case BIG_DECIMAL: return reader.bigDecimalValue(); case BIG_INTEGER: return reader.bigIntegerValue(); case DOUBLE: return reader.doubleValue(); default: throw new SdkClientException(String.format("Unable to get number value for number type %s", numberType)); } }