// Path: src/main/java/com/github/vbauer/jconditions/checker/IgnoreIfChecker.java
// public class IgnoreIfChecker implements ConditionChecker<IgnoreIf> {
// 
//     /**
//      * {@inheritDoc}
//      */
//     @Override
//     public boolean isSatisfied(final CheckerContext<IgnoreIf> context) {
//         final IgnoreIf annotation = context.getAnnotation();
// 
//         @SuppressWarnings("rawtypes")
//         final Class<? extends ConditionChecker>[] checkerClasses = annotation.value();
// 
//         //noinspection unchecked
//         return !ConditionCheckerExecutor.isSatisfied(context, checkerClasses);
//     }
// 
// }
// 
// Path: src/main/java/com/github/vbauer/jconditions/core/ConditionChecker.java
// public interface ConditionChecker<T> {
// 
//     /**
//      * Checks if execution of test method should be continued or not.
//      *
//      * @param context input data for checker
//      * @return true if execution should be continued and false - otherwise
//      * @throws Exception on any error (it is the same as false in return value)
//      */
//     boolean isSatisfied(CheckerContext<T> context) throws Exception;
// 
// }


import com.github.vbauer.jconditions.checker.IgnoreIfChecker;
import com.github.vbauer.jconditions.core.Condition;
import com.github.vbauer.jconditions.core.ConditionChecker;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
package com.github.vbauer.jconditions.annotation;



/**
 * Allows to skip some test method using specific {@link ConditionChecker} class.
 * It will skip test, if checker return true and execute method otherwise.
 * "ConditionChecker" could be separate class, or nested static class, or even inner class.
 * It also works fine with private classes.
 *
 * @author Vladislav Bauer
 */

@Documented
@Condition(IgnoreIfChecker.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE, ElementType.METHOD})
public @interface IgnoreIf {

    /**
     * Condition checkers that should be checked.
     *
     * @return condition checkers
     */
    @SuppressWarnings("rawtypes")
// Path: src/main/java/com/github/vbauer/jconditions/checker/IgnoreIfChecker.java
// public class IgnoreIfChecker implements ConditionChecker<IgnoreIf> {
// 
//     /**
//      * {@inheritDoc}
//      */
//     @Override
//     public boolean isSatisfied(final CheckerContext<IgnoreIf> context) {
//         final IgnoreIf annotation = context.getAnnotation();
// 
//         @SuppressWarnings("rawtypes")
//         final Class<? extends ConditionChecker>[] checkerClasses = annotation.value();
// 
//         //noinspection unchecked
//         return !ConditionCheckerExecutor.isSatisfied(context, checkerClasses);
//     }
// 
// }
// 
// Path: src/main/java/com/github/vbauer/jconditions/core/ConditionChecker.java
// public interface ConditionChecker<T> {
// 
//     /**
//      * Checks if execution of test method should be continued or not.
//      *
//      * @param context input data for checker
//      * @return true if execution should be continued and false - otherwise
//      * @throws Exception on any error (it is the same as false in return value)
//      */
//     boolean isSatisfied(CheckerContext<T> context) throws Exception;
// 
// }


// Path: src/main/java/com/github/vbauer/jconditions/annotation/IgnoreIf.java
import com.github.vbauer.jconditions.checker.IgnoreIfChecker;
import com.github.vbauer.jconditions.core.Condition;
import com.github.vbauer.jconditions.core.ConditionChecker;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

package com.github.vbauer.jconditions.annotation;



/**
 * Allows to skip some test method using specific {@link ConditionChecker} class.
 * It will skip test, if checker return true and execute method otherwise.
 * "ConditionChecker" could be separate class, or nested static class, or even inner class.
 * It also works fine with private classes.
 *
 * @author Vladislav Bauer
 */

@Documented
@Condition(IgnoreIfChecker.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE, ElementType.METHOD})
public @interface IgnoreIf {

    /**
     * Condition checkers that should be checked.
     *
     * @return condition checkers
     */
    @SuppressWarnings("rawtypes")
    Class<? extends ConditionChecker>[] value();