use of com.apollographql.apollo.internal.field.MapFieldValueResolver in project apollo-android by apollographql.
the class ResponseReaderTest method responseReader.
@SuppressWarnings("unchecked")
private static RealResponseReader<Map<String, Object>> responseReader(Map<String, Object> recordSet) {
Map<ScalarType, CustomTypeAdapter> customTypeAdapters = new HashMap<>();
customTypeAdapters.put(DATE_CUSTOM_TYPE, new CustomTypeAdapter() {
@Override
public Object decode(CustomTypeValue value) {
try {
return DATE_TIME_FORMAT.parse(value.value.toString());
} catch (ParseException e) {
throw new ClassCastException();
}
}
@Override
public CustomTypeValue encode(Object value) {
return null;
}
});
customTypeAdapters.put(URL_CUSTOM_TYPE, new CustomTypeAdapter() {
@Override
public Object decode(CustomTypeValue value) {
return null;
}
@Override
public CustomTypeValue encode(Object value) {
return null;
}
});
customTypeAdapters.put(OBJECT_CUSTOM_TYPE, new CustomTypeAdapter() {
@Override
public Object decode(CustomTypeValue value) {
return value.value.toString();
}
@Override
public CustomTypeValue encode(Object value) {
return null;
}
});
return new RealResponseReader<>(EMPTY_OPERATION.variables(), recordSet, new MapFieldValueResolver(), new ScalarTypeAdapters(customTypeAdapters), NO_OP_NORMALIZER);
}
use of com.apollographql.apollo.internal.field.MapFieldValueResolver in project apollo-android by apollographql.
the class OperationResponseParser method parse.
public Response<W> parse(BufferedSource source) throws IOException {
responseNormalizer.willResolveRootQuery(operation);
BufferedSourceJsonReader jsonReader = null;
try {
jsonReader = new BufferedSourceJsonReader(source);
jsonReader.beginObject();
D data = null;
List<Error> errors = null;
ResponseJsonStreamReader responseStreamReader = responseJsonStreamReader(jsonReader);
while (responseStreamReader.hasNext()) {
String name = responseStreamReader.nextName();
if ("data".equals(name)) {
// noinspection unchecked
data = (D) responseStreamReader.nextObject(true, new ResponseJsonStreamReader.ObjectReader<Object>() {
@Override
public Object read(ResponseJsonStreamReader reader) throws IOException {
Map<String, Object> buffer = reader.toMap();
RealResponseReader<Map<String, Object>> realResponseReader = new RealResponseReader<>(operation.variables(), buffer, new MapFieldValueResolver(), scalarTypeAdapters, responseNormalizer);
return responseFieldMapper.map(realResponseReader);
}
});
} else if ("errors".equals(name)) {
errors = readResponseErrors(responseStreamReader);
} else {
responseStreamReader.skipNext();
}
}
jsonReader.endObject();
return Response.<W>builder(operation).data(operation.wrapData(data)).errors(errors).dependentKeys(responseNormalizer.dependentKeys()).build();
} finally {
if (jsonReader != null) {
jsonReader.close();
}
}
}
use of com.apollographql.apollo.internal.field.MapFieldValueResolver in project apollo-android by apollographql.
the class OperationResponseParser method parse.
@SuppressWarnings("unchecked")
public Response<W> parse(@Nonnull Map<String, Object> payload) {
checkNotNull(payload, "payload == null");
D data = null;
if (payload.containsKey("data")) {
Map<String, Object> buffer = (Map<String, Object>) payload.get("data");
RealResponseReader<Map<String, Object>> realResponseReader = new RealResponseReader<>(operation.variables(), buffer, new MapFieldValueResolver(), scalarTypeAdapters, responseNormalizer);
data = (D) responseFieldMapper.map(realResponseReader);
}
List<Error> errors = null;
if (payload.containsKey("errors")) {
List<Map<String, Object>> errorPayloads = (List<Map<String, Object>>) payload.get("errors");
if (errorPayloads != null) {
errors = new ArrayList<>();
for (Map<String, Object> errorPayload : errorPayloads) {
errors.add(readError(errorPayload));
}
}
}
return Response.<W>builder(operation).data(operation.wrapData(data)).errors(errors).dependentKeys(responseNormalizer.dependentKeys()).build();
}
Aggregations