Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B00D898AE for ; Thu, 13 Oct 2011 17:25:39 +0000 (UTC) Received: (qmail 41873 invoked by uid 500); 13 Oct 2011 17:25:39 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 41838 invoked by uid 500); 13 Oct 2011 17:25:39 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 41831 invoked by uid 99); 13 Oct 2011 17:25:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Oct 2011 17:25:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED 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; Thu, 13 Oct 2011 17:25:36 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 731812388900; Thu, 13 Oct 2011 17:25:15 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1182998 - in /jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel: SessionInfoImpl.java SubscriptionImpl.java Date: Thu, 13 Oct 2011 17:25:15 -0000 To: commits@jackrabbit.apache.org From: mduerig@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111013172515.731812388900@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mduerig Date: Thu Oct 13 17:25:14 2011 New Revision: 1182998 URL: http://svn.apache.org/viewvc?rev=1182998&view=rev Log: Microkernel based Jackrabbit prototype (WIP) observation: use session id to determine which changes are local Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SessionInfoImpl.java jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SessionInfoImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SessionInfoImpl.java?rev=1182998&r1=1182997&r2=1182998&view=diff ============================================================================== --- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SessionInfoImpl.java (original) +++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SessionInfoImpl.java Thu Oct 13 17:25:14 2011 @@ -25,25 +25,21 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.jcr.RepositoryException; -import java.util.ArrayList; -import java.util.List; import java.util.UUID; +import java.util.concurrent.atomic.AtomicReference; public class SessionInfoImpl extends org.apache.jackrabbit.spi.commons.SessionInfoImpl { private static final Logger log = LoggerFactory.getLogger(SessionInfoImpl.class); private final String id = UUID.randomUUID().toString(); private final MicroKernel microKernel; - private final List commitLog = new ArrayList(); - - private String revision; + private final AtomicReference revision = new AtomicReference(); public SessionInfoImpl(MicroKernel microKernel, String userId, String workspaceName) { this.microKernel = microKernel; setUserID(userId); setWorkspacename(workspaceName); - revision = microKernel.getHeadRevision(); - commitLog.add(revision); + revision.set(microKernel.getHeadRevision()); } public String getId() { @@ -51,16 +47,13 @@ public class SessionInfoImpl extends org } public String getRevision() { - return revision; + return revision.get(); } public void commitWithLock(Function1 commit) throws RepositoryException { try { - synchronized (commitLog) { - revision = commit.apply(microKernel); - refresh(); - commitLog.add(revision); - } + revision.set(commit.apply(microKernel)); + super.refresh(); } catch (Exception e) { log.error(e.getMessage(), e); @@ -68,44 +61,12 @@ public class SessionInfoImpl extends org } } - /** - * The initial revision from when the session was created - * @return - */ - public String getInitialRevision() { - synchronized (commitLog) { - return commitLog.get(commitLog.size() - 1); - } - } - - /** - * Snapshot of this session state's commit log at the time of the call - * @return - */ - public List getCommitLog() { - List commitLog = new ArrayList(this.commitLog.size()); - synchronized (this.commitLog) { - commitLog.addAll(this.commitLog); - } - return commitLog; - } - - /** - * Determines whether the given {@code revisionId} was committed by this session. - * That is, whether the commit log of this instance contains the given revisionId. - * @param revisionId - * @return - */ - public boolean hasRevision(String revisionId) { - return getCommitLog().contains(revisionId); - } - //------------------------------------------< SessionInfo >--- @Override public void refresh() { super.refresh(); - revision = microKernel.getHeadRevision(); + revision.set(microKernel.getHeadRevision()); } //------------------------------------------< Object >--- Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java?rev=1182998&r1=1182997&r2=1182998&view=diff ============================================================================== --- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java (original) +++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java Thu Oct 13 17:25:14 2011 @@ -246,7 +246,7 @@ public class SubscriptionImpl implements public EventSource(EventFilter[] eventFilters, SessionInfoImpl sessionInfo) { this.eventFilters = eventFilters; - startRevision = sessionInfo.getInitialRevision(); + startRevision = sessionInfo.getRevision(); } public EventSource(EventFilter[] eventFilters, String startRevision) { @@ -318,7 +318,7 @@ public class SubscriptionImpl implements .setUserData(commitInfo.getUserData()); Collection events = getEvents(changes, eventTemplate); - boolean isLocal = sessionInfo.hasRevision(revisionId); + boolean isLocal = sessionInfo.getId().equals(commitInfo.getSessionId()); // events.filter(event => eventFilters.any(_.accept(event, isLocal)) for (Iterator it = events.iterator(); it.hasNext(); ) {