private void processFilter()

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);
                }
            }
        }
    }