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