Return latest entity on null versions 54/103854/1
authorliamfallon <liam.fallon@est.tech>
Wed, 18 Mar 2020 11:47:20 +0000 (11:47 +0000)
committerliamfallon <liam.fallon@est.tech>
Wed, 18 Mar 2020 11:47:23 +0000 (11:47 +0000)
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 <liam.fallon@est.tech>
models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java
models-base/src/main/java/org/onap/policy/models/base/PfConceptGetterImpl.java
models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java

index 1c1e461..b4d51d1 100644 (file)
@@ -300,7 +300,11 @@ public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> ex
 
     @Override
     public C get(final PfConceptKey conceptKey) {
-        return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKey);
+        if (conceptKey.isNullVersion()) {
+            return get(conceptKey.getName());
+        } else {
+            return new PfConceptGetterImpl<>((NavigableMap<PfConceptKey, C>) conceptMap).get(conceptKey);
+        }
     }
 
     @Override
index c641a80..033a7dd 100644 (file)
@@ -55,7 +55,7 @@ public class PfConceptGetterImpl<C> implements PfConceptGetter<C> {
         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);
index 35ec95b..2f36f9a 100644 (file)
@@ -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();
     }