jackrabbit-oak-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ste...@apache.org
Subject svn commit: r1376896 - in /jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk: core/MicroKernelImpl.java util/NodeFilter.java
Date Fri, 24 Aug 2012 12:41:51 GMT
Author: stefan
Date: Fri Aug 24 12:41:51 2012
New Revision: 1376896

URL: http://svn.apache.org/viewvc?rev=1376896&view=rev
Log:
OAK-274: Split NodeFilter into its own class

Added:
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java
Modified:
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java?rev=1376896&r1=1376895&r2=1376896&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
(original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
Fri Aug 24 12:41:51 2012
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.mk.model.tr
 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 org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -651,67 +652,4 @@ public class MicroKernelImpl implements 
             }
         }
     }
-
-    //-------------------------------------------------------< 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<String> l = new ArrayList<String>();
-            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);
-        }
-    }
 }

Added: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java?rev=1376896&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java
(added)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/util/NodeFilter.java
Fri Aug 24 12:41:51 2012
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.mk.util;
+
+import org.apache.jackrabbit.mk.json.JsopTokenizer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A {@code NodeFilter} represents a filter on property and/or node names specified
+ * in JSON format. It allows to specify glob patterns for names of nodes and/or
+ * properties to be included or excluded.
+ * <p/>
+ * Example:
+ * <pre>
+ * {
+ *   "nodes": [ "foo*", "-foo1" ],
+ *   "properties": [ "*", "-:childNodeCount" ]
+ * }
+ * </pre>
+ *
+ * @see NameFilter
+ * @see org.apache.jackrabbit.mk.api.MicroKernel#getNodes(String, String, int, long, int,
String)
+ */
+public class NodeFilter {
+
+    private final NameFilter nodeFilter;
+    private final 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<String> l = new ArrayList<String>();
+        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



Mime
View raw message