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/

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
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;
     }
 
 }
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.