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 EA25AFFE8 for ; Tue, 13 Aug 2013 14:53:52 +0000 (UTC) Received: (qmail 21060 invoked by uid 500); 13 Aug 2013 14:53:52 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 21023 invoked by uid 500); 13 Aug 2013 14:53:52 -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 21010 invoked by uid 99); 13 Aug 2013 14:53:52 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Aug 2013 14:53:52 +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; Tue, 13 Aug 2013 14:53:50 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A0A6E2388ADA; Tue, 13 Aug 2013 14:53:30 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1513521 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr: ItemImpl.java delegate/SessionDelegate.java delegate/UserManagerDelegator.java lock/LockImpl.java operation/SessionOperation.java Date: Tue, 13 Aug 2013 14:53:30 -0000 To: oak-commits@jackrabbit.apache.org From: mduerig@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130813145330.A0A6E2388ADA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mduerig Date: Tue Aug 13 14:53:30 2013 New Revision: 1513521 URL: http://svn.apache.org/r1513521 Log: OAK-938 UserManager does not honour session refresh settings Add and use SessionDelegate.safePerform Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockImpl.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/operation/SessionOperation.java Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java?rev=1513521&r1=1513520&r2=1513521&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java Tue Aug 13 14:53:30 2013 @@ -107,12 +107,7 @@ abstract class ItemImpl U safePerform(@Nonnull SessionOperation op) { - try { - return sessionDelegate.perform(op); - } catch (RepositoryException e) { - throw new RuntimeException( - "Unexpected exception thrown by operation " + op, e); - } + return sessionDelegate.safePerform(op); } //---------------------------------------------------------------< Item >--- Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java?rev=1513521&r1=1513520&r2=1513521&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java Tue Aug 13 14:53:30 2013 @@ -97,6 +97,7 @@ public class SessionDelegate { * @param return type of {@code sessionOperation} * @return the result of {@code sessionOperation.perform()} * @throws RepositoryException + * @see #getRoot() */ public synchronized T perform(SessionOperation sessionOperation) throws RepositoryException { @@ -136,6 +137,26 @@ public class SessionDelegate { } } + /** + * Same as {@link #perform(SessionOperation)} unless this method expects + * {@link SessionOperation#perform} not to throw a {@code RepositoryException}. + * Such exceptions will be wrapped into a {@code RuntimeException} and rethrown as they + * are considered an internal error. + * + * @param sessionOperation the {@code SessionOperation} to perform + * @param return type of {@code sessionOperation} + * @return the result of {@code sessionOperation.perform()} + * @see #getRoot() + */ + public T safePerform(SessionOperation sessionOperation) { + try { + return perform(sessionOperation); + } catch (RepositoryException e) { + throw new RuntimeException("Unexpected exception thrown by operation " + + sessionOperation, e); + } + } + @Nonnull public ContentSession getContentSession() { return contentSession; @@ -383,13 +404,21 @@ public class SessionDelegate { return root.getQueryEngine(); } - //-----------------------------------------------------------< internal >--- - - @Nonnull // FIXME this should be package private. OAK-672 + /** + * The current {@code Root} instance this session delegate instance operates on. + * To ensure the returned root reflects the correct repository revision access + * should only be done from within a {@link SessionOperation} closure through + * {@link #perform(SessionOperation)}. + * + * @return current root + */ + @Nonnull public Root getRoot() { return root; } + //-----------------------------------------------------------< internal >--- + /** * Wraps the given {@link CommitFailedException} instance using the * appropriate {@link RepositoryException} subclass based on the @@ -401,5 +430,4 @@ public class SessionDelegate { private static RepositoryException newRepositoryException(CommitFailedException exception) { return exception.asRepositoryException(); } - } Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java?rev=1513521&r1=1513520&r2=1513521&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java Tue Aug 13 14:53:30 2013 @@ -170,17 +170,12 @@ public class UserManagerDelegator implem @Override public boolean isAutoSave() { - try { - return sessionDelegate.perform(new UserManagerOperation(sessionDelegate) { - @Override - public Boolean perform() { - return userManagerDelegate.isAutoSave(); - } - }); - } catch (RepositoryException e) { - assert false : "Unexpected exception: " + e; - return false; - } + return sessionDelegate.safePerform(new UserManagerOperation(sessionDelegate) { + @Override + public Boolean perform() { + return userManagerDelegate.isAutoSave(); + } + }); } @Override Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockImpl.java?rev=1513521&r1=1513520&r2=1513521&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockImpl.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockImpl.java Tue Aug 13 14:53:30 2013 @@ -119,12 +119,7 @@ public final class LockImpl implements L */ @CheckForNull private final U safePerform(@Nonnull SessionOperation op) { - try { - return context.getSessionDelegate().perform(op); - } catch (RepositoryException e) { - throw new RuntimeException( - "Unexpected exception thrown by operation " + op, e); - } + return context.getSessionDelegate().safePerform(op); } } Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/operation/SessionOperation.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/operation/SessionOperation.java?rev=1513521&r1=1513520&r2=1513521&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/operation/SessionOperation.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/operation/SessionOperation.java Tue Aug 13 14:53:30 2013 @@ -22,6 +22,7 @@ import javax.jcr.RepositoryException; /** * A {@code SessionOperation} provides an execution context for executing session scoped operations. + * @see org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate#perform(SessionOperation) */ public abstract class SessionOperation {