Unverified Commit d003fbd9 authored by Greg Messner's avatar Greg Messner Committed by GitHub
Browse files

Add support for new health check JSON format - #468 (#474)

parent 039d3277
package org.gitlab4j.api.models;
import java.io.IOException;
import org.gitlab4j.api.utils.JacksonJson;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
public class HealthCheckInfo {
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem dbCheck;
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem redisCheck;
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem cacheCheck;
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem queuesCheck;
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem sharedStateCheck;
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem fsShardsCheck;
@JsonDeserialize(using = HealthCheckItemDeserializer.class)
private HealthCheckItem gitalyCheck;
public HealthCheckItem getDbCheck() {
......@@ -71,4 +95,29 @@ public class HealthCheckInfo {
public String toString() {
return (JacksonJson.toJsonString(this));
}
/**
* This desrializer can deserialize on object containing a HealthCheckItem or an
* array containing a single HealthCheckItem.
*/
private static class HealthCheckItemDeserializer extends JsonDeserializer<HealthCheckItem> {
private static final ObjectMapper mapper = new JacksonJson().getObjectMapper();
@Override
public HealthCheckItem deserialize(JsonParser jsonParser, DeserializationContext ctx)
throws IOException, JsonProcessingException {
HealthCheckItem healthCheckItem = null;
JsonNode tree = jsonParser.readValueAsTree();
if (tree.isArray()) {
JsonNode node = tree.get(0);
healthCheckItem = mapper.treeToValue(node, HealthCheckItem.class);
} else if (tree.isObject()) {
healthCheckItem = mapper.treeToValue(tree, HealthCheckItem.class);
}
return (healthCheckItem);
}
}
}
......@@ -262,6 +262,12 @@ public class TestGitLabApiBeans {
assertTrue(compareJson(healthCheck, "health-check.json"));
}
@Test
public void testHealthCheckInfoNew() throws Exception {
HealthCheckInfo healthCheck = unmarshalResource(HealthCheckInfo.class, "health-check-new.json");
assertTrue(compareJson(healthCheck, "health-check.json"));
}
@Test
public void testImportStatus() throws Exception {
ImportStatus importStatus = unmarshalResource(ImportStatus.class, "import-status.json");
......
{
"queues_check" : [{
"status" : "ok"
}],
"redis_check" : [{
"status" : "ok"
}],
"shared_state_check" : [{
"status" : "ok"
}],
"fs_shards_check" : [{
"labels" : {
"shard" : "default"
},
"status" : "ok"
}],
"db_check" : [{
"status" : "failed",
"message": "Problem with database."
}],
"cache_check" : [{
"status" : "ok"
}]
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment