package org.jboss.windup.engine.predicates;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.jboss.forge.furnace.util.Predicate;
import org.jboss.windup.config.RuleProvider;
/**
* Executes only those {@link RuleProvider} instances that were specified in this {@link Predicate}.
*
* @author <a href="mailto:ozizka@redhat.com">Ondrej Zizka</a>
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public class EnumeratedRuleProviderPredicate implements Predicate<RuleProvider>
{
private final Set<Class<? extends RuleProvider>> enabledProviders = new HashSet<>();
@SafeVarargs
public EnumeratedRuleProviderPredicate(Class<? extends RuleProvider> provider, Class<? extends RuleProvider>... providers)
{
if (provider != null)
this.enabledProviders.add(provider);
this.enabledProviders.addAll(Arrays.asList(providers));
}
@Override
public boolean accept(RuleProvider provider)
{
Class<? extends RuleProvider> clazz = provider.getClass();
for (Class<? extends RuleProvider> enabledClazz : enabledProviders)
{
if (enabledClazz.isAssignableFrom(clazz))
{
return true;
}
}
return false;
}
}