X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fnbi%2Fapis%2Fserviceinventory%2FServiceInventoryService.java;h=393236f5565942306fef3e0f94cca9d09140066a;hb=f73c501dc6347ea78ff9da629e02200db1dd7297;hp=808d43f19dc7a39ca831e9ac48348e0d3e906b12;hpb=ecf907f1bc7340f6f7a8ebabbcd2055fe57683ae;p=externalapi%2Fnbi.git diff --git a/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java b/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java index 808d43f..393236f 100644 --- a/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java +++ b/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java @@ -1,27 +1,27 @@ /** + * Copyright (c) 2018 Orange * - * Copyright (c) 2017 Orange. 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. You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. */ package org.onap.nbi.apis.serviceinventory; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import org.apache.commons.collections.CollectionUtils; import org.onap.nbi.apis.serviceinventory.jolt.FindServiceInventoryJsonTransformer; import org.onap.nbi.apis.serviceinventory.jolt.GetServiceInventoryJsonTransformer; import org.onap.nbi.exceptions.BackendFunctionalException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -43,7 +43,10 @@ public class ServiceInventoryService { @Autowired FindServiceInventoryJsonTransformer findServiceInventoryJsonTransformer; - public LinkedHashMap get(String serviceId, MultiValueMap params) { + private static final Logger LOGGER = LoggerFactory.getLogger(ServiceInventoryService.class); + + + public Map get(String serviceId, MultiValueMap params) { String clientId = params.getFirst("relatedParty.id"); String serviceSpecId = params.getFirst("serviceSpecification.id"); @@ -51,17 +54,17 @@ public class ServiceInventoryService { if (StringUtils.isEmpty(serviceSpecId) && StringUtils.isEmpty(serviceSpecName)) { throw new BackendFunctionalException(HttpStatus.NOT_FOUND, - "serviceSpecName or serviceSpecId must be provided"); + "serviceSpecName or serviceSpecId must be provided"); } String customerId = getCustomerId(clientId); String serviceName = getServiceName(serviceSpecName, serviceSpecId); - LinkedHashMap serviceResponse = aaiClient.getCatalogService(customerId, serviceName, serviceId); + Map serviceResponse = aaiClient.getCatalogService(customerId, serviceName, serviceId); if (serviceResponse != null) { addVnfsToResponse(serviceResponse); LinkedHashMap serviceInventoryResponse = - (LinkedHashMap) getServiceInventoryJsonTransformer.transform(serviceResponse); + (LinkedHashMap) getServiceInventoryJsonTransformer.transform(serviceResponse); addRelatedPartyId(customerId, serviceInventoryResponse); return serviceInventoryResponse; } else { @@ -84,7 +87,7 @@ public class ServiceInventoryService { private String getServiceName(String serviceSpecificationName, String serviceSpecificationId) { if (StringUtils.isEmpty(serviceSpecificationName)) { - LinkedHashMap serviceSpecification = nbiClient.getServiceSpecification(serviceSpecificationId); + Map serviceSpecification = nbiClient.getServiceSpecification(serviceSpecificationId); return (String) serviceSpecification.get("name"); } else { return serviceSpecificationName; @@ -99,20 +102,23 @@ public class ServiceInventoryService { } - private void addVnfsToResponse(LinkedHashMap serviceResponse) { + private void addVnfsToResponse(Map serviceResponse) { - List vnfs = new ArrayList<>(); + List vnfs = new ArrayList<>(); LinkedHashMap relationShip = (LinkedHashMap) serviceResponse.get("relationship-list"); - List relationsList = (List) relationShip.get("relationship"); - for (LinkedHashMap relation : relationsList) { - String relatedLink = (String) relation.get("related-link"); - LinkedHashMap vnf = aaiClient.getVNF(relatedLink); - if (vnf != null) { - vnfs.add(vnf); + if (relationShip != null) { + List relationsList = (List) relationShip.get("relationship"); + if (relationsList != null) { + for (LinkedHashMap relation : relationsList) { + String relatedLink = (String) relation.get("related-link"); + Map vnf = aaiClient.getVNF(relatedLink); + if (vnf != null) { + vnfs.add(vnf); + } + } + serviceResponse.put("vnfs", vnfs); } } - serviceResponse.put("vnfs", vnfs); - } @@ -125,40 +131,62 @@ public class ServiceInventoryService { String serviceName; List serviceInstances = new ArrayList<>(); if (StringUtils.isEmpty(serviceSpecId) && StringUtils.isEmpty(serviceSpecName)) { - LinkedHashMap servicesInAaiForCustomer = aaiClient.getServicesInAaiForCustomer(customerId); - List servicesInAAI = - (List) servicesInAaiForCustomer.get("service-subscription"); - for (LinkedHashMap service : servicesInAAI) { - String serviceType = (String) service.get("service-type"); - buildServiceInstances(serviceInstances, customerId, serviceType); - } + handleFindWithNoServiceParam(customerId, serviceInstances); } else { serviceName = getServiceName(serviceSpecName, serviceSpecId); buildServiceInstances(serviceInstances, customerId, serviceName); } - - List serviceInventoryResponse = - (List) findServiceInventoryJsonTransformer.transform(serviceInstances); - for (LinkedHashMap serviceInventory : serviceInventoryResponse) { - LinkedHashMap party = (LinkedHashMap) serviceInventory.get("relatedParty"); - party.put("id", customerId); + List serviceInventoryResponse = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(serviceInstances)){ + serviceInventoryResponse = + findServiceInventoryJsonTransformer.transform(serviceInstances); + for (LinkedHashMap serviceInventory : serviceInventoryResponse) { + LinkedHashMap party = (LinkedHashMap) serviceInventory.get("relatedParty"); + party.put("id", customerId); + } + }else { + LOGGER.warn("no service instance found for customer {} ",customerId); } return serviceInventoryResponse; + + } + + private void handleFindWithNoServiceParam(String customerId, List serviceInstances) { + Map servicesInAaiForCustomer = aaiClient.getServicesInAaiForCustomer(customerId); + if(servicesInAaiForCustomer!=null){ + List servicesInAAI = + (List) servicesInAaiForCustomer.get("service-subscription"); + for (LinkedHashMap service : servicesInAAI) { + String serviceType = (String) service.get("service-type"); + buildServiceInstances(serviceInstances, customerId, serviceType); + } + }else { + LOGGER.warn("no service instance found for customer {} ",customerId); + } } private void buildServiceInstances(List serviceInstances, String customerId, String serviceType) { - LinkedHashMap serviceInstancesInAaiForCustomer = - aaiClient.getServiceInstancesInAaiForCustomer(customerId, serviceType); - List serviceInstancesForServiceType = + Map serviceInstancesInAaiForCustomer = + aaiClient.getServiceInstancesInAaiForCustomer(customerId, serviceType); + if (serviceInstancesInAaiForCustomer != null) { + List serviceInstancesForServiceType = (List) serviceInstancesInAaiForCustomer.get("service-instance"); - // add service type for jolt - for (LinkedHashMap serviceInstanceForServiceType : serviceInstancesForServiceType) { - serviceInstanceForServiceType.put("service-type", serviceType); + if (!CollectionUtils.isEmpty(serviceInstancesForServiceType)) { + // add service type for jolt + for (LinkedHashMap serviceInstanceForServiceType : serviceInstancesForServiceType) { + serviceInstanceForServiceType.put("service-type", serviceType); + } + serviceInstances.addAll(serviceInstancesForServiceType); + } else { + LOGGER.warn("no service instance found for customer {} and service type {}",customerId,serviceType); + } + } else { + LOGGER.warn("no service instance found for customer {} and service type {}",customerId,serviceType); } - serviceInstances.addAll(serviceInstancesForServiceType); + }