/*******************************************************************************
* (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0 which accompany this distribution.
*
* The Apache License is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
package io.cloudslang.lang.compiler.validator;
import io.cloudslang.lang.compiler.modeller.result.ExecutableModellingResult;
import io.cloudslang.lang.compiler.modeller.transformers.InOutTransformer;
import io.cloudslang.lang.compiler.modeller.transformers.Transformer;
import io.cloudslang.lang.compiler.parser.model.ParsedSlang;
import io.cloudslang.lang.entities.bindings.InOutParam;
import io.cloudslang.lang.entities.bindings.Result;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
public interface PreCompileValidator {
String validateExecutableRawData(ParsedSlang parsedSlang,
Map<String, Object> executableRawData,
List<RuntimeException> errors);
List<Map<String, Map<String, Object>>> validateWorkflowRawData(ParsedSlang parsedSlang,
Object workflowRawData,
String executableName,
List<RuntimeException> errors);
ExecutableModellingResult validateResult(ParsedSlang parsedSlang,
String executableName,
ExecutableModellingResult result);
List<RuntimeException> checkKeyWords(
String dataLogicalName,
String parentProperty,
Map<String, Object> rawData,
List<Transformer> allRelevantTransformers,
List<String> additionalValidKeyWords,
List<List<String>> constraintGroups);
Map<String, Map<String, Object>> validateOnFailurePosition(
List<Map<String, Map<String, Object>>> workFlowRawData,
String execName,
List<RuntimeException> errors);
void validateDecisionResultsSection(Map<String, Object> executableRawData,
String artifact,
List<RuntimeException> errors);
List<RuntimeException> validateNoDuplicateInOutParams(List<? extends InOutParam> inputs, InOutParam element);
void validateResultsHaveNoExpression(List<Result> results, String artifactName, List<RuntimeException> errors);
void validateResultTypes(List<Result> results, String artifactName, List<RuntimeException> errors);
void validateDefaultResult(List<Result> results, String artifactName, List<RuntimeException> errors);
void validateStringValue(String name, Serializable value, InOutTransformer transformer);
}