Revert "Remove trust level entries from cache when cm handles deleted"

This reverts commit 77b8e25e14e698c853334ef57459c21d7813911a.

Reason for revert: Performance degredation 

Change-Id: Ibd88e626189d821680568c63952b95e7d1e05dc4
Signed-off-by: emaclee <lee.anjella.macabuhay@est.tech>
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java
index 6f51a8d..794bc23 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/NetworkCmProxyInventoryFacade.java
@@ -36,6 +36,7 @@
 import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistration;
 import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistrationResponse;
 import org.onap.cps.ncmp.api.inventory.models.NcmpServiceCmHandle;
+import org.onap.cps.ncmp.api.inventory.models.TrustLevel;
 import org.onap.cps.ncmp.impl.inventory.CmHandleQueryService;
 import org.onap.cps.ncmp.impl.inventory.CmHandleRegistrationService;
 import org.onap.cps.ncmp.impl.inventory.InventoryPersistence;
@@ -43,11 +44,12 @@
 import org.onap.cps.ncmp.impl.inventory.models.CmHandleQueryConditions;
 import org.onap.cps.ncmp.impl.inventory.models.InventoryQueryConditions;
 import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle;
-import org.onap.cps.ncmp.impl.inventory.trustlevel.TrustLevelManager;
+import org.onap.cps.ncmp.impl.inventory.trustlevel.TrustLevelCacheConfig;
 import org.onap.cps.ncmp.impl.utils.YangDataConverter;
 import org.onap.cps.spi.model.ModuleDefinition;
 import org.onap.cps.spi.model.ModuleReference;
 import org.onap.cps.utils.JsonObjectMapper;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 @Slf4j
@@ -60,7 +62,9 @@
     private final ParameterizedCmHandleQueryService parameterizedCmHandleQueryService;
     private final InventoryPersistence inventoryPersistence;
     private final JsonObjectMapper jsonObjectMapper;
-    private final TrustLevelManager trustLevelManager;
+
+    @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_CM_HANDLE)
+    private final Map<String, TrustLevel> trustLevelPerCmHandle;
 
     /**
      * Registration of Created, Removed, Updated or Upgraded CM Handles.
@@ -68,6 +72,7 @@
      * @param dmiPluginRegistration Dmi Plugin Registration details
      * @return dmiPluginRegistrationResponse
      */
+
     public DmiPluginRegistrationResponse updateDmiRegistrationAndSyncModule(
         final DmiPluginRegistration dmiPluginRegistration) {
         return cmHandleRegistrationService.updateDmiRegistrationAndSyncModule(dmiPluginRegistration);
@@ -206,8 +211,7 @@
     }
 
     private void applyCurrentTrustLevel(final NcmpServiceCmHandle ncmpServiceCmHandle) {
-        ncmpServiceCmHandle.setCurrentTrustLevel(trustLevelManager
-            .getEffectiveTrustLevel(ncmpServiceCmHandle.getCmHandleId()));
+        ncmpServiceCmHandle.setCurrentTrustLevel(trustLevelPerCmHandle.get(ncmpServiceCmHandle.getCmHandleId()));
     }
 
 
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationService.java
index d9f7e38..d6ddd10 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationService.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationService.java
@@ -37,7 +37,6 @@
 import java.time.OffsetDateTime;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -59,11 +58,13 @@
 import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle;
 import org.onap.cps.ncmp.impl.inventory.sync.ModuleOperationsUtils;
 import org.onap.cps.ncmp.impl.inventory.sync.lcm.LcmEventsCmHandleStateHandler;
+import org.onap.cps.ncmp.impl.inventory.trustlevel.TrustLevelCacheConfig;
 import org.onap.cps.ncmp.impl.inventory.trustlevel.TrustLevelManager;
 import org.onap.cps.spi.exceptions.AlreadyDefinedException;
 import org.onap.cps.spi.exceptions.CpsException;
 import org.onap.cps.spi.exceptions.DataNodeNotFoundException;
 import org.onap.cps.spi.exceptions.DataValidationException;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 @Slf4j
@@ -78,7 +79,11 @@
     private final CpsDataService cpsDataService;
     private final LcmEventsCmHandleStateHandler lcmEventsCmHandleStateHandler;
     private final IMap<String, Object> moduleSyncStartedOnCmHandles;
+
+    @Qualifier(TrustLevelCacheConfig.TRUST_LEVEL_PER_DMI_PLUGIN)
+    private final Map<String, TrustLevel> trustLevelPerDmiPlugin;
     private final TrustLevelManager trustLevelManager;
