001package org.junit.validator;
002
003import static java.util.Collections.emptyList;
004import static java.util.Collections.singletonList;
005
006import java.util.List;
007
008import org.junit.runners.model.TestClass;
009
010/**
011 * Validates that a {@link TestClass} is public.
012 * 
013 * @since 4.12
014 */
015public class PublicClassValidator implements TestClassValidator {
016    private static final List<Exception> NO_VALIDATION_ERRORS = emptyList();
017
018    /**
019     * Validate that the specified {@link TestClass} is public.
020     * 
021     * @param testClass the {@link TestClass} that is validated.
022     * @return an empty list if the class is public or a list with a single
023     *         exception otherwise.
024     */
025    public List<Exception> validateTestClass(TestClass testClass) {
026        if (testClass.isPublic()) {
027            return NO_VALIDATION_ERRORS;
028        } else {
029            return singletonList(new Exception("The class "
030                    + testClass.getName() + " is not public."));
031        }
032    }
033}