svn commit: r562417 - in /lenya/trunk/src: java/org/apache/lenya/cms/rc/ modules-core/sitemanagement/config/cocoon-xconf/site/ modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ modules/sourcerepository/java/src/org/apache/lenya/c...

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Fri Aug  3 04:41:53 2007
New Revision: 562417

URL: http://svn.apache.org/viewvc?view=rev&rev=562417
Log:
Simplified and cleaned up revision control code. The SourceNodeRCML doesn't write to the real source anymore. This is part of the fix for bug 42937.

Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java
    lenya/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java?view=diff&rev=562417&r1=562416&r2=562417
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java Fri Aug  3 04:41:53 2007
@@ -20,7 +20,6 @@
 
 package org.apache.lenya.cms.rc;
 
-import java.io.FileNotFoundException;
 import java.util.Date;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
@@ -211,38 +210,13 @@
     /**
      * Rolls back to the given point in time.
      * @param node The node which will be rolled back
-     * @param identity The identity of the user
-     * @param backupFlag If true, a backup of the current version will be made
      *        before the rollback
      * @param time The time point of the desired version
-     * @return long The time of the version to roll back to.
-     * @exception FileReservedCheckInException if the current version couldn't
-     *            be checked in again
-     * @exception FileReservedCheckOutException if the current version couldn't
-     *            be checked out
-     * @exception FileNotFoundException if a file couldn't be found
-     * @exception Exception if another problem occurs
+     * @exception Exception if a problem occurs
      */
-    public long rollback(Node node, String identity, boolean backupFlag, long time)
+    public void rollback(Node node, long time)
             throws Exception {
-
-        // Make sure the old version exists
-        RCML rcml = node.getRcml();
-
-        // Try to check out current version
-        reservedCheckOut(node, identity);
-        rcml.restoreBackup(time);
-
-        // Try to check back in, this might cause
-        // a backup of the current version to be created if
-        // desired by the user.
-        // XXX: what is the use of a backup if doc isn't versioned, can't
-        // rollback?
-        // long newtime = reservedCheckIn(destination, identity, backupFlag,
-        // false);
-        long newtime = reservedCheckIn(node, identity, backupFlag, backupFlag);
-
-        return newtime;
+        node.getRcml().restoreBackup(time);
     }
 
     /**

Modified: lenya/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf?view=diff&rev=562417&r1=562416&r2=562417
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf (original)
+++ lenya/trunk/src/modules-core/sitemanagement/config/cocoon-xconf/site/usecase-site-rollback.xconf Fri Aug  3 04:41:53 2007
@@ -22,7 +22,8 @@
 -->
 
   <xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'sitemanagement.rollback']">
-    <component-instance name="sitemanagement.rollback" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Rollback">
+    <component-instance name="sitemanagement.rollback" logger="lenya.site" class="org.apache.lenya.cms.site.usecases.Rollback">
+      <parameter name="workflowEvent" value="edit"/>
       <exit usecase="tab.revisions" />
     </component-instance>
   </xconf>

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java?view=diff&rev=562417&r1=562416&r2=562417
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Rollback.java Fri Aug  3 04:41:53 2007
@@ -17,17 +17,7 @@
  */
 package org.apache.lenya.cms.site.usecases;
 
-import java.io.FileNotFoundException;
-import java.util.Map;
-
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
-import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.User;
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.rc.RevisionController;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
@@ -37,7 +27,7 @@
  * Rollback.
  */
 public class Rollback extends DocumentUsecase {
-	
+
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#getNodesToLock()
      */
@@ -61,43 +51,18 @@
     protected void doExecute() throws Exception {
         super.doExecute();
 
-        // Get parameters                                                                                                                       
         String rollbackTime = getParameterAsString("rollbackTime");
-            
-        // Do the rollback to an earlier version
-        long newtime = 0;
-        
+
         Document document = getSourceDocument();
+        long time = new Long(rollbackTime).longValue();
+        document.getRepositoryNode().getRcml().restoreBackup(time);
         
-        // Initialize Revision Controller
-        RevisionController rc = new RevisionController(getLogger());
-        
-        Map objectModel = ContextHelper.getObjectModel(getContext());
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Session session = request.getSession(false);
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-        User user = identity.getUser();
-        
-        try {
-            newtime = rc.rollback(document.getRepositoryNode(), user.getId(), true, new Long(rollbackTime).longValue());
-            WorkflowUtil.invoke(this.manager,
-                getSession(),
-                getLogger(),
-                getSourceDocument(),
+        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), getSourceDocument(),
                 getEvent());
-        } catch (FileNotFoundException e) {
-            addErrorMessage("Unable to roll back!" + e);
-        } catch (Exception e) {
-            addErrorMessage("Unable to roll back!" + e);
-        }
-            
-        getLogger().debug("rollback complete, old (and now current) time was " + rollbackTime +
-              " backup time is " + newtime);
-                
     }
 
     protected String getEvent() {
-        return "edit";
+        return getParameterAsString("workflowEvent");
     }
 
 }

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java?view=diff&rev=562417&r1=562416&r2=562417
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java Fri Aug  3 04:41:53 2007
@@ -31,6 +31,7 @@
 
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.rc.CheckInEntry;
 import org.apache.lenya.cms.rc.CheckOutEntry;
@@ -380,10 +381,16 @@
 
     protected void restoreBackup(SourceWrapper wrapper, long time) throws RevisionControlException {
         String backupSourceUri = getBackupSourceUri(wrapper, time);
+        SourceResolver resolver = null;
         try {
-            SourceUtil.copy(this.manager, backupSourceUri, wrapper.getRealSourceUri());
+            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+            SourceUtil.copy(resolver, backupSourceUri, wrapper.getOutputStream());
         } catch (Exception e) {
             throw new RevisionControlException(e);
+        } finally {
+            if (resolver != null) {
+                this.manager.release(resolver);
+            }
         }
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.