+
     private final AlternateIdChecker alternateIdChecker;
 
     /**
@@ -93,7 +98,7 @@
         dmiPluginRegistration.validateDmiPluginRegistration();
         final DmiPluginRegistrationResponse dmiPluginRegistrationResponse = new DmiPluginRegistrationResponse();
 
-        trustLevelManager.registerDmiPlugin(dmiPluginRegistration);
+        setTrustLevelPerDmiPlugin(dmiPluginRegistration);
 
         processRemovedCmHandles(dmiPluginRegistration, dmiPluginRegistrationResponse);
 
@@ -148,7 +153,7 @@
         final Set<String> notDeletedCmHandles = new HashSet<>();
         for (final List<String> tobeRemovedCmHandleBatch : Lists.partition(tobeRemovedCmHandleIds, DELETE_BATCH_SIZE)) {
             try {
-                batchDeleteCmHandlesFromDbAndCaches(tobeRemovedCmHandleBatch);
+                batchDeleteCmHandlesFromDbAndModuleSyncMap(tobeRemovedCmHandleBatch);
                 tobeRemovedCmHandleBatch.forEach(cmHandleId ->
                     cmHandleRegistrationResponses.add(CmHandleRegistrationResponse.createSuccessResponse(cmHandleId)));
 
@@ -254,7 +259,7 @@
                     ncmpServiceCmHandle.getRegistrationTrustLevel());
             }
         }
-        trustLevelManager.registerCmHandles(initialTrustLevelPerCmHandleId);
+        trustLevelManager.handleInitialRegistrationOfTrustLevels(initialTrustLevelPerCmHandleId);
     }
 
     private static boolean moduleUpgradeCanBeSkipped(final YangModelCmHandle yangModelCmHandle,
@@ -275,7 +280,7 @@
 
     private CmHandleRegistrationResponse deleteCmHandleAndGetCmHandleRegistrationResponse(final String cmHandleId) {
         try {
-            deleteCmHandleFromDbAndCaches(cmHandleId);
+            deleteCmHandleFromDbAndModuleSyncMap(cmHandleId);
             return CmHandleRegistrationResponse.createSuccessResponse(cmHandleId);
         } catch (final DataNodeNotFoundException dataNodeNotFoundException) {
             log.error("Unable to find dataNode for cmHandleId : {} , caused by : {}",
@@ -298,17 +303,15 @@
         lcmEventsCmHandleStateHandler.updateCmHandleStateBatch(cmHandleStatePerCmHandle);
     }
 
-    private void deleteCmHandleFromDbAndCaches(final String cmHandleId) {
+    private void deleteCmHandleFromDbAndModuleSyncMap(final String cmHandleId) {
         inventoryPersistence.deleteSchemaSetWithCascade(cmHandleId);
         inventoryPersistence.deleteDataNode(NCMP_DMI_REGISTRY_PARENT + "/cm-handles[@id='" + cmHandleId + "']");
-        trustLevelManager.removeCmHandles(Collections.singleton(cmHandleId));
         removeDeletedCmHandleFromModuleSyncMap(cmHandleId);
     }
 
-    private void batchDeleteCmHandlesFromDbAndCaches(final Collection<String> cmHandleIds) {
+    private void batchDeleteCmHandlesFromDbAndModuleSyncMap(final Collection<String> cmHandleIds) {
         inventoryPersistence.deleteSchemaSetsWithCascade(cmHandleIds);
         inventoryPersistence.deleteDataNodes(mapCmHandleIdsToXpaths(cmHandleIds));
-        trustLevelManager.removeCmHandles(cmHandleIds);
         cmHandleIds.forEach(this::removeDeletedCmHandleFromModuleSyncMap);
     }
 
@@ -342,6 +345,14 @@
         return cmHandleStatePerCmHandle.keySet().stream().map(YangModelCmHandle::getId).toList();
     }
 
+    private void setTrustLevelPerDmiPlugin(final DmiPluginRegistration dmiPluginRegistration) {
+        if (DmiPluginRegistration.isNullEmptyOrBlank(dmiPluginRegistration.getDmiDataPlugin())) {
+            trustLevelPerDmiPlugin.put(dmiPluginRegistration.getDmiPlugin(), TrustLevel.COMPLETE);
+        } else {
+            trustLevelPerDmiPlugin.put(dmiPluginRegistration.getDmiDataPlugin(), TrustLevel.COMPLETE);
+        }
+    }
+
     private Collection<String> checkAlternateIds(
         final List<NcmpServiceCmHandle> cmHandlesToBeCreated,
         final List<CmHandleRegistrationResponse> cmHandleRegistrationResponses) {
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumer.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumer.java
index efcbb78..617fe7f 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumer.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumer.java
@@ -52,7 +52,7 @@
         final DeviceTrustLevel deviceTrustLevel =
             CloudEventMapper.toTargetEvent(consumerRecord.value(), DeviceTrustLevel.class);
         final String trustLevelAsString = deviceTrustLevel.getData().getTrustLevel();
-        trustLevelManager.updateCmHandleTrustLevel(cmHandleId, TrustLevel.valueOf(trustLevelAsString));
+        trustLevelManager.handleUpdateOfDeviceTrustLevel(cmHandleId, TrustLevel.valueOf(trustLevelAsString));
     }
 
 }
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDog.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDog.java
index 94e493d..c81e9b7 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDog.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDog.java
@@ -67,7 +67,7 @@
             } else {
                 final Collection<String> cmHandleIds =
                     cmHandleQueryService.getCmHandleIdsByDmiPluginIdentifier(dmiServiceName);
-                trustLevelManager.updateDmi(dmiServiceName, cmHandleIds, newDmiTrustLevel);
+                trustLevelManager.handleUpdateOfDmiTrustLevel(dmiServiceName, cmHandleIds, newDmiTrustLevel);
             }
         });
     }
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java
index 50f97a0..44079c0 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManager.java
@@ -24,7 +24,6 @@
 import java.util.Map;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistration;
 import org.onap.cps.ncmp.api.inventory.models.TrustLevel;
 import org.onap.cps.ncmp.impl.inventory.InventoryPersistence;
 import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle;
@@ -50,26 +49,11 @@
     private static final String AVC_NO_OLD_VALUE = null;
 
     /**
-     * Add dmi plugins to the cache.
-     *
-     * @param dmiPluginRegistration a dmi plugin being registered
-     */
-    public void registerDmiPlugin(final DmiPluginRegistration dmiPluginRegistration) {
-        final String dmiServiceName;
-        if (DmiPluginRegistration.isNullEmptyOrBlank(dmiPluginRegistration.getDmiDataPlugin())) {
-            dmiServiceName = dmiPluginRegistration.getDmiPlugin();
-        } else {
-            dmiServiceName = dmiPluginRegistration.getDmiDataPlugin();
-        }
-        trustLevelPerDmiPlugin.put(dmiServiceName, TrustLevel.COMPLETE);
-    }
-
-    /**
      * Add cmHandles to the cache and publish notification for initial trust level of cmHandles if it is NONE.
      *
      * @param cmHandlesToBeCreated a list of cmHandles being created
      */
