package com.github.vbauer.jconditions.core;
import com.github.vbauer.jconditions.util.ReflexUtils;
/**
* @author Vladislav Bauer
*/
public final class ConditionCheckerExecutor {
private ConditionCheckerExecutor() {
throw new UnsupportedOperationException();
}
@SuppressWarnings("rawtypes")
public static boolean isSatisfied(
final CheckerContext<?> context,
final Class<? extends ConditionChecker>... checkerClasses
) {
for (final Class<? extends ConditionChecker> checkerClass : checkerClasses) {
if (!isSatisfied(context, checkerClass)) {
return false;
}
}
return true;
}
@SuppressWarnings("rawtypes")
public static boolean isSatisfied(
final CheckerContext context,
final Class<? extends ConditionChecker> checkerClass
) {
final Object instance = context.getInstance();
final ConditionChecker checker = ReflexUtils.instantiate(instance, checkerClass);
return isSatisfied(context, checker);
}
@SuppressWarnings({"unchecked", "rawtypes"})
public static boolean isSatisfied(
final CheckerContext context, final ConditionChecker checker
) {
try {
return checker.isSatisfied(context);
} catch (final Throwable ex) {
return false;
}
}
}