class OpenTSDBWithStormQuerier extends AbstractTimeSeriesQuerier {

    @Override
    public Map<String, Map<Long, Double>> getRawMetrics(String metricName, String parameters, long from, long to) {
        Map<String, String> queryParams = parseParameters(parameters);
        URI targetUri = composeRawQueryParameters(metricName, queryParams, from, to);

        log.debug("Calling {} for querying metric", targetUri.toString());

        List<Map<String, ?>> responseList = JsonClientUtil.getEntity(client.target(targetUri), List.class);
        if (responseList.isEmpty()) {
            return Collections.emptyMap();
        }

        Map<String, Map<Long, Double>> ret = new HashMap<>(responseList.size());
        for (Map<String, ?> responseMap : responseList) {
            String retrievedMetricName = buildMetricNameFromResp(responseMap);
            Map<String, Number> retrievedPoints = (Map<String, Number>) responseMap.get("dps");

            Map<Long, Double> pointsForOutput;
            if (retrievedPoints == null || retrievedPoints.isEmpty()) {
                pointsForOutput = Collections.emptyMap();
            } else {
                pointsForOutput = new HashMap<>(retrievedPoints.size());
                for (Map.Entry<String, Number> timestampToValue : retrievedPoints.entrySet()) {
                    pointsForOutput.put(Long.valueOf(timestampToValue.getKey()), timestampToValue.getValue().doubleValue());
                }
            }

            ret.put(retrievedMetricName, pointsForOutput);
        }
        return ret;
    }

}