diff options
author | Rashmi Pujar <rashmi.pujar1@bell.ca> | 2022-02-23 23:40:54 -0500 |
---|---|---|
committer | Rashmi Pujar <rashmi.pujar1@bell.ca> | 2022-02-24 10:50:46 -0500 |
commit | f0ae42bb24bd4ee98f6b7b3acf2e47d96946de1b (patch) | |
tree | e01758a4d1fca5ff785ee21c73553de789208cd0 | |
parent | c89f17af3cccff82d3f251e7fe73910ea8e26dbf (diff) |
Fix for ClassCastException on PfConceptContainer get method usages
Typecasting Map to NavigableMap leads to ClassCastException.
The usages of the get methods in delete policy, policyType
endpoints in policy/api (using spring data jpa) cause the
unchecked class-cast exception. Fix is to instead copy the
Map entries into a newly created TreeMap instance.
Issue-ID: POLICY-3924
Signed-off-by: Rashmi Pujar <rashmi.pujar1@bell.ca>
Change-Id: I60625980d6f2692ffa7dd3bd9f53d10b43c13f4a
-rw-r--r-- | models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java b/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java index a98a7ac54..5f38a395a 100644 --- a/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java +++ b/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 Nordix Foundation. * Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2022 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -331,30 +332,37 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex if (conceptKey.isNullVersion()) { return get(conceptKey.getName()); } else { - return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKey); + return new PfConceptGetterImpl<>(getNavigableConceptMap()).get(conceptKey); } } @Override public C get(final String conceptKeyName) { - return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKeyName); + return new PfConceptGetterImpl<>(getNavigableConceptMap()).get(conceptKeyName); } @Override public C get(final String conceptKeyName, final String conceptKeyVersion) { - return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKeyName, - conceptKeyVersion); + return new PfConceptGetterImpl<>(getNavigableConceptMap()).get(conceptKeyName, conceptKeyVersion); } @Override public Set<C> getAll(final String conceptKeyName) { - return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).getAll(conceptKeyName); + return new PfConceptGetterImpl<>(getNavigableConceptMap()).getAll(conceptKeyName); } @Override public Set<C> getAll(final String conceptKeyName, final String conceptKeyVersion) { - return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).getAll(conceptKeyName, - conceptKeyVersion); + return new PfConceptGetterImpl<>(getNavigableConceptMap()).getAll(conceptKeyName, conceptKeyVersion); + } + + /** + * Get the concept map as a NavigableMap object. + * + * @return NavigableMap conceptMap instance. + */ + private NavigableMap<PfConceptKey, C> getNavigableConceptMap() { + return new TreeMap<>(conceptMap); } /** @@ -386,4 +394,4 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex + keyFieldValue + " does not match the value " + conceptField + " in the concept field"); } } -} +}
\ No newline at end of file |