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/09/11 16:09:38 UTC

svn commit: r574602 - in /lenya/trunk/src: modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/ modules/sourcerepository/java/src/org/apache/lenya/cms/repository/

Author: andreas
Date: Tue Sep 11 07:09:37 2007
New Revision: 574602

URL: http://svn.apache.org/viewvc?rev=574602&view=rev
Log:
Publish usecase: Lock live sitetree; SourceNode: re-date lock to loading revision; fixes bug 43290.

Modified:
    lenya/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java

Modified: lenya/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java?rev=574602&r1=574601&r2=574602&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java (original)
+++ lenya/trunk/src/modules-core/workflow/java/src/org/apache/lenya/cms/workflow/usecases/Publish.java Tue Sep 11 07:09:37 2007
@@ -135,7 +135,14 @@
             Document doc = getSourceDocument();
             if(doc != null) {
                 nodes.add(doc.getRepositoryNode());
+                
+                // lock the authoring site to avoid having live nodes for which no corresponding
+                // authoring node exists
                 nodes.add(doc.area().getSite().getRepositoryNode());
+                
+                // lock the live site to avoid overriding changes made by others
+                SiteStructure liveSite = doc.getPublication().getArea(Publication.LIVE_AREA).getSite();
+                nodes.add(liveSite.getRepositoryNode());
             }
 
             return (org.apache.lenya.cms.repository.Node[]) nodes

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java?rev=574602&r1=574601&r2=574602&view=diff
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java Tue Sep 11 07:09:37 2007
@@ -244,14 +244,17 @@
         if (getLogger().isDebugEnabled()) {
             getLogger().debug("Locking [" + this + "]");
         }
-        if (getContentSource().isLoaded() || getMetaSource().isLoaded()) {
-            throw new RepositoryException("Node [" + this
-                    + "] is already loaded, locking would have no effect "
-                    + "and could lead to an inconsistent repository.");
-        }
         try {
-            int currentVersion = getCurrentRevisionNumber();
-            this.lock = getSession().createLock(this, currentVersion);
+            int currentRev = getCurrentRevisionNumber();
+            
+            int contentLoadRev = getContentSource().getLoadRevision();
+            int contentRev = contentLoadRev == -1 ? currentRev : contentLoadRev;
+            
+            int metaLoadRev = getMetaSource().getLoadRevision();
+            int metaRev = metaLoadRev == -1 ? currentRev : metaLoadRev;
+            
+            int lockRev = Math.min(contentRev, metaRev);
+            this.lock = getSession().createLock(this, lockRev);
         } catch (TransactionException e) {
             throw new RepositoryException(e);
         }

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java?rev=574602&r1=574601&r2=574602&view=diff
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java Tue Sep 11 07:09:37 2007
@@ -204,7 +204,7 @@
     }
 
     private boolean deleted;
-    private boolean loaded = false;
+    private int loadRevision = -1;
 
     protected void delete() {
         this.deleted = true;
@@ -262,7 +262,7 @@
                 this.manager.release(resolver);
             }
         }
-        this.loaded = true;
+        this.loadRevision = this.node.getCurrentRevisionNumber();
     }
 
     /**
@@ -418,8 +418,8 @@
         return new NodeOutputStream();
     }
     
-    protected boolean isLoaded() {
-        return this.loaded;
+    protected int getLoadRevision() {
+        return this.loadRevision;
     }
 
 }



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