package org.geoserver.platform;
/**
* Black lists a bean by class. By default filters out only the object of the specified class, but
* it can be configured to match an entire inheritance tree
*
* @author Andrea Aime - OpenGeo
*
*/
public class ClassExclusionFilter implements ExtensionFilter {
Class beanClass;
boolean matchSubclasses;
public Class getBeanClass() {
return beanClass;
}
/**
* Specifies which class to be filtered away
* @param beanClass
*/
public void setBeanClass(Class beanClass) {
this.beanClass = beanClass;
}
public boolean isMatchSubclasses() {
return matchSubclasses;
}
/**
* When true enables hierarchy matching. Defaults to false
* @param matchSubclasses
*/
public void setMatchSubclasses(boolean matchSubclasses) {
this.matchSubclasses = matchSubclasses;
}
public boolean exclude(String beanId, Object bean) {
if (this.beanClass != null && bean != null) {
if(matchSubclasses)
return this.beanClass.isAssignableFrom(bean.getClass());
else
return this.beanClass.equals(bean.getClass());
}
return false;
}
}