diff options
9 files changed, 39 insertions, 264 deletions
diff --git a/common-be/pom.xml b/common-be/pom.xml index 248edb30f9..f45c25f37b 100644 --- a/common-be/pom.xml +++ b/common-be/pom.xml @@ -109,11 +109,6 @@ </exclusions> </dependency> <dependency> - <groupId>org.onap.sdc.sdc-tosca</groupId> - <artifactId>sdc-tosca</artifactId> - <version>${sdc-tosca-parser.version}</version> - </dependency> - <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> diff --git a/common-be/src/main/java/org/openecomp/sdc/be/config/NonManoConfigurationManager.java b/common-be/src/main/java/org/openecomp/sdc/be/config/NonManoConfigurationManager.java index 12813f231d..640c95bf65 100644 --- a/common-be/src/main/java/org/openecomp/sdc/be/config/NonManoConfigurationManager.java +++ b/common-be/src/main/java/org/openecomp/sdc/be/config/NonManoConfigurationManager.java @@ -19,13 +19,12 @@ package org.openecomp.sdc.be.config; -import org.apache.commons.io.IOUtils; -import org.onap.sdc.tosca.parser.utils.YamlToObjectConverter; -import org.openecomp.sdc.be.config.exception.LoadConfigurationException; - import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import org.apache.commons.io.IOUtils; +import org.openecomp.sdc.be.config.exception.LoadConfigurationException; +import org.yaml.snakeyaml.Yaml; /** * Singleton that loads and stores the Non Mano configuration @@ -52,7 +51,7 @@ public class NonManoConfigurationManager { } catch (final IOException e) { throw new LoadConfigurationException("Could not parse non-mano configuration file 'config/nonManoConfig.yaml' to string", e); } - nonManoConfiguration = new YamlToObjectConverter().convertFromString(data, NonManoConfiguration.class); + nonManoConfiguration = convertFromString(data, NonManoConfiguration.class); } public static NonManoConfigurationManager getInstance() { @@ -66,4 +65,14 @@ public class NonManoConfigurationManager { public NonManoConfiguration getNonManoConfiguration() { return nonManoConfiguration; } + + private <T> T convertFromString(final String yamlContents, final Class<T> className) { + try { + return (new Yaml()).loadAs(yamlContents, className); + } catch (final Exception e) { + throw new + LoadConfigurationException(String.format("Failed to convert YAML %s to object.", yamlContents), e); + } + } + } diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index 9d646721c2..8b5e614b65 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -24,7 +24,6 @@ limitations under the License. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>org.openecomp.sdc</groupId> <artifactId>sdc-integration-tests</artifactId> <packaging>jar</packaging> <name>sdc-integration-tests</name> @@ -52,6 +51,8 @@ limitations under the License. <it.docker.version>latest</it.docker.version> <it.ui.firefox.version>2.53.1</it.ui.firefox.version> + <!-- parser--> + <sdc-tosca-parser.version>1.6.5</sdc-tosca-parser.version> </properties> <dependencies> @@ -182,6 +183,12 @@ limitations under the License. </exclusions> </dependency> + <dependency> + <groupId>org.onap.sdc.sdc-tosca</groupId> + <artifactId>sdc-tosca</artifactId> + <version>${sdc-tosca-parser.version}</version> + </dependency> + <!--FOR the Frontend --> <dependency> <groupId>org.seleniumhq.selenium</groupId> @@ -281,7 +288,7 @@ limitations under the License. <directory>../catalog-be-plugins/etsi-nfv-nsd-csar-plugin/target</directory> <filtering>false</filtering> <includes> - <include>etsi-nfv-nsd-csar-plugin-${version}.jar</include> + <include>etsi-nfv-nsd-csar-plugin-${project.version}.jar</include> </includes> </resource> </resources> diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java index f03d561375..f5570ae4e1 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java @@ -31,9 +31,11 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -48,12 +50,12 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; -import org.onap.sdc.tosca.parser.utils.YamlToObjectConverter; -import org.openecomp.sdc.be.config.NonManoConfiguration; import org.onap.sdc.tosca.services.YamlUtil; import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.sdc.be.config.NonManoConfiguration; import org.openecomp.sdc.tosca.csar.Manifest; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.yaml.snakeyaml.Yaml; public class ETSIServiceImplTest { @@ -73,9 +75,8 @@ public class ETSIServiceImplTest { @Before public void setUp() throws IOException { - YamlToObjectConverter yamlToObjectConverter = new YamlToObjectConverter(); - NonManoConfiguration configuration = yamlToObjectConverter.convert("src/test/resources", - NonManoConfiguration.class, "nonManoConfig.yaml"); + final String fullFileName = Paths.get("src", "test", "resources", "nonManoConfig.yaml").toString(); + final NonManoConfiguration configuration = convert(fullFileName, NonManoConfiguration.class); etsiService = Mockito.spy(new ETSIServiceImpl(configuration)); } @@ -290,4 +291,14 @@ public class ETSIServiceImplTest { containsString(file2Path.toString())); } + private <T> T convert(final String fullFileName, final Class<T> className) throws IOException { + assertTrue((new File(fullFileName)).exists()); + + try (final InputStream in = Files.newInputStream(Paths.get(fullFileName));) { + return (new Yaml()).loadAs(in, className); + } catch (final IOException e) { + throw new IOException(e); + } + } + } diff --git a/openecomp-be/lib/openecomp-tosca-lib/pom.xml b/openecomp-be/lib/openecomp-tosca-lib/pom.xml index 1d23ac4e4d..48d513dba5 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/pom.xml +++ b/openecomp-be/lib/openecomp-tosca-lib/pom.xml @@ -90,11 +90,6 @@ <version>${project.version}</version> </dependency> <dependency> - <groupId>org.onap.sdc.sdc-tosca</groupId> - <artifactId>sdc-tosca</artifactId> - <version>${sdc-tosca-parser.version}</version> - </dependency> - <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/ToscaValidationService.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/ToscaValidationService.java deleted file mode 100644 index 59d7acccd4..0000000000 --- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/ToscaValidationService.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright © 2016-2018 European Support Limited - * - * 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 - * - * 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.openecomp.sdc.tosca.services; - -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.sdc.datatypes.error.ErrorMessage; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -public interface ToscaValidationService { - - public Map<String, List<ErrorMessage>> validate(FileContentHandler fileContentHandler) - throws IOException; - -} diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaValidationServiceImpl.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaValidationServiceImpl.java deleted file mode 100644 index 9f3dd0790f..0000000000 --- a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaValidationServiceImpl.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright © 2016-2018 European Support Limited - * - * 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 - * - * 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.openecomp.sdc.tosca.services.impl; - -import org.apache.commons.io.FilenameUtils; -import org.onap.sdc.tosca.parser.config.ConfigurationManager; -import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; -import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; -import org.onap.sdc.toscaparser.api.common.JToscaValidationIssue; -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.core.utilities.file.FileUtils; -import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; -import org.openecomp.core.validation.ErrorMessageCode; -import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; -import org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum; -import org.openecomp.sdc.datatypes.error.ErrorLevel; -import org.openecomp.sdc.datatypes.error.ErrorMessage; -import org.openecomp.sdc.logging.api.Logger; -import org.openecomp.sdc.logging.api.LoggerFactory; -import org.openecomp.sdc.tosca.services.ToscaValidationService; -import org.yaml.snakeyaml.Yaml; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; - - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - - -public class ToscaValidationServiceImpl implements ToscaValidationService { - - private static final Logger LOGGER = LoggerFactory.getLogger(ToscaValidationServiceImpl.class); - private static final String SDCPARSER_JTOSCA_VALIDATIONISSUE_CONFIG = - "SDCParser_jtosca-validation-issue-configuration.yaml"; - private static final String SDCPARSER_ERROR_CONFIG = "SDCParser_error-configuration.yaml"; - - static { - // Override default SDC Parser configuration - ConfigurationManager configurationManager = ConfigurationManager.getInstance(); - configurationManager.setJtoscaValidationIssueConfiguration(SDCPARSER_JTOSCA_VALIDATIONISSUE_CONFIG); - configurationManager.setErrorConfiguration(SDCPARSER_ERROR_CONFIG); - SdcToscaParserFactory.setConfigurationManager(configurationManager); - } - - @Override - public Map<String, List<ErrorMessage>> validate(FileContentHandler fileContentHandler) - throws IOException { - - Path dir = - Files.createTempDirectory(OnboardingTypesEnum.CSAR + "_" + System.currentTimeMillis()); - try { - // Write temporary files and folders to File System - Map<String, String> filePaths = FileUtils.writeFilesFromFileContentHandler - (fileContentHandler, dir); - // Process Tosca Yaml validation - return processToscaYamls(filePaths); - } finally { - // Cleanup temporary files and folders from file system - org.apache.commons.io.FileUtils.deleteDirectory(dir.toFile()); - } - } - - private Map<String, List<ErrorMessage>> processToscaYamls(Map<String, String> filePaths) { - Map<String, String> validFilePaths = getValidFilePaths(filePaths); - Map<String, List<ErrorMessage>> validationIssues = new HashMap<>(); - - // Process Yaml Files - for (Map.Entry<String, String> fileEntry : validFilePaths.entrySet()) { - try { - SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance(); - factory.getSdcCsarHelper(fileEntry.getValue()); - processValidationIssues(fileEntry.getKey(), factory, validationIssues); - } catch (SdcToscaParserException stpe) { - LOGGER.error("SDC Parser Exception from SDC Parser Library : " + stpe); - ErrorMessage.ErrorMessageUtil.addMessage(fileEntry.getKey(), validationIssues).add( - new ErrorMessage(ErrorLevel.ERROR, ErrorMessagesFormatBuilder - .getErrorWithParameters(new ErrorMessageCode("JE000"), "Unexpected Error " - + "occurred"))); - } - catch (RuntimeException rte) { - LOGGER.error("Runtime Exception from SDC Parser Library : " + rte); - ErrorMessage.ErrorMessageUtil.addMessage(fileEntry.getKey(), validationIssues).add( - new ErrorMessage(ErrorLevel.ERROR, ErrorMessagesFormatBuilder - .getErrorWithParameters(new ErrorMessageCode("JE000"), "Unexpected Error " - + "occurred"))); - } - } - return validationIssues; - } - - private Map<String, String> getValidFilePaths(Map<String, String> filePaths) { - return filePaths.entrySet() - .stream() - .filter(map -> FileUtils.isValidYamlExtension(FilenameUtils.getExtension(map.getKey())) - && isToscaYaml(map.getValue())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - private boolean isToscaYaml(final String filePath) { - boolean retValue = false; - - try (final InputStream input = new BufferedInputStream(new FileInputStream(new File(filePath)));) { - final Yaml yaml = new Yaml(); - final LinkedHashMap<String,Object> data = (LinkedHashMap) yaml.load(input); - if(data.get(ToscaTagNamesEnum.TOSCA_VERSION.getElementName()) != null) { - retValue = true; - } - } - catch(final Exception e){ - LOGGER.info("Ignore the exception as the input file may not be a Tosca Yaml; let the " + - "default value return", e); - } - return retValue; - } - - private void processValidationIssues(String fileName, SdcToscaParserFactory factory, Map<String, - List<ErrorMessage>> validationIssues) { - - List<JToscaValidationIssue> criticalsReport = factory.getCriticalExceptions(); - criticalsReport.stream().forEach(err -> - ErrorMessage.ErrorMessageUtil.addMessage(fileName, validationIssues).add( - new ErrorMessage(ErrorLevel.ERROR, ErrorMessagesFormatBuilder - .getErrorWithParameters(new ErrorMessageCode(err.getCode()), err.getMessage())))); - - List<JToscaValidationIssue> warningsReport = factory.getWarningExceptions(); - warningsReport.stream().forEach(err -> - ErrorMessage.ErrorMessageUtil.addMessage(fileName, validationIssues).add( - new ErrorMessage(ErrorLevel.WARNING, ErrorMessagesFormatBuilder - .getErrorWithParameters(new ErrorMessageCode(err.getCode()), err.getMessage())))); - - List<JToscaValidationIssue> notAnalyzedReport = factory.getNotAnalyzadExceptions(); - notAnalyzedReport.stream().forEach(err -> - ErrorMessage.ErrorMessageUtil.addMessage(fileName, validationIssues).add( - new ErrorMessage(ErrorLevel.WARNING, ErrorMessagesFormatBuilder - .getErrorWithParameters(new ErrorMessageCode(err.getCode()), err.getMessage())))); - - } - -} diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaValidationServiceImplTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaValidationServiceImplTest.java deleted file mode 100644 index c9ceb363a4..0000000000 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaValidationServiceImplTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright © 2016-2018 European Support Limited - * - * 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 - * - * 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.openecomp.sdc.tosca.services.impl; - -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; -import org.openecomp.sdc.common.utils.CommonUtil; -import org.openecomp.sdc.datatypes.error.ErrorMessage; -import org.openecomp.sdc.tosca.services.ToscaValidationService; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import static org.junit.Assert.assertFalse; - -public class ToscaValidationServiceImplTest { - - @Test - public void validateCSARContentErrorHandling() throws IOException { - String resName = "/mock/validationService/csar/resource-Spgw-csar-ZTE.csar"; - byte[] uploadedFileData = IOUtils.toByteArray(this.getClass().getResource(resName)); - FileContentHandler contentMap = - CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.CSAR, uploadedFileData); - ToscaValidationService handler = new ToscaValidationServiceImpl(); - Map<String, List<ErrorMessage>> errors = handler.validate(contentMap); - assertFalse(errors.isEmpty()); - } - -} @@ -125,9 +125,6 @@ Modifications copyright (c) 2018-2019 Nokia <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version> <maven-jar-plugin.version>2.4</maven-jar-plugin.version> - <!-- parser--> - <sdc-tosca-parser.version>1.6.5</sdc-tosca-parser.version> - <!-- sonar --> <sonar.projectVersion>${project.version}</sonar.projectVersion> <sonar.nodejs.executable>${project.basedir}/node/node</sonar.nodejs.executable> |