package azkaban.project.validator;
import java.io.File;
import azkaban.project.Project;
import azkaban.utils.Props;
/**
* Interface to be implemented by plugins which are to be registered with Azkaban
* as project validators that validate a project before uploaded into Azkaban.
*/
public interface ProjectValidator {
/**
* Initialize the validator using the given properties.
*
* @param configuration
* @return
*/
boolean initialize(Props configuration);
/**
* Return a user friendly name of the validator.
*
* @return
*/
String getValidatorName();
/**
* Validate the project inside the given directory. The validator, using its own
* validation logic, will generate a {@link ValidationReport} representing the result of
* the validation.
*
* @param projectDir
* @return
*/
ValidationReport validateProject(Project project, File projectDir);
}