svn commit: r568030 - /lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
[email protected] Tue, 21 Aug 2007 09:06:58 -0000
Newsgroups
gmane.comp.cms.lenya.cvs
Message-ID
<[email protected] >
Author: andreas
Date: Tue Aug 21 02:06:57 2007
New Revision: 568030
URL: http://svn.apache.org/viewvc?rev=568030&view=rev
Log:
Use modifiable session in ReservedCheckinAction (fixes bug 43157)
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java?rev=568030&r1=568029&r2=568030&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java Tue Aug 21 02:06:57 2007
@@ -24,10 +24,18 @@
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.lenya.ac.Identity;
+import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.repository.Node;
import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.util.ServletHelper;
/**
* Checkin document
@@ -44,24 +52,29 @@
Parameters parameters) throws Exception {
super.act(redirector, resolver, objectModel, src, parameters);
- HashMap actionMap = new HashMap();
-
- boolean backup = true;
- if (parameters.getParameter("backup", "true").equals("false"))
- backup = false;
- getLogger().debug("Backup: " + backup);
-
try {
- Node node = getNode();
- if (node.isCheckedOutBySession(node.getSession())) {
- node.checkin();
+ Request request = ObjectModelHelper.getRequest(objectModel);
+ Identity identity = (Identity) request.getSession().getAttribute(Identity.class.getName());
+ Session session = RepositoryUtil.createSession(this.manager, identity, true);
+
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+ String url = ServletHelper.getWebappURI(request);
+ if (factory.isDocument(url)) {
+ Node node = factory.getFromURL(url).getRepositoryNode();
+ if (node.isCheckedOutBySession(session)) {
+ node.checkin();
+ }
}
+ else {
+ throw new RuntimeException("The URL [" + url + "] doesn't represent a document.");
+ }
+
} catch (RepositoryException e) {
+ getLogger().error("Could not check in node: ", e);
+ Map actionMap = new HashMap();
actionMap.put("exception", "genericException");
actionMap.put("filename", getNode().getSourceURI());
actionMap.put("message", e.getMessage());
- getLogger().warn("The document " + getNode().getSourceURI() + " couldn't be checked in");
-
return actionMap;
}