in vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrWorkspaceFilter.java [49:112]
public static DefaultWorkspaceFilter loadFilter(Node defNode) throws RepositoryException {
DefaultWorkspaceFilter wsp = new DefaultWorkspaceFilter();
if (defNode.hasNode(JcrPackageDefinitionImpl.NN_FILTER)) {
defNode = defNode.getNode(JcrPackageDefinitionImpl.NN_FILTER);
}
for (NodeIterator filters = defNode.getNodes(); filters.hasNext();) {
Node filter = filters.nextNode();
String root = filter.hasProperty(JcrPackageDefinitionImpl.PN_ROOT)
? filter.getProperty(JcrPackageDefinitionImpl.PN_ROOT).getString()
: "";
if (root.length() == 0) {
continue;
}
boolean isPropertyFilter = false;
if (filter.getName().startsWith("p")) {
isPropertyFilter = true;
}
String mode = filter.hasProperty(JcrPackageDefinitionImpl.PN_MODE)
? filter.getProperty(JcrPackageDefinitionImpl.PN_MODE).getString()
: "";
PathFilterSet set = new PathFilterSet(root);
PathFilterSet propertySet = new PathFilterSet(root);
if (mode.length() > 0) {
set.setImportMode(ImportMode.valueOf(mode.toUpperCase(Locale.ROOT)));
propertySet.setImportMode(ImportMode.valueOf(mode.toUpperCase(Locale.ROOT)));
}
if (filter.hasProperty(JcrPackageDefinitionImpl.PN_RULES)) {
try {
loadRules(set, filter, JcrPackageDefinitionImpl.PN_RULES);
if (!loadRules(propertySet, filter, JcrPackageDefinitionImpl.PN_PROPERTY_RULES)) {
propertySet = null;
}
} catch (ConfigurationException e) {
throw new RepositoryException("Can not load filter from node " + defNode.getPath(), e);
}
} else {
// this is the legacy format
for (NodeIterator rules = filter.getNodes(); rules.hasNext();) {
Node rule = rules.nextNode();
String type = rule.getProperty(JcrPackageDefinitionImpl.PN_TYPE).getString();
String pattern = rule.getProperty(JcrPackageDefinitionImpl.PN_PATTERN).getString();
DefaultPathFilter pf;
try {
pf = new DefaultPathFilter(pattern);
} catch (ConfigurationException e) {
throw new RepositoryException("Can not load filter from node " + defNode.getPath(), e);
}
if ("include".equals(type)) {
set.addInclude(pf);
} else {
set.addExclude(pf);
}
}
propertySet = null;
}
if (propertySet != null) {
wsp.add(set, propertySet);
} else {
wsp.add(set);
}
}
return wsp;
}