in vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/VaultFsConfig11.java [117:167]
private void processFilter(ItemFilterSet filterSet, Element elem)
throws ConfigurationException {
for (Element child: getChildElements(elem)) {
Boolean isInclude = null;
if (child.getNodeName().equals("include")) {
isInclude = true;
} else if (child.getNodeName().equals("exclude")) {
isInclude = false;
} else {
log.warn("Unknown filter type in list: " + child.getNodeName());
}
if (isInclude != null) {
try {
NamedNodeMap attrs = child.getAttributes();
ItemFilter filter = null;
String clazz = child.getAttribute("class");
if (clazz != null && clazz.length() > 0) {
filter = (ItemFilter) helper.create(child);
} else {
// create filter based on some attributes
if (attrs.getNamedItem("nodeType") != null) {
filter = new NodeTypeItemFilter();
} else if (attrs.getNamedItem("isNode") != null) {
filter = new IsNodeFilter();
} else if (attrs.getNamedItem("name") != null) {
filter = new NameItemFilter();
} else if (attrs.getNamedItem("isMandatory") != null) {
filter = new IsMandatoryFilter();
}
}
if (filter != null) {
for (int i=0; i<attrs.getLength(); i++) {
Attr attr = (Attr) attrs.item(i);
if (ConfigHelper.hasSetter(filter, attr.getName())) {
ConfigHelper.setField(filter, attr.getName(), attr.getValue());
}
}
if (isInclude) {
filterSet.addInclude(filter);
} else {
filterSet.addExclude(filter);
}
}
} catch (ConfigurationException e) {
throw e;
} catch (Exception e) {
fail("Error while processing: " + e, child);
}
}
}
}