Return-Path: X-Original-To: apmail-sling-commits-archive@www.apache.org Delivered-To: apmail-sling-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 B74499D9C for ; Wed, 5 Oct 2011 20:29:35 +0000 (UTC) Received: (qmail 85843 invoked by uid 500); 5 Oct 2011 20:29:35 -0000 Delivered-To: apmail-sling-commits-archive@sling.apache.org Received: (qmail 85783 invoked by uid 500); 5 Oct 2011 20:29:35 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 85775 invoked by uid 99); 5 Oct 2011 20:29:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Oct 2011 20:29:35 +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; Wed, 05 Oct 2011 20:29:33 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 9E6052388A67; Wed, 5 Oct 2011 20:29:13 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1179422 - in /sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post: AbstractPostOperation.java SlingPostConstants.java Date: Wed, 05 Oct 2011 20:29:13 -0000 To: commits@sling.apache.org From: justin@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111005202913.9E6052388A67@eris.apache.org> Author: justin Date: Wed Oct 5 20:29:13 2011 New Revision: 1179422 URL: http://svn.apache.org/viewvc?rev=1179422&view=rev Log: SLING-2227 - applying tweaked version of patch from Markus Joschko which stops a post operation from saving the session if the request attribute skip-session-handling is true. package export already bumped to 2.1.0 in a prior change. Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java?rev=1179422&r1=1179421&r2=1179422&view=diff ============================================================================== --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java (original) +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/AbstractPostOperation.java Wed Oct 5 20:29:13 2011 @@ -124,7 +124,8 @@ public abstract class AbstractPostOperat break; } } - if (session.hasPendingChanges()) { + + if (isSessionSaveRequired(session, request)) { session.save(); } @@ -144,7 +145,7 @@ public abstract class AbstractPostOperat } finally { try { - if (session.hasPendingChanges()) { + if (isSessionSaveRequired(session, request)) { session.refresh(false); } } catch (RepositoryException e) { @@ -188,6 +189,15 @@ public abstract class AbstractPostOperat return !getVersioningConfiguration(request).isAutoCheckin(); } + protected boolean isSkipSessionHandling(SlingHttpServletRequest request) { + return Boolean.parseBoolean((String) request.getAttribute(SlingPostConstants.ATTR_SKIP_SESSION_HANDLING)) == true; + } + + protected boolean isSessionSaveRequired(Session session, SlingHttpServletRequest request) + throws RepositoryException { + return !isSkipSessionHandling(request) && session.hasPendingChanges(); + } + /** * Remove the workspace name, if any, from the start of the path and validate that the * session's workspace name matches the path workspace name. Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java?rev=1179422&r1=1179421&r2=1179422&view=diff ============================================================================== --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java (original) +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/SlingPostConstants.java Wed Oct 5 20:29:13 2011 @@ -465,4 +465,12 @@ public interface SlingPostConstants { */ public static final String RP_CHECKIN = RP_PREFIX + "checkin"; + /** + * Name of the request attribute (not parameter) indicating that a post operation + * should not invoke session.save() upon completion. + * + * @since 2.1.2 + */ + public static final String ATTR_SKIP_SESSION_HANDLING = "skip-session-handling"; + }