Search in sources :

Example 1 with Validator

use of org.eclipse.winery.repository.converter.validator.Validator in project winery by eclipse.

the class YamlReader method readServiceTemplate.

private YTServiceTemplate readServiceTemplate(Path path, Path file, String namespace) throws MultiException {
    Path filePath;
    if (Objects.isNull(path)) {
        filePath = file;
    } else {
        filePath = path.resolve(file);
    }
    if (!fileChanged(filePath)) {
        if (exceptionBuffer.containsKey(filePath)) {
            throw exceptionBuffer.get(filePath);
        }
        if (serviceTemplateBuffer.containsKey(filePath)) {
            return serviceTemplateBuffer.get(filePath);
        }
    }
    logger.debug("Read Service Template: {}", filePath);
    try {
        // pre parse checking
        try {
            ObjectValidator objectValidator = new ObjectValidator();
            objectValidator.validateObject(readObject(filePath));
        } catch (ConstructorException e) {
            ExceptionInterpreter interpreter = new ExceptionInterpreter();
            throw new MultiException().add(interpreter.interpret(e));
        } catch (ScannerException e) {
            ExceptionInterpreter interpreter = new ExceptionInterpreter();
            throw new MultiException().add(interpreter.interpret(e));
        } catch (YAMLParserException e) {
            throw new MultiException().add(e);
        }
        // parse checking
        YTServiceTemplate result = buildServiceTemplate(readObject(filePath), namespace);
        // post parse checking
        Validator validator = new Validator(path);
        validator.validate(result, namespace);
        serviceTemplateBuffer.put(filePath, result);
        return result;
    } catch (MultiException e) {
        exceptionBuffer.put(filePath, e);
        throw e.add(file.toString());
    }
}
Also used : Path(java.nio.file.Path) ScannerException(org.yaml.snakeyaml.scanner.ScannerException) ExceptionInterpreter(org.eclipse.winery.repository.converter.validator.support.ExceptionInterpreter) YAMLParserException(org.eclipse.winery.model.converter.support.exception.YAMLParserException) YTServiceTemplate(org.eclipse.winery.model.tosca.yaml.YTServiceTemplate) ObjectValidator(org.eclipse.winery.repository.converter.validator.ObjectValidator) ConstructorException(org.yaml.snakeyaml.constructor.ConstructorException) MultiException(org.eclipse.winery.model.converter.support.exception.MultiException) Validator(org.eclipse.winery.repository.converter.validator.Validator) ObjectValidator(org.eclipse.winery.repository.converter.validator.ObjectValidator)

Aggregations

Path (java.nio.file.Path)1 MultiException (org.eclipse.winery.model.converter.support.exception.MultiException)1 YAMLParserException (org.eclipse.winery.model.converter.support.exception.YAMLParserException)1 YTServiceTemplate (org.eclipse.winery.model.tosca.yaml.YTServiceTemplate)1 ObjectValidator (org.eclipse.winery.repository.converter.validator.ObjectValidator)1 Validator (org.eclipse.winery.repository.converter.validator.Validator)1 ExceptionInterpreter (org.eclipse.winery.repository.converter.validator.support.ExceptionInterpreter)1 ConstructorException (org.yaml.snakeyaml.constructor.ConstructorException)1 ScannerException (org.yaml.snakeyaml.scanner.ScannerException)1