-    public void registerCmHandles(final Map<String, TrustLevel> cmHandlesToBeCreated) {
+    public void handleInitialRegistrationOfTrustLevels(final Map<String, TrustLevel> cmHandlesToBeCreated) {
         for (final Map.Entry<String, TrustLevel> entry : cmHandlesToBeCreated.entrySet()) {
             final String cmHandleId = entry.getKey();
             if (trustLevelPerCmHandle.containsKey(cmHandleId)) {
@@ -98,15 +82,15 @@
      * @param affectedCmHandleIds   cm handle ids belonging to dmi service name
      * @param newDmiTrustLevel      new trust level of the dmi plugin
      */
-    public void updateDmi(final String dmiServiceName,
-                          final Collection<String> affectedCmHandleIds,
-                          final TrustLevel newDmiTrustLevel) {
+    public void handleUpdateOfDmiTrustLevel(final String dmiServiceName,
+                                            final Collection<String> affectedCmHandleIds,
+                                            final TrustLevel newDmiTrustLevel) {
         final TrustLevel oldDmiTrustLevel  = trustLevelPerDmiPlugin.get(dmiServiceName);
         trustLevelPerDmiPlugin.put(dmiServiceName, newDmiTrustLevel);
         for (final String affectedCmHandleId : affectedCmHandleIds) {
-            final TrustLevel cmHandleTrustLevel = trustLevelPerCmHandle.get(affectedCmHandleId);
-            final TrustLevel oldEffectiveTrustLevel = cmHandleTrustLevel.getEffectiveTrustLevel(oldDmiTrustLevel);
-            final TrustLevel newEffectiveTrustLevel = cmHandleTrustLevel.getEffectiveTrustLevel(newDmiTrustLevel);
+            final TrustLevel deviceTrustLevel = trustLevelPerCmHandle.get(affectedCmHandleId);
+            final TrustLevel oldEffectiveTrustLevel = deviceTrustLevel.getEffectiveTrustLevel(oldDmiTrustLevel);
+            final TrustLevel newEffectiveTrustLevel = deviceTrustLevel.getEffectiveTrustLevel(newDmiTrustLevel);
             sendAvcNotificationIfRequired(affectedCmHandleId, oldEffectiveTrustLevel, newEffectiveTrustLevel);
         }
     }
@@ -116,55 +100,21 @@
      * changed.
      *
      * @param cmHandleId            cm handle id
-     * @param newCmHandleTrustLevel   new trust level of the device
+     * @param newDeviceTrustLevel   new trust level of the device
      */
-    public void updateCmHandleTrustLevel(final String cmHandleId,
-                                         final TrustLevel newCmHandleTrustLevel) {
-        final String dmiServiceName = getDmiServiceName(cmHandleId);
-
-        final TrustLevel dmiTrustLevel = trustLevelPerDmiPlugin.get(dmiServiceName);
-        final TrustLevel oldCmHandleTrustLevel = trustLevelPerCmHandle.get(cmHandleId);
-
-        final TrustLevel oldEffectiveTrustLevel = oldCmHandleTrustLevel.getEffectiveTrustLevel(dmiTrustLevel);
-        final TrustLevel newEffectiveTrustLevel = newCmHandleTrustLevel.getEffectiveTrustLevel(dmiTrustLevel);
-
-        trustLevelPerCmHandle.put(cmHandleId, newCmHandleTrustLevel);
-        sendAvcNotificationIfRequired(cmHandleId, oldEffectiveTrustLevel, newEffectiveTrustLevel);
-    }
-
-    /**
-     * Select effective trust level among device and dmi plugin.
-     *
-     * @param cmHandleId        cm handle id
-     * @return TrustLevel       effective trust level
-     */
-    public TrustLevel getEffectiveTrustLevel(final String cmHandleId) {
-        final String dmiServiceName = getDmiServiceName(cmHandleId);
-        final TrustLevel dmiTrustLevel = trustLevelPerDmiPlugin.get(dmiServiceName);
-        final TrustLevel cmHandleTrustLevel = trustLevelPerCmHandle.get(cmHandleId);
-        return dmiTrustLevel.getEffectiveTrustLevel(cmHandleTrustLevel);
-    }
-
-    /**
-     * Remove cm handle trust level from the cache and publish notification for trust level of cmHandles
-     * if it is COMPLETE.
-     *
-     * @param cmHandleIds       cm handle ids to be removed from the cache
-     */
-    public void removeCmHandles(final Collection<String> cmHandleIds) {
-        for (final String cmHandleId : cmHandleIds) {
-            if (trustLevelPerCmHandle.containsKey(cmHandleId)) {
-                final TrustLevel oldTrustLevel = trustLevelPerCmHandle.remove(cmHandleId);
-                sendAvcNotificationIfRequired(cmHandleId, oldTrustLevel, TrustLevel.NONE);
-            } else {
-                log.debug("Removed Cm handle: {} is not in trust level cache", cmHandleId);
-            }
-        }
-    }
-
-    private String getDmiServiceName(final String cmHandleId) {
+    public void handleUpdateOfDeviceTrustLevel(final String cmHandleId,
+                                               final TrustLevel newDeviceTrustLevel) {
         final YangModelCmHandle yangModelCmHandle = inventoryPersistence.getYangModelCmHandle(cmHandleId);
-        return yangModelCmHandle.resolveDmiServiceName(RequiredDmiService.DATA);
+        final String dmiServiceName = yangModelCmHandle.resolveDmiServiceName(RequiredDmiService.DATA);
+
+        final TrustLevel dmiTrustLevel = trustLevelPerDmiPlugin.get(dmiServiceName);
+        final TrustLevel oldDeviceTrustLevel = trustLevelPerCmHandle.get(cmHandleId);
+
+        final TrustLevel oldEffectiveTrustLevel = oldDeviceTrustLevel.getEffectiveTrustLevel(dmiTrustLevel);
+        final TrustLevel newEffectiveTrustLevel = newDeviceTrustLevel.getEffectiveTrustLevel(dmiTrustLevel);
+
+        trustLevelPerCmHandle.put(cmHandleId, newDeviceTrustLevel);
+        sendAvcNotificationIfRequired(cmHandleId, oldEffectiveTrustLevel, newEffectiveTrustLevel);
     }
 
     private void sendAvcNotificationIfRequired(final String notificationCandidateCmHandleId,
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationServiceSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationServiceSpec.groovy
index dcff2e9..0c702ab 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationServiceSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/CmHandleRegistrationServiceSpec.groovy
@@ -59,12 +59,13 @@
     def mockLcmEventsCmHandleStateHandler = Mock(LcmEventsCmHandleStateHandler)
     def mockCpsDataService = Mock(CpsDataService)
     def mockModuleSyncStartedOnCmHandles = Mock(IMap<String, Object>)
+    def trustLevelPerDmiPlugin = [:]
     def mockTrustLevelManager = Mock(TrustLevelManager)
     def mockAlternateIdChecker = Mock(AlternateIdChecker)
 
     def objectUnderTest = Spy(new CmHandleRegistrationService(
         mockNetworkCmProxyDataServicePropertyHandler, mockInventoryPersistence, mockCpsDataService, mockLcmEventsCmHandleStateHandler,
-        mockModuleSyncStartedOnCmHandles, mockTrustLevelManager, mockAlternateIdChecker))
+        mockModuleSyncStartedOnCmHandles, trustLevelPerDmiPlugin , mockTrustLevelManager, mockAlternateIdChecker))
 
     def setup() {
         // always accept all cm handles
@@ -142,6 +143,9 @@
             objectUnderTest.updateDmiRegistrationAndSyncModule(dmiPluginRegistration)
         then: 'create cm handles registration and sync modules is called with the correct plugin information'
             1 * objectUnderTest.processCreatedCmHandles(dmiPluginRegistration, _)
+        and: 'dmi is added to the dmi trustLevel map'
+            assert trustLevelPerDmiPlugin.size() == 1
+            assert trustLevelPerDmiPlugin.containsKey(expectedDmiPluginRegisteredName)
         where:
             scenario                          | dmiPlugin  | dmiModelPlugin | dmiDataPlugin || expectedDmiPluginRegisteredName
             'combined DMI plugin'             | 'service1' | ''             | ''            || 'service1'
@@ -208,7 +212,7 @@
         when: 'registration is updated'
             objectUnderTest.updateDmiRegistrationAndSyncModule(dmiPluginRegistration)
         then: 'trustLevel is set for the created cm-handle'
-            1 * mockTrustLevelManager.registerCmHandles(expectedMapping)
+            1 * mockTrustLevelManager.handleInitialRegistrationOfTrustLevels(expectedMapping)
         where:
             scenario                 | registrationTrustLevel || expectedMapping
             'with trusted cm handle' | TrustLevel.COMPLETE    || [ 'ch-1' : TrustLevel.COMPLETE ]
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy
index 739b2e8..716efd8 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/NetworkCmProxyInventoryFacadeSpec.groovy
@@ -35,7 +35,6 @@
 import org.onap.cps.ncmp.impl.inventory.models.CmHandleState
 import org.onap.cps.ncmp.impl.inventory.models.LockReasonCategory
 import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle
-import org.onap.cps.ncmp.impl.inventory.trustlevel.TrustLevelManager
 import org.onap.cps.spi.model.ConditionProperties
 import org.onap.cps.utils.JsonObjectMapper
 import spock.lang.Specification
@@ -47,9 +46,9 @@
     def mockParameterizedCmHandleQueryService = Mock(ParameterizedCmHandleQueryService)
     def spiedJsonObjectMapper = Spy(new JsonObjectMapper(new ObjectMapper()))
     def mockInventoryPersistence = Mock(InventoryPersistence)
-    def mockTrustLevelManager = Mock(TrustLevelManager)
+    def trustLevelPerCmHandle = [:]
 
-    def objectUnderTest = new NetworkCmProxyInventoryFacade(mockCmHandleRegistrationService, mockCmHandleQueryService, mockParameterizedCmHandleQueryService, mockInventoryPersistence, spiedJsonObjectMapper, mockTrustLevelManager)
+    def objectUnderTest = new NetworkCmProxyInventoryFacade(mockCmHandleRegistrationService, mockCmHandleQueryService, mockParameterizedCmHandleQueryService, mockInventoryPersistence, spiedJsonObjectMapper, trustLevelPerCmHandle)
 
     def 'Update DMI Registration'() {
         given: 'an (updated) dmi plugin registration'
@@ -111,7 +110,7 @@
                  publicProperties: publicProperties, compositeState: compositeState, moduleSetTag: moduleSetTag, alternateId: alternateId)
             1 * mockInventoryPersistence.getYangModelCmHandle('ch-1') >> yangModelCmHandle
         and: 'a trust level for the cm handle in the cache'
-            mockTrustLevelManager.getEffectiveTrustLevel('ch-1') >> TrustLevel.COMPLETE
+            trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
         when: 'getting cm handle details for a given cm handle id from ncmp service'
             def result = objectUnderTest.getNcmpServiceCmHandle('ch-1')
         then: 'the result is a ncmpServiceCmHandle'
@@ -206,7 +205,7 @@
                 spiedJsonObjectMapper.convertToValueType(cmHandleQueryApiParameters, CmHandleQueryServiceParameters.class))
                 >> [new NcmpServiceCmHandle(cmHandleId: 'ch-0'), new NcmpServiceCmHandle(cmHandleId: 'ch-1')]
         and: ' a trust level for ch-1'
-            mockTrustLevelManager.getEffectiveTrustLevel('ch-1') >> TrustLevel.COMPLETE
+            trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
         when: 'execute cm handle search is called'
             def result = objectUnderTest.executeCmHandleSearch(cmHandleQueryApiParameters)
         then: 'result consists of the two cm handles returned by the CPS Data Service'
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumerSpec.groovy
index c7d0616..6db304a 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DeviceTrustLevelMessageConsumerSpec.groovy
@@ -49,7 +49,7 @@
         when: 'the event is consumed'
             objectUnderTest.deviceTrustLevelListener(consumerRecord)
         then: 'cm handles are stored with correct trust level'
-            1 * mockTrustLevelManager.updateCmHandleTrustLevel('"ch-1"', TrustLevel.COMPLETE)
+            1 * mockTrustLevelManager.handleUpdateOfDeviceTrustLevel('"ch-1"', TrustLevel.COMPLETE)
     }
 
     def createTrustLevelEvent(eventPayload) {
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDogSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDogSpec.groovy
index d4c1f54..0a34d26 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDogSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/DmiPluginTrustLevelWatchDogSpec.groovy
@@ -46,7 +46,7 @@
         when: 'dmi watch dog method runs'
             objectUnderTest.checkDmiAvailability()
         then: 'the update delegated to manager'
-            numberOfCalls * mockTrustLevelManager.updateDmi('dmi-1', _, newDmiTrustLevel)
+            numberOfCalls * mockTrustLevelManager.handleUpdateOfDmiTrustLevel('dmi-1', _, newDmiTrustLevel)
         where: 'the following parameters are used'
             dmiHealhStatus | dmiOldTrustLevel    | newDmiTrustLevel    || numberOfCalls
             'UP'           | TrustLevel.COMPLETE | TrustLevel.COMPLETE || 0
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy
index b017c8b..b5bfbc1 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelManagerSpec.groovy
@@ -20,7 +20,6 @@
 
 package org.onap.cps.ncmp.impl.inventory.trustlevel
 
-import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistration
 import org.onap.cps.ncmp.api.inventory.models.TrustLevel
 import org.onap.cps.ncmp.impl.inventory.InventoryPersistence
 import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle
@@ -36,20 +35,11 @@
     def mockAttributeValueChangeEventPublisher = Mock(CmAvcEventPublisher)
     def objectUnderTest = new TrustLevelManager(trustLevelPerCmHandle, trustLevelPerDmiPlugin, mockInventoryPersistence, mockAttributeValueChangeEventPublisher)
 
-    def 'Initial dmi registration'() {
-        given: 'a dmi plugin'
-            def dmiPluginRegistration = new DmiPluginRegistration(dmiPlugin: 'dmi-1')
-        when: 'method to register to the cache is called'
-            objectUnderTest.registerDmiPlugin(dmiPluginRegistration)
-        then: 'dmi plugin in the cache and trusted'
-            assert trustLevelPerDmiPlugin.get('dmi-1') == TrustLevel.COMPLETE
-    }
-
     def 'Initial cm handle registration'() {
         given: 'two cm handles: one with no trust level and one trusted'
             def cmHandleModelsToBeCreated = ['ch-1': null, 'ch-2': TrustLevel.COMPLETE]
-        when: 'method to register to the cache is called'
-            objectUnderTest.registerCmHandles(cmHandleModelsToBeCreated)
+        when: 'the initial registration handled'
+            objectUnderTest.handleInitialRegistrationOfTrustLevels(cmHandleModelsToBeCreated)
         then: 'no notification sent'
             0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_)
         and: 'both cm handles are in the cache and are trusted'
@@ -60,8 +50,8 @@
     def 'Initial cm handle registration with a cm handle that is not trusted'() {
         given: 'a not trusted cm handle'
             def cmHandleModelsToBeCreated = ['ch-2': TrustLevel.NONE]
-        when: 'method to register to the cache is called'
-            objectUnderTest.registerCmHandles(cmHandleModelsToBeCreated)
+        when: 'the initial registration handled'
+            objectUnderTest.handleInitialRegistrationOfTrustLevels(cmHandleModelsToBeCreated)
         then: 'notification is sent'
             1 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_)
     }
@@ -72,7 +62,7 @@
         and: 'a trusted cm handle'
             trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
         when: 'the update is handled'
-            objectUnderTest.updateDmi('my-dmi', ['ch-1'], TrustLevel.NONE)
+            objectUnderTest.handleUpdateOfDmiTrustLevel('my-dmi', ['ch-1'], TrustLevel.NONE)
         then: 'notification is sent'
             1 * mockAttributeValueChangeEventPublisher.publishAvcEvent('ch-1', 'trustLevel', 'COMPLETE', 'NONE')
         and: 'the dmi in the cache is not trusted'
@@ -85,89 +75,54 @@
         and: 'a trusted cm handle'
             trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
         when: 'the update is handled'
-            objectUnderTest.updateDmi('my-dmi', ['ch-1'], TrustLevel.COMPLETE)
+            objectUnderTest.handleUpdateOfDmiTrustLevel('my-dmi', ['ch-1'], TrustLevel.COMPLETE)
         then: 'no notification is sent'
             0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_)
         and: 'the dmi in the cache is trusted'
             assert trustLevelPerDmiPlugin.get('my-dmi') == TrustLevel.COMPLETE
     }
 
-    def 'CmHandle trust level updated'() {
+    def 'Device trust level updated'() {
         given: 'a non trusted cm handle'
             trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE)
         and: 'a trusted dmi plugin'
             trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.COMPLETE)
         and: 'inventory persistence service returns yang model cm handle'
             mockInventoryPersistence.getYangModelCmHandle('ch-1') >> new YangModelCmHandle(id: 'ch-1', dmiDataServiceName: 'my-dmi')
-        when: 'update of CmHandle to COMPLETE trust level handled'
-            objectUnderTest.updateCmHandleTrustLevel('ch-1', TrustLevel.COMPLETE)
+        when: 'update of device to COMPLETE trust level handled'
+            objectUnderTest.handleUpdateOfDeviceTrustLevel('ch-1', TrustLevel.COMPLETE)
         then: 'the cm handle in the cache is trusted'
             assert trustLevelPerCmHandle.get('ch-1', TrustLevel.COMPLETE)
         and: 'notification is sent'
             1 * mockAttributeValueChangeEventPublisher.publishAvcEvent('ch-1', 'trustLevel', 'NONE', 'COMPLETE')
     }
 
-    def 'CmHandle trust level updated with same value'() {
+    def 'Device trust level updated with same value'() {
         given: 'a non trusted cm handle'
             trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE)
         and: 'a trusted dmi plugin'
             trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.COMPLETE)
         and: 'inventory persistence service returns yang model cm handle'
             mockInventoryPersistence.getYangModelCmHandle('ch-1') >> new YangModelCmHandle(id: 'ch-1', dmiDataServiceName: 'my-dmi')
-        when: 'update of CmHandle trust to the same level (NONE)'
-            objectUnderTest.updateCmHandleTrustLevel('ch-1', TrustLevel.NONE)
+        when: 'update of device trust to the same level (NONE)'
+            objectUnderTest.handleUpdateOfDeviceTrustLevel('ch-1', TrustLevel.NONE)
         then: 'the cm handle in the cache is not trusted'
             assert trustLevelPerCmHandle.get('ch-1', TrustLevel.NONE)
         and: 'no notification is sent'
             0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_)
     }
 
