package azkaban.project.validator; import java.io.File; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import azkaban.project.Project; import azkaban.utils.Props; /** * ValidatorManager is responsible for loading the list of validators specified in the * Azkaban validator configuration file. Once these validators are loaded, the ValidatorManager * will use the registered validators to verify each uploaded project before persisting it. */ public interface ValidatorManager { /** * Load the validators using the given properties. Each validator is also given the specified * logger to record any necessary message in the Azkaban log file. * * @param props * @param logger */ void loadValidators(Props props, Logger logger); /** * Validate the given project using the registered list of validators. This method returns a * map of {@link ValidationReport} with the key being the validator's name and the value being * the {@link ValidationReport} generated by that validator. * * @param projectDir * @return */ Map<String, ValidationReport> validate(Project project, File projectDir); /** * The ValidatorManager should have a default validator which checks for the most essential * components of a project. The ValidatorManager should always load the default validator. * This method returns the default validator of this ValidatorManager. * * @return */ ProjectValidator getDefaultValidator(); /** * Returns a list of String containing the name of each registered validators. * * @return */ List<String> getValidatorsInfo(); }