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.