1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package eu.ehri.extension.errors;
21
22 import com.fasterxml.jackson.core.JsonProcessingException;
23 import com.fasterxml.jackson.databind.ObjectMapper;
24 import com.google.common.base.Charsets;
25 import com.google.common.collect.ImmutableMap;
26 import graphql.GraphQLError;
27 import graphql.GraphqlErrorHelper;
28
29 import javax.ws.rs.WebApplicationException;
30 import javax.ws.rs.core.Response;
31 import java.util.List;
32 import java.util.stream.Collectors;
33
34 public class ExecutionError extends WebApplicationException {
35 private static final ObjectMapper mapper = new ObjectMapper();
36
37 public ExecutionError(List<? extends GraphQLError> errors) {
38 super(Response.status(Response.Status.BAD_REQUEST)
39 .entity(errorToJson(errors).getBytes(Charsets.UTF_8)).build());
40 }
41
42 private static String errorToJson(List<? extends GraphQLError> errors) {
43 try {
44 return mapper.writeValueAsString(
45 ImmutableMap.of("errors", errors
46 .stream()
47 .map(GraphqlErrorHelper::toSpecification)
48 .collect(Collectors.toList())
49 )
50 );
51 } catch (JsonProcessingException err) {
52 throw new RuntimeException(err);
53 }
54 }
55 }