-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path145.java
More file actions
112 lines (97 loc) · 3.38 KB
/
Copy path145.java
File metadata and controls
112 lines (97 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package net.nemerosa.ontrack.client;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.nemerosa.ontrack.common.Document;
import net.nemerosa.ontrack.json.JsonUtils;
import net.nemerosa.ontrack.json.ObjectMapperFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import java.io.IOException;
public class JsonClientImpl implements JsonClient {
private final OTHttpClient httpClient;
private final ObjectMapper objectMapper;
public JsonClientImpl(OTHttpClient httpClient) {
this.httpClient = httpClient;
this.objectMapper = ObjectMapperFactory.create();
}
@Override
public JsonNode get(String path, Object... parameters) {
return httpClient.get(this::toJson, path, parameters);
}
@Override
public JsonNode delete(String path, Object... parameters) {
return httpClient.delete(this::toJson, path, parameters);
}
@Override
public JsonNode post(Object data, String path, Object... parameters) {
try {
return post(
new StringEntity(
objectMapper.writeValueAsString(data),
ContentType.create("application/json", "UTF-8")
),
path,
parameters
);
} catch (JsonProcessingException e) {
throw new JsonClientMappingException(e);
}
}
@Override
public JsonNode post(HttpEntity data, String path, Object... parameters) {
return httpClient.post(
this::toJson,
data,
path,
parameters
);
}
@Override
public JsonNode put(Object data, String path, Object... parameters) {
try {
return httpClient.put(
this::toJson,
new StringEntity(
objectMapper.writeValueAsString(data),
ContentType.create("application/json", "UTF-8")
),
path,
parameters
);
} catch (JsonProcessingException e) {
throw new JsonClientMappingException(e);
}
}
@Override
public JsonNode upload(String name, Document o, String fileName, String path, Object... parameters) {
return httpClient.upload(this::toJson, name, o, fileName, path, parameters);
}
@Override
public Document download(String path, Object... parameters) {
return httpClient.download(path, parameters);
}
@Override
public String getUrl(String path, Object... parameters) {
return httpClient.getUrl(path, parameters);
}
@Override
public JsonNode toNode(Object data) {
return objectMapper.valueToTree(data);
}
private JsonNode toJson(String content) {
if (StringUtils.isBlank(content)) {
return JsonUtils.object().end();
} else {
JsonNode tree;
try {
tree = objectMapper.readTree(content);
} catch (IOException e) {
throw new JsonClientParsingException(e);
}
return tree;
}
}
}