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 AF39A987A for ; Wed, 18 Apr 2012 14:24:48 +0000 (UTC) Received: (qmail 56920 invoked by uid 500); 18 Apr 2012 14:24:48 -0000 Delivered-To: apmail-jackrabbit-oak-dev-archive@jackrabbit.apache.org Received: (qmail 56895 invoked by uid 500); 18 Apr 2012 14:24:48 -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 56884 invoked by uid 99); 18 Apr 2012 14:24:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Apr 2012 14:24:48 +0000 X-ASF-Spam-Status: No, hits=-1.3 required=5.0 tests=FRT_ADOBE2,RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of anchela@adobe.com designates 64.18.1.29 as permitted sender) Received: from [64.18.1.29] (HELO exprod6og112.obsmtp.com) (64.18.1.29) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Apr 2012 14:24:38 +0000 Received: from outbound-smtp-2.corp.adobe.com ([193.104.215.16]) by exprod6ob112.postini.com ([64.18.5.12]) with SMTP ID DSNKT47Oj8Nd4R4jySigkfQPfT4mQ/S0sE1S@postini.com; Wed, 18 Apr 2012 07:24:17 PDT Received: from inner-relay-1.corp.adobe.com (inner-relay-1.sea.adobe.com [153.32.1.51]) by outbound-smtp-2.corp.adobe.com (8.12.10/8.12.10) with ESMTP id q3IEOEaW004749 for ; Wed, 18 Apr 2012 07:24:14 -0700 (PDT) Received: from nahub01.corp.adobe.com (nahub01.corp.adobe.com [10.8.189.97]) by inner-relay-1.corp.adobe.com (8.12.10/8.12.10) with ESMTP id q3IEOAvm011507 for ; Wed, 18 Apr 2012 07:24:13 -0700 (PDT) Received: from eurhub01.eur.adobe.com (10.128.4.30) by nahub01.corp.adobe.com (10.8.189.97) with Microsoft SMTP Server (TLS) id 8.3.192.1; Wed, 18 Apr 2012 07:24:10 -0700 Received: from angela.corp.adobe.com (10.132.1.18) by eurhub01.eur.adobe.com (10.128.4.111) with Microsoft SMTP Server id 8.3.192.1; Wed, 18 Apr 2012 15:24:08 +0100 Message-ID: <4F8ECE88.2070606@adobe.com> Date: Wed, 18 Apr 2012 16:24:08 +0200 From: Angela Schreiber User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.18) Gecko/20110616 Thunderbird/3.1.11 MIME-Version: 1.0 To: Subject: Re: Oak API - a top down look References: <09021F9D-3C26-4C2F-989C-7F0DD8ADD229@adobe.com> In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit hi > On Wed, Apr 18, 2012 at 8:51 AM, Felix Meschberger wrote: >> IIUIC there is no notion of a workspace here, right ? So to implement JCR workspaces, >> those might be to top level ContentTree below the root ? > > We can handle this in two ways: > > 1. Specify the workspace name as a parameter to either login() or > getCurrentContentTree(). > 2. Have the root ContentTree represent the entire repository with > workspaces below it as subtrees. > > Personally I'd prefer option 2 since it makes it much easier to handle > cross-workspace operations, but there are complications with login() > that's in Jackrabbit 2 more or less workspace-specific. while is see that 2 may ease the implementation of cross-workspace operations i am not convinced if that justifies the drawback that i can see with that approach. jukka, do you have other use cases in mind that would benefit from that approach? since we plan to have version operations being exposed on the oak-api there imo only non-version operation use-cases left which are limited to: - Workspace.copy - Workspace.clone - maybe Workspace.create(String, String) following some preliminary concerns from my point of view: - at a first glance ContentSession sounds like a perfect match to the JCR Session - in fact a given JCR session never accesses content from a different workspace, except from the workspace name and i am not sure if exposing that content to the jcr-implementation was actually needed (or a good thing to do). what we do need imo is the possibility to execute cross-workspace operations in an efficient manner. from my point of view the execution itself was the responsibility of the oak-api implementation. e.g. having an extra workspace name param in the corresponding methods would most probably serve that need. - i am not convinced that mapping the /jcr:system node that contains repository level information should be the responsibility of the oak-jcr layer... in the light of having a sling oak-core and multiple clients of the oak-api i would prefer to delegate that to oak core. in addition it was then an implementation detail of oak-core how and where the data exposed under /jcr:system are maintained internally. exposing that structure looks like asking for troubles. an alternative approach that would expose the jcr:system node multiple times on that repository-content-tree felt even worse to me. - in jr2 users and access control are bound to a specific workspace. as long as we have very strong arguments against this, i would definitely want to have a backwards compatible implementation in the first release and i am not sure if it was feasible to achieve with 2. on the other hand going for 1 wouldn't prevent us to implement any alternative approach. - JCR query statements are execute on the oak-core layer and are always bound to a particular jcr-session/workspace context. without having thought about every single detail i have the impression that 1 was the better approach here. maybe thomas can comment on this. kind regards angela