ATEST-633

This commit is contained in:
Fabian Märki
2016-12-08 16:26:29 +01:00
parent 101af582d2
commit 161fa9d38f
2 changed files with 91 additions and 10 deletions
@@ -81,6 +81,8 @@ public class JSONTableResponseStreamWriter implements ResponseStreamWriter {
@Resource(name = QueryRestConfig.BEAN_NAME_DEFAULT_RESPONSE_AGGREGATIONS)
private Set<Aggregation> defaultResponseAggregations;
// In case ArchiverAppliance had several events within the 10ms mapping interval, return these
// aggregations
private Set<String> defaultResponseAggregationsStr;
@PostConstruct
@@ -92,7 +94,7 @@ public class JSONTableResponseStreamWriter implements ResponseStreamWriter {
@Override
public void respond(final List<Entry<DAQQueryElement, Stream<Triple<BackendQuery, ChannelName, ?>>>> results,
final OutputStream out, final Response response) throws Exception {
final OutputStream out, final Response response) throws Exception {
respond(context, jsonFactory, mapper, defaultResponseAggregationsStr, results, out, response);
}
@@ -103,7 +105,7 @@ public class JSONTableResponseStreamWriter implements ResponseStreamWriter {
final OutputStream out, final Response response) throws Exception {
AtomicReference<Exception> exception = new AtomicReference<>();
JsonGenerator generator = factory.createGenerator(out, JsonEncoding.UTF8);
try {
if (results.size() > 1) {
generator.writeStartArray();
@@ -116,7 +118,9 @@ public class JSONTableResponseStreamWriter implements ResponseStreamWriter {
/* make sure identifiers are available */
includedFields.add(QueryField.channel.name());
includedFields.add(QueryField.backend.name());
includedFields.addAll(defaultResponseAggregationsStr);
if (!containsAggregation(includedFields)) {
includedFields.addAll(defaultResponseAggregationsStr);
}
ObjectWriter writer = JSONResponseStreamWriter.configureWriter(includedFields, mapper);
@@ -211,4 +215,13 @@ public class JSONTableResponseStreamWriter implements ResponseStreamWriter {
throw exception.get();
}
}
private static boolean containsAggregation(Set<String> includedFields) {
for (Aggregation aggregation : Aggregation.values()) {
if (includedFields.contains(aggregation.name())) {
return true;
}
}
return false;
}
}