Return-Path: X-Original-To: apmail-jackrabbit-oak-dev-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5475ACA2E for ; Thu, 12 Jul 2012 11:23:05 +0000 (UTC) Received: (qmail 77528 invoked by uid 500); 12 Jul 2012 11:23:05 -0000 Delivered-To: apmail-jackrabbit-oak-dev-archive@jackrabbit.apache.org Received: (qmail 77505 invoked by uid 500); 12 Jul 2012 11:23:05 -0000 Mailing-List: contact oak-dev-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-dev@jackrabbit.apache.org Received: (qmail 77491 invoked by uid 99); 12 Jul 2012 11:23:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Jul 2012 11:23:04 +0000 X-ASF-Spam-Status: No, hits=-1.6 required=5.0 tests=RCVD_IN_DNSWL_MED,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [64.18.1.23] (HELO exprod6og109.obsmtp.com) (64.18.1.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Jul 2012 11:22:55 +0000 Received: from outbound-smtp-1.corp.adobe.com ([192.150.11.134]) by exprod6ob109.postini.com ([64.18.5.12]) with SMTP ID DSNKT/6ze+p2br5P77X5c9wdehS/KG55VMDZ@postini.com; Thu, 12 Jul 2012 04:22:35 PDT Received: from inner-relay-4.eur.adobe.com (inner-relay-4.adobe.com [193.104.215.14]) by outbound-smtp-1.corp.adobe.com (8.12.10/8.12.10) with ESMTP id q6CBKCk0023622 for ; Thu, 12 Jul 2012 04:20:12 -0700 (PDT) Received: from nacas02.corp.adobe.com (nacas02.corp.adobe.com [10.8.189.100]) by inner-relay-4.eur.adobe.com (8.12.10/8.12.9) with ESMTP id q6CBMXYr020215 for ; Thu, 12 Jul 2012 04:22:33 -0700 (PDT) Received: from eurhub01.eur.adobe.com (10.128.4.30) by nacas02.corp.adobe.com (10.8.189.100) with Microsoft SMTP Server (TLS) id 8.3.192.1; Thu, 12 Jul 2012 04:22:32 -0700 Received: from susi.local (10.136.135.213) by eurhub01.eur.adobe.com (10.128.4.111) with Microsoft SMTP Server id 8.3.192.1; Thu, 12 Jul 2012 12:22:30 +0100 Message-ID: <4FFEB376.1070802@apache.org> Date: Thu, 12 Jul 2012 12:22:30 +0100 From: =?ISO-8859-1?Q?Michael_D=FCrig?= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 MIME-Version: 1.0 To: Subject: Re: Internal content in Oak References: In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org On 12.7.12 12:11, Jukka Zitting wrote: > Hi, > > The discussion about orderable nodes (OAK-169) brought up a topic that > we'll be needing in a few other cases as well: How to handle extra > internal content that's needed to implement specific JCR features, but > that generally shouldn't be directly visible through the JCR API? > > For example, the extra Oak-level property (or properties, depending on > how we implement the feature) needed to keep track of JCR-level node > ordering information needs to be available through the Oak API since > oak-jcr needs it in order to correctly implement JCR methods like > getNodes() or orderBefore(), but such extra properties shouldn't be > directly visible to JCR clients as that would break application-level > assumptions about node content and massively complicate node type > handling. > > One approach that's been in the air so far is to use some built-in > "oak" namespace for such internal, and then filter out all content > under that namespace in the oak-jcr layer. However, I believe we'll > need such a namespace also for things that *are* visible to clients. > For example the proposed "oak:unstructured" node type (i.e. > "nt:unstructured" without orderable child nodes or same name siblings) > would need to be visible to JCR clients, and things like query index > configuration (OAK-178) fall in to the same category. Also, using a > "normal" JCR namespace introduces a potential conflict with existing > namespace prefixes. > > So I was thinking of using an explicitly invalid JCR name pattern for > such internal content. A nice one would be the ":name" pattern that's > already used by the MicroKernel for the ":childNodeCount" and ":hash" > pseudo-properties. For example, the child ordering information in > OAK-169 could go to a ":childOrder" property that's visible through > the Oak API and understood by things like namespace and node type > validators. The oak-jcr component could then internally access and > manipulate such properties, while automatically filtering them out > from the set of content directly visible to the client. > > WDYT? +1 I just discussed this with Thomas off line yesterday. We also need this for excluding the branch where the query index is saved from observation. Otherwise we'd create zillions of observation events for index updates. Michael > > BR, > > Jukka Zitting >