diff options
author | Joss Armstrong <joss.armstrong@ericsson.com> | 2019-02-25 10:32:13 +0000 |
---|---|---|
committer | Takamune Cho <takamune.cho@att.com> | 2019-02-26 15:33:58 +0000 |
commit | b0b57534dd4e69913753b9acf1c3a495b7738f6a (patch) | |
tree | 199ce34fd017a217588986d69e1e3152fe54ae61 /appc-metric/appc-metric-bundle/src/main/java | |
parent | 423a91b62f381167bf7852c4ac987b96ba06f35c (diff) |
Fix for casting/subclassing in MetricRegistry
Put in code to avoid cast exceptions from this class
and updated tests
Issue-ID: APPC-1480
Change-Id: I8b54d93e52eb523f08d13e874b4d18d05feede6b
Signed-off-by: Joss Armstrong <joss.armstrong@ericsson.com>
Diffstat (limited to 'appc-metric/appc-metric-bundle/src/main/java')
-rw-r--r-- | appc-metric/appc-metric-bundle/src/main/java/org/onap/appc/metricservice/impl/MetricRegistryImpl.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/appc-metric/appc-metric-bundle/src/main/java/org/onap/appc/metricservice/impl/MetricRegistryImpl.java b/appc-metric/appc-metric-bundle/src/main/java/org/onap/appc/metricservice/impl/MetricRegistryImpl.java index 48d1c6fac..d371fed43 100644 --- a/appc-metric/appc-metric-bundle/src/main/java/org/onap/appc/metricservice/impl/MetricRegistryImpl.java +++ b/appc-metric/appc-metric-bundle/src/main/java/org/onap/appc/metricservice/impl/MetricRegistryImpl.java @@ -25,9 +25,10 @@ package org.onap.appc.metricservice.impl; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - import org.onap.appc.metricservice.MetricRegistry; import org.onap.appc.metricservice.metric.Counter; import org.onap.appc.metricservice.metric.Metric; @@ -40,6 +41,8 @@ import org.onap.appc.metricservice.policy.impl.PolicyBuilderFactoryImpl; public class MetricRegistryImpl implements MetricRegistry { private String name; + // Map can contain Counters, DispatchingFunctionMetrics and DMaapRequestCounterMetrics + // and there are methods to retrieve only the 'Counter' types private Map<String, Metric> concurrentMetricMap = new ConcurrentHashMap<>(); public MetricRegistryImpl(String name) { @@ -68,12 +71,22 @@ public class MetricRegistryImpl implements MetricRegistry { @Override public Counter counter(String value) { - return (Counter)concurrentMetricMap.get(value); + Metric metric = concurrentMetricMap.get(value); + if (metric instanceof Counter) { + return (Counter)metric; + } + else return null; } @Override public Counter[] counters() { - return (Counter[])concurrentMetricMap.values().toArray(); + List<Counter> counterList = new ArrayList<>(); + for (Metric m: concurrentMetricMap.values()) { + if (m instanceof Counter) { + counterList.add((Counter) m); + } + } + return counterList.toArray(new Counter[counterList.size()]); } @Override |