diff options
Diffstat (limited to 'src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationService.java')
-rw-r--r-- | src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationService.java | 94 |
1 files changed, 54 insertions, 40 deletions
diff --git a/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationService.java b/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationService.java index 228e12d..5e3e4cf 100644 --- a/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationService.java +++ b/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationService.java @@ -1,27 +1,30 @@ /** - * Copyright (c) 2018 Orange + * Copyright (c) 2018 Orange * - * 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.servicecatalog; +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import org.apache.commons.io.FileUtils; import org.onap.nbi.apis.servicecatalog.jolt.FindServiceSpecJsonTransformer; import org.onap.nbi.apis.servicecatalog.jolt.GetServiceSpecJsonTransformer; import org.onap.nbi.apis.serviceorder.ServiceCatalogUrl; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,45 +35,56 @@ import org.springframework.util.MultiValueMap; @Service public class ServiceSpecificationService { - @Autowired - SdcClient sdcClient; + @Autowired + SdcClient sdcClient; - @Autowired - GetServiceSpecJsonTransformer getServiceSpecJsonTransformer; + @Autowired + GetServiceSpecJsonTransformer getServiceSpecJsonTransformer; - @Autowired - FindServiceSpecJsonTransformer findServiceSpecJsonTransformer; + @Autowired + FindServiceSpecJsonTransformer findServiceSpecJsonTransformer; - @Autowired - ToscaInfosProcessor toscaInfosProcessor; + @Autowired + ToscaInfosProcessor toscaInfosProcessor; - @Autowired - private ServiceCatalogUrl serviceCatalogUrl; + @Autowired + private ServiceCatalogUrl serviceCatalogUrl; - private static final Logger LOGGER = LoggerFactory.getLogger(ServiceSpecificationService.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ServiceSpecificationService.class); - public Map get(String serviceSpecId) { - Map sdcResponse = sdcClient.callGet(serviceSpecId); - LinkedHashMap serviceCatalogResponse = (LinkedHashMap) getServiceSpecJsonTransformer.transform(sdcResponse); - Map toscaInfosTopologyTemplate = toscaInfosProcessor.getToscaInfos(serviceCatalogResponse); - if (toscaInfosTopologyTemplate != null) { - LOGGER.debug("tosca file found, retrieving informations"); - toscaInfosProcessor.buildResponseWithToscaInfos(toscaInfosTopologyTemplate, serviceCatalogResponse); - } else { - LOGGER.debug("no tosca file found, partial response"); - } - return serviceCatalogResponse; + public Map get(String serviceSpecId) { + Map sdcResponse = sdcClient.callGet(serviceSpecId); + LinkedHashMap serviceCatalogResponse = + (LinkedHashMap) getServiceSpecJsonTransformer.transform(sdcResponse); + String toscaModelUrl = (String) sdcResponse.get("toscaModelURL"); + String serviceId = (String) sdcResponse.get("id"); + File toscaFile = sdcClient.callGetWithAttachment(toscaModelUrl); + Path pathToToscaCsar = toscaFile.toPath().toAbsolutePath(); + try { + toscaInfosProcessor.buildResponseWithSdcToscaParser(pathToToscaCsar, serviceCatalogResponse); + } catch (SdcToscaParserException e) { + LOGGER.debug("unable to build response from tosca csar using sdc-parser, partial response : " + + pathToToscaCsar.toString() + " " + e.getMessage()); } + try { + if (toscaFile != null) { + LOGGER.debug("deleting tosca archive : " + toscaFile.getName()); + FileUtils.forceDelete(toscaFile); + } + } catch (IOException e) { + LOGGER.error("unable to delete temp directory tosca file for id : " + serviceId, e); + } + return serviceCatalogResponse; + } - public List<LinkedHashMap> find(MultiValueMap<String, String> parametersMap) { - List<LinkedHashMap> sdcResponse = sdcClient.callFind(parametersMap); - List<LinkedHashMap> serviceCatalogResponse = new ArrayList<>(); - if(!CollectionUtils.isEmpty(sdcResponse)){ - serviceCatalogResponse = - findServiceSpecJsonTransformer.transform(sdcResponse); - } - return serviceCatalogResponse; + public List<LinkedHashMap> find(MultiValueMap<String, String> parametersMap) { + List<LinkedHashMap> sdcResponse = sdcClient.callFind(parametersMap); + List<LinkedHashMap> serviceCatalogResponse = new ArrayList<>(); + if (!CollectionUtils.isEmpty(sdcResponse)) { + serviceCatalogResponse = findServiceSpecJsonTransformer.transform(sdcResponse); } + return serviceCatalogResponse; + } } |