package org.infernus.idea.checkstyle.checks;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import com.intellij.openapi.project.Project;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.infernus.idea.checkstyle.csapi.CheckstyleInternalObject;
import org.jetbrains.annotations.NotNull;
/**
* Factory for producing various check modifications.
*/
public final class CheckFactory {
private static final Log LOG = LogFactory.getLog(CheckFactory.class);
private static final Class<?>[] CHECK_CLASSES = {JavadocPackageCheck.class, PackageHtmlCheck.class};
private CheckFactory() {
}
@NotNull
public static List<Check> getChecks(final Project project, final CheckstyleInternalObject config) {
final List<Check> checks = new ArrayList<>();
for (final Class<?> checkClass : CHECK_CLASSES) {
try {
Constructor<?> constructor = checkClass.getConstructor(Project.class);
final Check check = (Check) constructor.newInstance(project);
check.configure(config);
checks.add(check);
} catch (Exception e) {
LOG.error("Couldn't instantiate check class " + checkClass, e);
}
}
return checks;
}
}