package com.github.vbauer.jconditions.checker;
import com.github.vbauer.jconditions.annotation.HasClass;
import com.github.vbauer.jconditions.core.CheckerContext;
import com.github.vbauer.jconditions.core.ConditionChecker;
/**
* @author Vladislav Bauer
*/
public class HasClassChecker implements ConditionChecker<HasClass> {
/**
* {@inheritDoc}
*/
@Override
public boolean isSatisfied(final CheckerContext<HasClass> context) throws Exception {
final HasClass annotation = context.getAnnotation();
final String[] classNames = annotation.value();
return hasAllClasses(classNames);
}
private boolean hasAllClasses(final String... classNames) {
for (final String className : classNames) {
final boolean hasClass = hasClass(className);
if (!hasClass) {
return false;
}
}
return classNames.length > 0;
}
private boolean hasClass(final String className) {
try {
return Class.forName(className) != null;
} catch (final Exception ex) {
return false;
}
}
}