From f98830a4ba01188538ca0b001143f7b573ecde77 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Wed, 18 Mar 2020 11:47:20 +0000 Subject: [PATCH] Return latest entity on null versions This review amends the behaviour of "get" operations on entities to always return the latest version of an entity when the version of the search key is the null key (value of 0.0.0). Issue-ID: POLICY-2377 Change-Id: I4f7c12637c90bc1a83ce2ba5ef40e15b461a7d51 Signed-off-by: liamfallon --- .../java/org/onap/policy/models/base/PfConceptContainer.java | 6 +++++- .../java/org/onap/policy/models/base/PfConceptGetterImpl.java | 2 +- .../models/provider/revisionhierarchy/HierarchyFetchTest.java | 9 ++++----- 3 files changed, 10 insertions(+), 7 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 1c1e4613e..b4d51d173 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 @@ -300,7 +300,11 @@ public class PfConceptContainer ex @Override public C get(final PfConceptKey conceptKey) { - return new PfConceptGetterImpl<>((NavigableMap) conceptMap).get(conceptKey); + if (conceptKey.isNullVersion()) { + return get(conceptKey.getName()); + } else { + return new PfConceptGetterImpl<>((NavigableMap) conceptMap).get(conceptKey); + } } @Override diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfConceptGetterImpl.java b/models-base/src/main/java/org/onap/policy/models/base/PfConceptGetterImpl.java index c641a8035..033a7ddb2 100644 --- a/models-base/src/main/java/org/onap/policy/models/base/PfConceptGetterImpl.java +++ b/models-base/src/main/java/org/onap/policy/models/base/PfConceptGetterImpl.java @@ -55,7 +55,7 @@ public class PfConceptGetterImpl implements PfConceptGetter { Assertions.argumentNotNull(conceptKeyName, "conceptKeyName may not be null"); // The very fist key that could have this name - final PfConceptKey lowestArtifactKey = new PfConceptKey(conceptKeyName, "0.0.1"); + final PfConceptKey lowestArtifactKey = new PfConceptKey(conceptKeyName, PfKey.NULL_KEY_VERSION); // Check if we found a key for our name PfConceptKey foundKey = conceptMap.ceilingKey(lowestArtifactKey); diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java index 35ec95b45..2f36f9a3c 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java @@ -20,7 +20,7 @@ package org.onap.policy.models.provider.revisionhierarchy; -import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.assertj.core.api.Assertions.assertThatCode; import java.util.Base64; @@ -28,7 +28,6 @@ import org.junit.BeforeClass; import org.junit.Test; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.common.utils.resources.TextFileUtils; -import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.provider.PolicyModelsProviderFactory; import org.onap.policy.models.provider.PolicyModelsProviderParameters; @@ -49,7 +48,7 @@ public class HierarchyFetchTest { } @Test - public void testInitAndClose() throws Exception { + public void testMultipleVersions() throws Exception { PolicyModelsProvider databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters); @@ -58,9 +57,9 @@ public class HierarchyFetchTest { .getTextFileAsString("src/test/resources/servicetemplates/MultipleRevisionServiceTemplate.yaml"), ToscaServiceTemplate.class); - assertThatThrownBy(() -> { + assertThatCode(() -> { databaseProvider.createPolicies(serviceTemplate); - }).isInstanceOf(PfModelRuntimeException.class); + }).doesNotThrowAnyException(); databaseProvider.close(); } -- 2.16.6