Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java (revision 0) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java (working copy) @@ -0,0 +1,67 @@ +package org.apache.jackrabbit.mk.util; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.jackrabbit.mk.json.JsopTokenizer; + +public class NodeFilter { + + NameFilter nodeFilter; + NameFilter propFilter; + + private NodeFilter(NameFilter nodeFilter, NameFilter propFilter) { + this.nodeFilter = nodeFilter; + this.propFilter = propFilter; + } + + public static NodeFilter parse(String json) { + // parse json format filter + JsopTokenizer t = new JsopTokenizer(json); + t.read('{'); + + NameFilter nodeFilter = null, propFilter = null; + + do { + String type = t.readString(); + t.read(':'); + String[] globs = parseArray(t); + if (type.equals("nodes")) { + nodeFilter = new NameFilter(globs); + } else if (type.equals("properties")) { + propFilter = new NameFilter(globs); + } else { + throw new IllegalArgumentException("illegal filter format"); + } + } while (t.matches(',')); + t.read('}'); + + return new NodeFilter(nodeFilter, propFilter); + } + + private static String[] parseArray(JsopTokenizer t) { + List l = new ArrayList(); + t.read('['); + do { + l.add(t.readString()); + } while (t.matches(',')); + t.read(']'); + return l.toArray(new String[l.size()]); + } + + public NameFilter getChildNodeFilter() { + return nodeFilter; + } + + public NameFilter getPropertyFilter() { + return propFilter; + } + + public boolean includeNode(String name) { + return nodeFilter == null || nodeFilter.matches(name); + } + + public boolean includeProperty(String name) { + return propFilter == null || propFilter.matches(name); + } +} \ No newline at end of file Property changes on: oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java (revision 1375470) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java (working copy) @@ -32,6 +32,7 @@ import org.apache.jackrabbit.mk.model.tree.PropertyState; import org.apache.jackrabbit.mk.util.CommitGate; import org.apache.jackrabbit.mk.util.NameFilter; +import org.apache.jackrabbit.mk.util.NodeFilter; import org.apache.jackrabbit.oak.commons.PathUtils; import java.io.InputStream; @@ -641,67 +642,4 @@ } } } - - //-------------------------------------------------------< inner classes > - - static class NodeFilter { - - NameFilter nodeFilter; - NameFilter propFilter; - - private NodeFilter(NameFilter nodeFilter, NameFilter propFilter) { - this.nodeFilter = nodeFilter; - this.propFilter = propFilter; - } - - static NodeFilter parse(String json) { - // parse json format filter - JsopTokenizer t = new JsopTokenizer(json); - t.read('{'); - - NameFilter nodeFilter = null, propFilter = null; - - do { - String type = t.readString(); - t.read(':'); - String[] globs = parseArray(t); - if (type.equals("nodes")) { - nodeFilter = new NameFilter(globs); - } else if (type.equals("properties")) { - propFilter = new NameFilter(globs); - } else { - throw new IllegalArgumentException("illegal filter format"); - } - } while (t.matches(',')); - t.read('}'); - - return new NodeFilter(nodeFilter, propFilter); - } - - private static String[] parseArray(JsopTokenizer t) { - List l = new ArrayList(); - t.read('['); - do { - l.add(t.readString()); - } while (t.matches(',')); - t.read(']'); - return l.toArray(new String[l.size()]); - } - - NameFilter getChildNodeFilter() { - return nodeFilter; - } - - NameFilter getPropertyFilter() { - return propFilter; - } - - boolean includeNode(String name) { - return nodeFilter == null || nodeFilter.matches(name); - } - - boolean includeProperty(String name) { - return propFilter == null || propFilter.matches(name); - } - } -} +} \ No newline at end of file