Skip to content

Commit

Permalink
address @garyluoex's comments
Browse files Browse the repository at this point in the history
  • Loading branch information
QubitPi committed May 9, 2017
1 parent f45c188 commit 8df824f
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,13 @@
package com.yahoo.bard.webservice.druid.client.impl;

import com.yahoo.bard.webservice.druid.client.DruidServiceConfig;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

import org.asynchttpclient.Response;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.function.Supplier;

Expand Down Expand Up @@ -49,23 +44,9 @@ protected boolean hasError(Status status) {

@Override
protected JsonNode constructJsonResponse(Response response) throws IOException {
MappingJsonFactory mappingJsonFactory = new MappingJsonFactory();
JsonNode jsonNode;

try (InputStream responseStream = response.getResponseBodyAsStream();
JsonParser jsonParser = mappingJsonFactory.createParser(responseStream)) {
jsonNode = jsonParser.readValueAsTree();
}

ObjectNode objectNode = (ObjectNode) OBJECT_MAPPER.readTree(jsonNode.asText());
objectNode.put(
"X-Druid-Response-Context",
response.getHeader("X-Druid-Response-Context")
.getBytes(StandardCharsets.UTF_8));
objectNode.put(
"status-code",
Status.fromStatusCode(response.getStatusCode()).getStatusCode()
);
ObjectNode objectNode = (ObjectNode) OBJECT_MAPPER.readTree(response.getResponseBody());
objectNode.put("X-Druid-Response-Context", response.getHeader("X-Druid-Response-Context"));
objectNode.put("status-code", response.getStatusCode());

return objectNode;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,4 +250,4 @@ public String getMessageFormat() {
public String getLoggingFormat() {
return loggingFormat;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright 2016 Yahoo Inc.
// Licensed under the terms of the Apache license. Please see LICENSE.md file distributed with this work for terms.
package com.yahoo.bard.webservice.druid.client.impl

import com.yahoo.bard.webservice.druid.client.DruidServiceConfig
import com.fasterxml.jackson.databind.ObjectMapper

import spock.lang.Specification

import org.asynchttpclient.Response

import java.util.function.Supplier;

class AsyncDruidWebServiceImplV2Spec extends Specification {
def "Make sure X-Druid-Response-Context and status-code are mreged into existing JsonNode"() {
given:
Response response = Mock(Response)
response.getResponseBody() >>
"""
{"k1":"v1"}
"""
response.getHeader("X-Druid-Response-Context") >>
"""
{
"uncoveredIntervals": [
"2016-11-22T00:00:00.000Z/2016-12-18T00:00:00.000Z",
"2016-12-25T00:00:00.000Z/2017-01-03T00:00:00.000Z"
],
"uncoveredIntervalsOverflowed": true
}
""".replace(" ", "").replace("\n", "")
response.getStatusCode() >> 200

DruidServiceConfig druidServiceConfig = Mock(DruidServiceConfig)
druidServiceConfig.getTimeout() >> 100
druidServiceConfig.getUrl() >> "url"
AsyncDruidWebServiceImplV2 asyncDruidWebServiceImplV2 = new AsyncDruidWebServiceImplV2(
druidServiceConfig,
new ObjectMapper(),
Mock(Supplier)
)

expect:
print asyncDruidWebServiceImplV2.constructJsonResponse(response)
asyncDruidWebServiceImplV2.constructJsonResponse(response).toString() ==
"""
{
"k1":"v1",
"X-Druid-Response-Context": "{
\\"uncoveredIntervals\\": [
\\"2016-11-22T00:00:00.000Z/2016-12-18T00:00:00.000Z\\",
\\"2016-12-25T00:00:00.000Z/2017-01-03T00:00:00.000Z\\"
],
\\"uncoveredIntervalsOverflowed\\": true
}",
"status-code": 200
}
""".replace(" ", "").replace("\n", "")
}
}

0 comments on commit 8df824f

Please sign in to comment.