You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2011/10/05 22:29:13 UTC
svn commit: r1179422 - in
/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post:
AbstractPostOperation.java SlingPostConstants.java
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";
+
}