-    def 'Dmi trust level restored to complete with non trusted CmHandle'() {
+    def 'Dmi trust level restored to complete with non trusted device'() {
         given: 'a non trusted dmi'
             trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.NONE)
-        and: 'a non trusted CmHandle'
+        and: 'a non trusted device'
             trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE)
         when: 'restore the dmi trust level to COMPLETE'
-            objectUnderTest.updateDmi('my-dmi', ['ch-1'], TrustLevel.COMPLETE)
+            objectUnderTest.handleUpdateOfDmiTrustLevel('my-dmi', ['ch-1'], TrustLevel.COMPLETE)
         then: 'the cm handle in the cache is still NONE'
             assert trustLevelPerCmHandle.get('ch-1') == TrustLevel.NONE
         and: 'no notification is sent'
             0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_)
     }
 
-    def 'Select effective trust level among CmHandle and dmi plugin'() {
-        given: 'a non trusted dmi'
-            trustLevelPerDmiPlugin.put('my-dmi', TrustLevel.NONE)
-        and: 'a trusted CmHandle'
-            trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
-        and: 'inventory persistence service returns yang model cm handle'
-            mockInventoryPersistence.getYangModelCmHandle('ch-1') >> new YangModelCmHandle(id: 'ch-1', dmiDataServiceName: 'my-dmi')
-        when: 'effective trust level selected'
-            def effectiveTrustLevel = objectUnderTest.getEffectiveTrustLevel('ch-1')
-        then: 'effective trust level is not trusted'
-            assert effectiveTrustLevel == TrustLevel.NONE
-    }
-
-    def 'CmHandle trust level (COMPLETE) removed'() {
-        given: 'a trusted cm handle'
-            trustLevelPerCmHandle.put('ch-1', TrustLevel.COMPLETE)
-        when: 'the remove is handled'
-            objectUnderTest.removeCmHandles(['ch-1'])
-        then: 'cm handle removed from the cache'
-            assert trustLevelPerCmHandle.get('ch-1') == null
-        and: 'notification is sent'
-            1 * mockAttributeValueChangeEventPublisher.publishAvcEvent(_,'trustLevel','COMPLETE','NONE')
-    }
-
-    def 'CmHandle trust level (NONE) removed'() {
-        given: 'a non-trusted cm handle'
-            trustLevelPerCmHandle.put('ch-1', TrustLevel.NONE)
-        when: 'the remove is handled'
-            objectUnderTest.removeCmHandles(['ch-1'])
-        then: 'cm handle removed from the cache'
-            assert trustLevelPerCmHandle.get('ch-1') == null
-        and: 'no notification is sent'
-            0 * mockAttributeValueChangeEventPublisher.publishAvcEvent(*_)
-    }
-
 }
