Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2C1B5D428 for ; Fri, 24 Aug 2012 12:42:38 +0000 (UTC) Received: (qmail 19240 invoked by uid 500); 24 Aug 2012 12:42:38 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 19217 invoked by uid 500); 24 Aug 2012 12:42:37 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 19178 invoked by uid 99); 24 Aug 2012 12:42:36 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Aug 2012 12:42:36 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_FRT_PROFILE2,T_FRT_PROFIT2 X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Aug 2012 12:42:34 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B14BD2388994; Fri, 24 Aug 2012 12:41:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit 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 -0000 To: oak-commits@jackrabbit.apache.org From: stefan@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120824124151.B14BD2388994@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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); - } - } } 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. + *

+ * Example: + *

+ * {
+ *   "nodes": [ "foo*", "-foo1" ],
+ *   "properties": [ "*", "-:childNodeCount" ]
+ * }
+ * 
+ * + * @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 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