Мне нужно настроить вывод, предоставленный graphql (по умолчанию json), чтобы изменить его, например, на.CSV или любой другой формат.Есть ли способ предоставить пользовательскую реализацию для ExecutionResult, такую как ExecutionResultImpl, и предоставить метод, аналогичный toSpecification (), чтобы изменить карту и преобразовать ее в желаемый вывод перед возвратом обратно в graphql?
Я хотел знатьесли есть способ справиться с этим?
Любая помощь будет оценена!Спасибо
Когда я пытался реализовать, он возвращает ClassCastException во время выполнения, поскольку тип перезапуска является экземпляром ExecutionResultImpl.
Вот пользовательская реализация, которую я попробовал:
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import graphql.ExecutionResult;
import graphql.GraphQLError;
public class ExecutionResultCustomImpl implements ExecutionResult {
private final Object data;
private final List<GraphQLError> errors;
private final transient boolean dataPresent;
private final transient Map<Object, Object> extensions;
public ExecutionResultCustomImpl(boolean dataPresent, Object data, List<? extends GraphQLError> errors, Map<Object, Object> extensions) {
this.dataPresent = dataPresent;
this.data = data;
if (errors != null && !errors.isEmpty()) {
this.errors = Collections.unmodifiableList(new ArrayList<>(errors));
} else {
this.errors = Collections.emptyList();
}
this.extensions = extensions;
}
public boolean isDataPresent() {
return dataPresent;
}
@Override
public <T> T getData() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<GraphQLError> getErrors() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<Object, Object> getExtensions() {
// TODO Auto-generated method stub
return null;
}
@Override
public Map<String, Object> toSpecification() {
// TODO Auto-generated method stub
return null;
}
public Map<String, Object> toCsvSpecification() {
Map<String, Object> result = new LinkedHashMap<>();
if (dataPresent) {
File file = new File("data.csv");
result.put("data", data);
System.out.println("***********"+file.getAbsolutePath());
}
if (errors != null && !errors.isEmpty()) {
//result.put("errors", errorsToSpec(errors));
File file = new File("errors.csv");
System.out.println("***********"+file.getAbsolutePath());
}
if (extensions != null) {
result.put("extensions", extensions);
File file = new File("extensions.csv");
System.out.println("***********"+file.getAbsolutePath());
}
return result;
}
}