diff --git a/csit/tests/cps-trust-level/cps-trust-level.robot b/csit/tests/cps-trust-level/cps-trust-level.robot
index 4db0115..e4deeff 100644
--- a/csit/tests/cps-trust-level/cps-trust-level.robot
+++ b/csit/tests/cps-trust-level/cps-trust-level.robot
@@ -36,7 +36,7 @@
 ${dmiUrl}                                   http://${DMI_HOST}:${DMI_PORT}
 ${jsonCreateCmHandles}                      {"dmiPlugin":"${dmiUrl}","dmiDataPlugin":"","dmiModelPlugin":"","createdCmHandles":[{"trustLevel":"COMPLETE","cmHandle":"CH-1"},{"trustLevel":"COMPLETE","cmHandle":"CH-2"},{"cmHandle":"CH-3"},{"trustLevel":"NONE","cmHandle":"CH-4"}]}
 ${jsonTrustLevelPropertyQueryParameters}    {"cmHandleQueryParameters": [{"conditionName": "cmHandleWithTrustLevel", "conditionParameters": [ {"trustLevel": "COMPLETE"} ] }]}
-${jsonTrustLevelEventPayload}               {"data":{"attributeValueChange":[{"attributeName":"trustLevel","oldAttributeValue":"COMPLETE","newAttributeValue":"NONE"}]}}
+${jsonTrustLevelQueryResponse}              {"data":{"attributeValueChange":[{"attributeName":"trustLevel","newAttributeValue":"NONE"}]}}
 
 *** Test Cases ***
 Register data node
@@ -55,9 +55,9 @@
         Compare Header Values       ${header_key_value_pair[0]}   ${header_key_value_pair[1]}     "ce_specversion"      "1.0"
         Compare Header Values       ${header_key_value_pair[0]}   ${header_key_value_pair[1]}     "ce_source"           "NCMP"
         Compare Header Values       ${header_key_value_pair[0]}   ${header_key_value_pair[1]}     "ce_type"             "org.onap.cps.ncmp.events.avc.ncmp_to_client.AvcEvent"
-        Compare Header Values       ${header_key_value_pair[0]}   ${header_key_value_pair[1]}     "ce_correlationid"    "CmHandleForDelete"
+        Compare Header Values       ${header_key_value_pair[0]}   ${header_key_value_pair[1]}     "ce_correlationid"    "CH-4"
     END
-    Should Be Equal As Strings      ${payload}    ${jsonTrustLevelEventPayload}
+    Should Be Equal As Strings      ${payload}    ${jsonTrustLevelQueryResponse}
     [Teardown]    Basic Teardown    ${group_id}
 
 Retrieve CM Handle ids where query parameters Match (trust level query)