diff options
Diffstat (limited to 'plans/so/integration-etsi-testing/so-simulators/sdnc-simulator/src/main/java/org/onap/so/sdncsimulator/providers/ServiceOperationsCacheServiceProviderimpl.java')
-rw-r--r-- | plans/so/integration-etsi-testing/so-simulators/sdnc-simulator/src/main/java/org/onap/so/sdncsimulator/providers/ServiceOperationsCacheServiceProviderimpl.java | 60 |
1 files changed, 49 insertions, 11 deletions
diff --git a/plans/so/integration-etsi-testing/so-simulators/sdnc-simulator/src/main/java/org/onap/so/sdncsimulator/providers/ServiceOperationsCacheServiceProviderimpl.java b/plans/so/integration-etsi-testing/so-simulators/sdnc-simulator/src/main/java/org/onap/so/sdncsimulator/providers/ServiceOperationsCacheServiceProviderimpl.java index 180e636b..dae8b7f4 100644 --- a/plans/so/integration-etsi-testing/so-simulators/sdnc-simulator/src/main/java/org/onap/so/sdncsimulator/providers/ServiceOperationsCacheServiceProviderimpl.java +++ b/plans/so/integration-etsi-testing/so-simulators/sdnc-simulator/src/main/java/org/onap/so/sdncsimulator/providers/ServiceOperationsCacheServiceProviderimpl.java @@ -94,28 +94,37 @@ public class ServiceOperationsCacheServiceProviderimpl extends AbstractCacheServ final GenericResourceApiServiceinformationServiceInformation serviceInformation = input.getServiceInformation(); if (serviceInformation != null && isValid(serviceInformation.getServiceInstanceId())) { - final Cache cache = getCache(SERVICE_TOPOLOGY_OPERATION_CACHE); final String serviceInstanceId = serviceInformation.getServiceInstanceId(); - LOGGER.info("Adding GenericResourceApiServiceOperationInformation to cache with key: {}", - serviceInstanceId); - final GenericResourceApiServicemodelinfrastructureService service = - getServiceItem(input, serviceInstanceId); - cache.put(serviceInstanceId, service); + if (isServiceOperationInformationNotExists(serviceInstanceId, input)) { + final Cache cache = getCache(SERVICE_TOPOLOGY_OPERATION_CACHE); + LOGGER.info("Adding GenericResourceApiServiceOperationInformation to cache with key: {}", + serviceInstanceId); - final GenericResourceApiServicestatusServiceStatus serviceStatus = service.getServiceStatus(); + final GenericResourceApiServicemodelinfrastructureService service = + getServiceItem(input, serviceInstanceId); + cache.put(serviceInstanceId, service); - return new Output().ackFinalIndicator(serviceStatus.getFinalIndicator()) - .responseCode(serviceStatus.getResponseCode()).responseMessage(serviceStatus.getResponseMessage()) - .svcRequestId(svcRequestId).serviceResponseInformation(new GenericResourceApiInstanceReference() - .instanceId(serviceInstanceId).objectPath(getObjectPath(serviceInstanceId))); + final GenericResourceApiServicestatusServiceStatus serviceStatus = service.getServiceStatus(); + return new Output().ackFinalIndicator(serviceStatus.getFinalIndicator()) + .responseCode(serviceStatus.getResponseCode()) + .responseMessage(serviceStatus.getResponseMessage()).svcRequestId(svcRequestId) + .serviceResponseInformation(new GenericResourceApiInstanceReference() + .instanceId(serviceInstanceId).objectPath(getObjectPath(serviceInstanceId))); + } + LOGGER.error("serviceInstanceId: {} already exists", serviceInstanceId); + return new Output().ackFinalIndicator(YES).responseCode(HttpStatus.BAD_REQUEST.toString()) + .responseMessage("serviceInstanceId: " + serviceInstanceId + " already exists") + .svcRequestId(svcRequestId); } + LOGGER.error( "Unable to add GenericResourceApiServiceOperationInformation in cache due to invalid input: {}... ", input); return new Output().ackFinalIndicator(YES).responseCode(HttpStatus.BAD_REQUEST.toString()) .responseMessage("Service instance not found").svcRequestId(svcRequestId); + } @Override @@ -467,4 +476,33 @@ public class ServiceOperationsCacheServiceProviderimpl extends AbstractCacheServ } + private boolean isServiceOperationInformationNotExists(final String serviceInstanceId, + final GenericResourceApiServiceOperationInformation input) { + final GenericResourceApiSdncrequestheaderSdncRequestHeader requestHeader = input.getSdncRequestHeader(); + final Optional<GenericResourceApiServicemodelinfrastructureService> optional = + getGenericResourceApiServicemodelinfrastructureService(serviceInstanceId); + + if (optional.isPresent()) { + final GenericResourceApiServicemodelinfrastructureService existingService = optional.get(); + final GenericResourceApiServicestatusServiceStatus serviceStatus = existingService.getServiceStatus(); + if (serviceStatus != null) { + final GenericResourceApiRpcActionEnumeration rpcAction = serviceStatus.getRpcAction(); + final String svcAction = getSvcAction(requestHeader); + if (rpcAction != null && rpcAction.toString().equals(svcAction)) { + LOGGER.error("Found Service with id: {} and RpcAction: {} same as SvcAction: {}", + serviceInstanceId, rpcAction, svcAction); + return false; + } + + final Cache cache = getCache(SERVICE_TOPOLOGY_OPERATION_CACHE); + LOGGER.info( + "Deleting existing GenericResourceApiServiceOperationInformation from cache using key: {} as SvcAction is changed from {} to {}", + serviceInstanceId, rpcAction, svcAction); + cache.evict(serviceInstanceId); + } + } + return true; + + } + } |