package org.wikibrain.conf;
import org.clapper.util.classutil.ClassFilter;
import org.clapper.util.classutil.ClassFinder;
import org.clapper.util.classutil.ClassInfo;
import java.lang.reflect.Modifier;
/**
* SubclassFilter should be able to do this, but it doesn't for me.
* Note that inherited providers WILL NOT work because of this crappy
* implementation.
*/
public class ProviderFilter implements ClassFilter {
@Override
public boolean accept(ClassInfo classInfo, ClassFinder classFinder) {
if (classInfo.getClass() == null || classInfo.getSuperClassName() == null) {
return false;
}
// Support two-level hierarchy
if (!classInfo.getSuperClassName().equals(Provider.class.getName())) {
return false;
}
return !Modifier.isInterface(classInfo.getModifier()) && !Modifier.isAbstract(classInfo.getModifier());
}
}