You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2007/07/27 17:12:38 UTC

svn commit: r560269 - /lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java

Author: andreas
Date: Fri Jul 27 08:12:37 2007
New Revision: 560269

URL: http://svn.apache.org/viewvc?view=rev&rev=560269
Log:
[minor change] code cleanup, formatting

Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.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=560269&r1=560268&r2=560269
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/rc/RevisionController.java Fri Jul 27 08:12:37 2007
@@ -28,14 +28,16 @@
 import org.apache.lenya.cms.repository.Node;
 
 /**
- * Controller for the reserved check-in, check-out, the backup versions and the rollback
+ * Controller for the reserved check-in, check-out, the backup versions and the
+ * rollback
  */
 public class RevisionController extends AbstractLogEnabled {
 
     /**
-     * <code>systemUsername</code> The system user name. This is used for - creating dummy checkin
-     * events in a new RCML file when it is created on-the-fly - system override on checkin, i.e.
-     * you can force a checkin into the repository if you use this username as identity parameter to
+     * <code>systemUsername</code> The system user name. This is used for -
+     * creating dummy checkin events in a new RCML file when it is created
+     * on-the-fly - system override on checkin, i.e. you can force a checkin
+     * into the repository if you use this username as identity parameter to
      * reservedCheckIn()
      */
     public static final String systemUsername = "System";
@@ -65,7 +67,8 @@
     }
 
     /**
-     * Try to make a reserved check out of the file source for a user with identity
+     * Try to make a reserved check out of the file source for a user with
+     * identity
      * 
      * @param node The node to check out
      * @param identity The identity of the user
@@ -76,19 +79,17 @@
         RCML rcml = node.getRcml();
 
         RCMLEntry entry = rcml.getLatestEntry();
-
-        // The same user is allowed to check out repeatedly without
-        // having to check back in first.
-        //
-        if (entry != null) {
-            getLogger().debug("entry: " + entry);
-            getLogger().debug("entry.type:" + entry.getType());
-            getLogger().debug("entry.identity" + entry.getIdentity());
-        }
-
-        if ((entry != null) && (entry.getType() != RCML.ci)
-                && !entry.getIdentity().equals(identity)) {
-            throw new FileReservedCheckOutException(node.getSourceURI(), rcml);
+        if (entry != null && entry.getType() == RCML.co) {
+            
+            // don't check out twice
+            if (entry.getIdentity().equals(identity)) {
+                return;
+            }
+            
+            // checked out by somebody else
+            else {
+                throw new FileReservedCheckOutException(node.getSourceURI(), rcml);
+            }
         }
 
         rcml.checkOutIn(RCML.co, identity, new Date().getTime(), false);
@@ -105,19 +106,8 @@
         RCML rcml = node.getRcml();
 
         RCMLEntry entry = rcml.getLatestEntry();
-
-        // The same user is allowed to check out repeatedly without
-        // having to check back in first.
-        //
-        if (entry != null) {
-            getLogger().debug("entry: " + entry);
-            getLogger().debug("entry.type:" + entry.getType());
-            getLogger().debug("entry.identity" + entry.getIdentity());
-        }
-
         boolean checkedOutByOther = entry != null && entry.getType() != RCML.ci
                 && !entry.getIdentity().equals(identity);
-
         return !checkedOutByOther;
     }
 
@@ -128,37 +118,29 @@
      */
     public boolean isCheckedOut(Node node) throws Exception {
         RCML rcml = node.getRcml();
-
         RCMLEntry entry = rcml.getLatestEntry();
-
-        // The same user is allowed to check out repeatedly without
-        // having to check back in first.
-        //
-        if (entry != null) {
-            getLogger().debug("entry: " + entry);
-            getLogger().debug("entry.type:" + entry.getType());
-            getLogger().debug("entry.identity" + entry.getIdentity());
-        }
         return entry != null && entry.getType() == RCML.co;
     }
 
     /**
-     * Try to make a reserved check in of the file destination for a user with identity. A backup
-     * copy can be made.
+     * Try to make a reserved check in of the file destination for a user with
+     * identity. A backup copy can be made.
      * 
      * @param node The node to control.
      * @param identity The identity of the user
-     * @param backup if true, a backup will be created, else no backup will be made.
+     * @param backup if true, a backup will be created, else no backup will be
+     *        made.
      * @param newVersion If true, a new version will be created.
      * 
      * @return long The time.
      * 
-     * @exception FileReservedCheckInException if the document couldn't be checked in (for instance
-     *                because it is already checked out by someone other ...)
+     * @exception FileReservedCheckInException if the document couldn't be
+     *            checked in (for instance because it is already checked out by
+     *            someone other ...)
      * @exception Exception if other problems occur
      */
-    public long reservedCheckIn(Node node, String identity, boolean backup,
-            boolean newVersion) throws FileReservedCheckInException, Exception {
+    public long reservedCheckIn(Node node, String identity, boolean backup, boolean newVersion)
+            throws FileReservedCheckInException, Exception {
 
         RCML rcml;
         long time = new Date().getTime();
@@ -179,18 +161,20 @@
             /*
              * Possible cases and rules:
              * 
-             * 1.) we were able to read the latest checkin and it is later than latest checkout
-             * (i.e. there is no open checkout to match this checkin, an unusual case) 1.1.)
-             * identity of latest checkin is equal to current user -> checkin allowed, same user
-             * may check in repeatedly 1.2.) identity of latest checkin is not equal to current
-             * user -> checkin rejected, may not overwrite the revision which another user
-             * checked in previously 2.) there was no checkin or the latest checkout is later
-             * than latest checkin (i.e. there is an open checkout) 2.1.) identity of latest
-             * checkout is equal to current user -> checkin allowed, user checked out and may
-             * check in again (the most common case) 2.2.) identity of latest checkout is not
-             * equal to current user -> checkin rejected, may not check in while another user is
-             * working on this document
-             *  
+             * 1.) we were able to read the latest checkin and it is later than
+             * latest checkout (i.e. there is no open checkout to match this
+             * checkin, an unusual case) 1.1.) identity of latest checkin is
+             * equal to current user -> checkin allowed, same user may check in
+             * repeatedly 1.2.) identity of latest checkin is not equal to
+             * current user -> checkin rejected, may not overwrite the revision
+             * which another user checked in previously 2.) there was no checkin
+             * or the latest checkout is later than latest checkin (i.e. there
+             * is an open checkout) 2.1.) identity of latest checkout is equal
+             * to current user -> checkin allowed, user checked out and may
+             * check in again (the most common case) 2.2.) identity of latest
+             * checkout is not equal to current user -> checkin rejected, may
+             * not check in while another user is working on this document
+             * 
              */
             if ((cie != null) && (cie.getTime() > coe.getTime())) {
                 // We have case 1
@@ -208,7 +192,7 @@
                 }
             }
         }
-        
+
         if (backup) {
             rcml.makeBackup(time);
         }
@@ -228,11 +212,14 @@
      * 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 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 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
      */
@@ -249,8 +236,10 @@
         // 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);
+        // 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;
@@ -260,8 +249,8 @@
      * Delete the check in and roll back the file to the backup at time
      * @param time The time point of the back version we want to retrieve
      * @param node The node for which we want undo the check in
-     * @exception Exception FileNotFoundException if the back version or the current version
-     *                couldn't be found
+     * @exception Exception FileNotFoundException if the back version or the
+     *            current version couldn't be found
      */
     public void undoCheckIn(long time, Node node) throws Exception {
         RCML rcml = node.getRcml();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org