Skip to content
This repository has been archived by the owner on Jul 11, 2022. It is now read-only.

Commit

Permalink
Bug 1122047 - If 'Accept' header field is not explicitly specified, s…
Browse files Browse the repository at this point in the history
…erver

responds with empty body upon REST query metric/data/{scheduleId}/raw

in case accept header does not specify media type, we fallback to JSON.
  • Loading branch information
Libor Zoubek committed Jul 24, 2014
1 parent 25a6253 commit a0ba10f
Showing 1 changed file with 37 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.storage.StorageClientManager;
import org.rhq.enterprise.server.measurement.CallTimeDataManagerLocal;
import org.rhq.enterprise.server.measurement.MeasurementDataManagerLocal;
import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerLocal;
Expand All @@ -104,6 +103,7 @@
import org.rhq.enterprise.server.rest.domain.MetricSchedule;
import org.rhq.enterprise.server.rest.domain.NumericDataPoint;
import org.rhq.enterprise.server.rest.domain.StringValue;
import org.rhq.enterprise.server.storage.StorageClientManager;
import org.rhq.server.metrics.MetricsDAO;
import org.rhq.server.metrics.domain.RawNumericMetric;

Expand Down Expand Up @@ -1132,6 +1132,17 @@ else if (mediaType.equals(MediaType.APPLICATION_XML_TYPE)) {
xmlOutput(i.next(), pw);
}
pw.println("</collection>");
} else {
//default
pw.print("[");
if (i.hasNext()) {
jsonOutput(i.next(), pw);
}
while (i.hasNext()) {
pw.print(",\n");
jsonOutput(i.next(), pw);
}
pw.println("]");
}
pw.flush();
pw.close();
Expand All @@ -1150,6 +1161,28 @@ private class RawNumericStreamingOutput implements StreamingOutput {
long endTime;
MediaType mediaType;

private void jsonOutput(PrintWriter pw, Iterable<RawNumericMetric> resultSet) {
boolean needsComma = false;
pw.println("[");
for (RawNumericMetric metric : resultSet) {
if (needsComma) {
pw.print(",\n");
}
needsComma = true;
pw.print("{");
pw.print("\"scheduleId\":");
pw.print(scheduleId);
pw.print(", ");
pw.print("\"timeStamp\":");
pw.print(metric.getTimestamp());
pw.print(", ");
pw.print("\"value\":");
pw.print(metric.getValue());
pw.print("}");
}
pw.println("]");
}

@Override
public void write(OutputStream outputStream) throws IOException, WebApplicationException {
MetricsDAO metricsDAO = sessionManager.getMetricsDAO();
Expand All @@ -1158,25 +1191,7 @@ public void write(OutputStream outputStream) throws IOException, WebApplicationE
PrintWriter pw = new PrintWriter(outputStream);

if (mediaType.equals(MediaType.APPLICATION_JSON_TYPE)) {
boolean needsComma = false;
pw.println("[");
for (RawNumericMetric metric : resultSet) {
if (needsComma) {
pw.print(",\n");
}
needsComma = true;
pw.print("{");
pw.print("\"scheduleId\":");
pw.print(scheduleId);
pw.print(", ");
pw.print("\"timeStamp\":");
pw.print(metric.getTimestamp());
pw.print(", ");
pw.print("\"value\":");
pw.print(metric.getValue());
pw.print("}");
}
pw.println("]");
jsonOutput(pw, resultSet);
} else if (mediaType.equals(MediaType.APPLICATION_XML_TYPE)) {
pw.println("<collection>");
for (RawNumericMetric metric : resultSet) {
Expand Down Expand Up @@ -1212,6 +1227,8 @@ public void write(OutputStream outputStream) throws IOException, WebApplicationE
}
pw.println("</table>");

} else {
jsonOutput(pw, resultSet);
}
pw.flush();
pw.close();
Expand Down

0 comments on commit a0ba10f

Please sign in to comment.