Committed by
Jian Li
FIX for ONOS-5296:Wrong MetricName throwing NPE
Change-Id: I625640fba84bd2fabd140d6449cdceb0079ad3f4 (cherry picked from commit f5c17fd7)
Showing
1 changed file
with
8 additions
and
0 deletions
| ... | @@ -27,8 +27,10 @@ import com.fasterxml.jackson.databind.node.ObjectNode; | ... | @@ -27,8 +27,10 @@ import com.fasterxml.jackson.databind.node.ObjectNode; |
| 27 | import com.google.common.collect.Ordering; | 27 | import com.google.common.collect.Ordering; |
| 28 | import com.google.common.collect.TreeMultimap; | 28 | import com.google.common.collect.TreeMultimap; |
| 29 | import org.onlab.metrics.MetricsService; | 29 | import org.onlab.metrics.MetricsService; |
| 30 | +import org.onlab.util.ItemNotFoundException; | ||
| 30 | import org.onosproject.rest.AbstractWebResource; | 31 | import org.onosproject.rest.AbstractWebResource; |
| 31 | 32 | ||
| 33 | + | ||
| 32 | import javax.ws.rs.GET; | 34 | import javax.ws.rs.GET; |
| 33 | import javax.ws.rs.Path; | 35 | import javax.ws.rs.Path; |
| 34 | import javax.ws.rs.PathParam; | 36 | import javax.ws.rs.PathParam; |
| ... | @@ -44,6 +46,8 @@ import java.util.Map; | ... | @@ -44,6 +46,8 @@ import java.util.Map; |
| 44 | @Path("metrics") | 46 | @Path("metrics") |
| 45 | public class MetricsWebResource extends AbstractWebResource { | 47 | public class MetricsWebResource extends AbstractWebResource { |
| 46 | 48 | ||
| 49 | + private static final String E_METRIC_NAME_NOT_FOUND = "Metric Name is not found"; | ||
| 50 | + | ||
| 47 | private final MetricsService service = get(MetricsService.class); | 51 | private final MetricsService service = get(MetricsService.class); |
| 48 | private final ObjectNode root = mapper().createObjectNode(); | 52 | private final ObjectNode root = mapper().createObjectNode(); |
| 49 | 53 | ||
| ... | @@ -84,6 +88,10 @@ public class MetricsWebResource extends AbstractWebResource { | ... | @@ -84,6 +88,10 @@ public class MetricsWebResource extends AbstractWebResource { |
| 84 | MetricFilter filter = metricName != null ? (name, metric) -> name.equals(metricName) : MetricFilter.ALL; | 88 | MetricFilter filter = metricName != null ? (name, metric) -> name.equals(metricName) : MetricFilter.ALL; |
| 85 | TreeMultimap<String, Metric> matched = listMetrics(service, filter); | 89 | TreeMultimap<String, Metric> matched = listMetrics(service, filter); |
| 86 | 90 | ||
| 91 | + if (matched.isEmpty()) { | ||
| 92 | + throw new ItemNotFoundException(E_METRIC_NAME_NOT_FOUND); | ||
| 93 | + } | ||
| 94 | + | ||
| 87 | matched.asMap().get(metricName).forEach(m -> { | 95 | matched.asMap().get(metricName).forEach(m -> { |
| 88 | metricNode.set(metricName, codec(Metric.class).encode(m, this)); | 96 | metricNode.set(metricName, codec(Metric.class).encode(m, this)); |
| 89 | }); | 97 | }); | ... | ... |
-
Please register or login to post a comment