Search in sources :

Example 1 with ExceptionInterpreter

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

the class YamlReader method readServiceTemplate.

/**
 * Reads a file and converts it to a ServiceTemplate
 *
 * @return ServiceTemplate
 * @throws MultiException the ServiceTemplate or the file is invalid.
 */
private YTServiceTemplate readServiceTemplate(InputStream inputStream, String namespace) throws MultiException {
    Object object = null;
    // pre parse checking
    try {
        object = readObjectFromInputStream(inputStream);
        ObjectValidator objectValidator = new ObjectValidator();
        objectValidator.validateObject(object);
    } 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 (InvalidToscaSyntax invalidToscaSyntax) {
        invalidToscaSyntax.printStackTrace();
    }
    // parse checking
    return buildServiceTemplate(object, namespace);
}
Also used : ScannerException(org.yaml.snakeyaml.scanner.ScannerException) ExceptionInterpreter(org.eclipse.winery.repository.converter.validator.support.ExceptionInterpreter) InvalidToscaSyntax(org.eclipse.winery.model.converter.support.exception.InvalidToscaSyntax) ObjectValidator(org.eclipse.winery.repository.converter.validator.ObjectValidator) ConstructorException(org.yaml.snakeyaml.constructor.ConstructorException) MultiException(org.eclipse.winery.model.converter.support.exception.MultiException)

Example 2 with ExceptionInterpreter

use of org.eclipse.winery.repository.converter.validator.support.ExceptionInterpreter 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

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