</exclusion>
</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>
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
} 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() {
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);
+ }
+ }
+
}
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>
<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>
</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>
<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>
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;
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 {
@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));
}
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);
+ }
+ }
+
}
<artifactId>onap-configuration-management-api</artifactId>
<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>
+++ /dev/null
-/*
- * 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;
-
-}
+++ /dev/null
-/*
- * 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()))));
-
- }
-
-}
+++ /dev/null
-/*
- * 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());
- }
-
-}
<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>