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/13 14:50:14 UTC

svn commit: r575297 - in /lenya/trunk/src: impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java

Author: andreas
Date: Thu Sep 13 05:50:13 2007
New Revision: 575297

URL: http://svn.apache.org/viewvc?rev=575297&view=rev
Log:
Fixed lock update when copying revisions. This fixes bug 43297.

Modified:
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java?rev=575297&r1=575296&r2=575297&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java Thu Sep 13 05:50:13 2007
@@ -552,10 +552,7 @@
     protected void copyRevisions(Document sourceDoc, Document targetDoc) throws PublicationException {
         try {
             Node targetNode = targetDoc.getRepositoryNode();
-            // reset the lock so that the node doesn't complain about being changed
-            targetNode.unlock();
             targetNode.copyRevisionsFrom(sourceDoc.getRepositoryNode());
-            targetNode.lock();
         } catch (Exception e) {
             throw new PublicationException(e);
         }

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=575297&r1=575296&r2=575297&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 Thu Sep 13 05:50:13 2007
@@ -246,13 +246,12 @@
         }
         try {
             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) {
@@ -463,8 +462,19 @@
 
     public void copyRevisionsFrom(Node source) throws RepositoryException {
         try {
+            boolean wasLocked = isLocked();
+            if (wasLocked) {
+                unlock();
+            }
             getRcml().copyFrom(this, source);
+            if (wasLocked) {
+                // this is a hack: update the lock revision to the latest copied revision to avoid
+                // the "node has changed" error
+                this.lock = getSession().createLock(this, getCurrentRevisionNumber());
+            }
         } catch (RevisionControlException e) {
+            throw new RepositoryException(e);
+        } catch (TransactionException e) {
             throw new RepositoryException(e);
         }
     }



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