private static OperationServerMessage readFromJson(@NotNull JsonReader reader) throws IOException { checkNotNull(reader, "reader == null"); ResponseJsonStreamReader responseJsonStreamReader = new ResponseJsonStreamReader(reader); Map<String, Object> messageData = responseJsonStreamReader.toMap(); String id = (String) messageData.get(JSON_KEY_ID); String type = (String) messageData.get(JSON_KEY_TYPE); switch (type) { case ConnectionError.TYPE: return new ConnectionError(messagePayload(messageData)); case ConnectionAcknowledge.TYPE: return new ConnectionAcknowledge(); case Data.TYPE: return new Data(id, messagePayload(messageData)); case Error.TYPE: return new Error(id, messagePayload(messageData)); case Complete.TYPE: return new Complete(id); case ConnectionKeepAlive.TYPE: return new ConnectionKeepAlive(); default: throw new IOException("Unsupported message"); } }
public Object nextScalar(boolean optional) throws IOException { checkNextValue(optional); if (isNextNull()) { skipNext(); return null; } else if (isNextBoolean()) { return nextBoolean(false); } else if (isNextNumber()) { return new BigDecimal(nextString(false)); } else { return nextString(false); } }
public Map<String, Object> toMap() throws IOException { if (isNextObject()) { return readObject(this); } Map<String, Object> result = new LinkedHashMap<>(); while (hasNext()) { String name = nextName(); if (isNextNull()) { skipNext(); result.put(name, null); } else if (isNextObject()) { result.put(name, readObject(this)); } else if (isNextList()) { result.put(name, readList(this)); } else { result.put(name, nextScalar(true)); } } return result; }
@Override public Object read(ResponseJsonStreamReader reader) throws IOException { if (streamReader.isNextList()) { return readList(reader); } else if (streamReader.isNextObject()) { return readObject(reader); } else { return reader.nextScalar(true); } } });
List<Error> errors = null; ResponseJsonStreamReader responseStreamReader = responseJsonStreamReader(jsonReader); while (responseStreamReader.hasNext()) { String name = responseStreamReader.nextName(); if ("data".equals(name)) { data = (D) responseStreamReader.nextObject(true, new ResponseJsonStreamReader.ObjectReader<Object>() { @Override public Object read(ResponseJsonStreamReader reader) throws IOException { Map<String, Object> buffer = reader.toMap(); errors = readResponseErrors(responseStreamReader); } else { responseStreamReader.skipNext();
public Long nextLong(boolean optional) throws IOException { checkNextValue(optional); if (jsonReader.peek() == JsonReader.Token.NULL) { jsonReader.skipValue(); return null; } else { return jsonReader.nextLong(); } }
private List<Error> readResponseErrors(ResponseJsonStreamReader reader) throws IOException { return reader.nextList(true, new ResponseJsonStreamReader.ListReader<Error>() { @Override public Error read(ResponseJsonStreamReader reader) throws IOException { return reader.nextObject(true, new ResponseJsonStreamReader.ObjectReader<Error>() { @Override public Error read(ResponseJsonStreamReader reader) throws IOException { return readError(reader.toMap()); } }); } }); }
public static ResponseJsonStreamReader responseJsonStreamReader(BufferedSourceJsonReader sourceJsonReader) { return new ResponseJsonStreamReader(sourceJsonReader); }
List<Error> errors = null; ResponseJsonStreamReader responseStreamReader = responseJsonStreamReader(jsonReader); while (responseStreamReader.hasNext()) { String name = responseStreamReader.nextName(); if ("data".equals(name)) { data = (D) responseStreamReader.nextObject(true, new ResponseJsonStreamReader.ObjectReader<Object>() { @Override public Object read(ResponseJsonStreamReader reader) throws IOException { Map<String, Object> buffer = reader.toMap(); errors = readResponseErrors(responseStreamReader); } else { responseStreamReader.skipNext();
public Double nextDouble(boolean optional) throws IOException { checkNextValue(optional); if (jsonReader.peek() == JsonReader.Token.NULL) { jsonReader.skipValue(); return null; } else { return jsonReader.nextDouble(); } }
List<?> readList(final ResponseJsonStreamReader streamReader) throws IOException { return streamReader.nextList(false, new ListReader<Object>() { @Override public Object read(ResponseJsonStreamReader reader) throws IOException { if (streamReader.isNextList()) { return readList(reader); } else if (streamReader.isNextObject()) { return readObject(reader); } else { return reader.nextScalar(true); } } }); }
public static ResponseJsonStreamReader responseJsonStreamReader(BufferedSourceJsonReader sourceJsonReader) { return new ResponseJsonStreamReader(sourceJsonReader); }
public Map<String, Object> toMap() throws IOException { if (isNextObject()) { return readObject(this); } Map<String, Object> result = new LinkedHashMap<>(); while (hasNext()) { String name = nextName(); if (isNextNull()) { skipNext(); result.put(name, null); } else if (isNextObject()) { result.put(name, readObject(this)); } else if (isNextList()) { result.put(name, readList(this)); } else { result.put(name, nextScalar(true)); } } return result; }
public Object nextScalar(boolean optional) throws IOException { checkNextValue(optional); if (isNextNull()) { skipNext(); return null; } else if (isNextBoolean()) { return nextBoolean(false); } else if (isNextNumber()) { return new BigDecimal(nextString(false)); } else { return nextString(false); } }
List<Error> errors = null; ResponseJsonStreamReader responseStreamReader = responseJsonStreamReader(jsonReader); while (responseStreamReader.hasNext()) { String name = responseStreamReader.nextName(); if ("data".equals(name)) { data = (D) responseStreamReader.nextObject(true, new ResponseJsonStreamReader.ObjectReader<Object>() { @Override public Object read(ResponseJsonStreamReader reader) throws IOException { Map<String, Object> buffer = reader.toMap(); errors = readResponseErrors(responseStreamReader); } else { responseStreamReader.skipNext();
public String nextString(boolean optional) throws IOException { checkNextValue(optional); if (jsonReader.peek() == JsonReader.Token.NULL) { jsonReader.skipValue(); return null; } else { return jsonReader.nextString(); } }
private List<Error> readResponseErrors(ResponseJsonStreamReader reader) throws IOException { return reader.nextList(true, new ResponseJsonStreamReader.ListReader<Error>() { @Override public Error read(ResponseJsonStreamReader reader) throws IOException { return reader.nextObject(true, new ResponseJsonStreamReader.ObjectReader<Error>() { @Override public Error read(ResponseJsonStreamReader reader) throws IOException { return readError(reader.toMap()); } }); } }); }
public static ResponseJsonStreamReader responseJsonStreamReader(BufferedSourceJsonReader sourceJsonReader) { return new ResponseJsonStreamReader(sourceJsonReader); }
public Map<String, Object> toMap() throws IOException { if (isNextObject()) { return readObject(this); } Map<String, Object> result = new LinkedHashMap<>(); while (hasNext()) { String name = nextName(); if (isNextNull()) { skipNext(); result.put(name, null); } else if (isNextObject()) { result.put(name, readObject(this)); } else if (isNextList()) { result.put(name, readList(this)); } else { result.put(name, nextScalar(true)); } } return result; }
public Object nextScalar(boolean optional) throws IOException { checkNextValue(optional); if (isNextNull()) { skipNext(); return null; } else if (isNextBoolean()) { return nextBoolean(false); } else if (isNextNumber()) { return new BigDecimal(nextString(false)); } else { return nextString(false); } }