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 2005/05/19 15:40:54 UTC
svn commit: r170926 -
/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java
Author: andreas
Date: Thu May 19 06:40:54 2005
New Revision: 170926
URL: http://svn.apache.org/viewcvs?rev=170926&view=rev
Log:
fixed nudge usecase (instanceof check, locking)
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java?rev=170926&r1=170925&r2=170926&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java Thu May 19 06:40:54 2005
@@ -18,11 +18,16 @@
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.repository.Node;
+import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteManager;
+import org.apache.lenya.cms.site.SiteStructure;
+import org.apache.lenya.cms.site.SiteUtil;
import org.apache.lenya.cms.site.tree.SiteTree;
import org.apache.lenya.cms.site.tree.SiteTreeNode;
-import org.apache.lenya.cms.site.tree.TreeSiteManager;
import org.apache.lenya.cms.usecase.DocumentUsecase;
+import org.apache.lenya.cms.usecase.UsecaseException;
+import org.apache.lenya.transaction.Transactionable;
/**
* Nudge a document one position up or down.
@@ -52,12 +57,11 @@
try {
selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
- if (siteManager instanceof TreeSiteManager) {
+ SiteStructure structure = siteManager.getSiteStructure(getSourceDocument()
+ .getIdentityMap(), publication, getSourceDocument().getArea());
+ if (structure instanceof SiteTree) {
- TreeSiteManager treeManager = (TreeSiteManager) siteManager;
- SiteTree tree = treeManager.getTree(getSourceDocument().getIdentityMap(),
- publication,
- getSourceDocument().getArea());
+ SiteTree tree = (SiteTree) structure;
SiteTreeNode node = tree.getNode(getSourceDocument().getId());
SiteTreeNode[] siblings = null;
@@ -67,7 +71,7 @@
} else if (direction.equals(DOWN)) {
siblings = node.getNextSiblings();
} else {
- addErrorMessage("nudge-error-direction-unknown", new String[]{direction});
+ addErrorMessage("nudge-error-direction-unknown", new String[] { direction });
}
if (siblings != null && siblings.length == 0) {
@@ -89,6 +93,20 @@
}
/**
+ * @see org.apache.lenya.cms.usecase.AbstractUsecase#getObjectsToLock()
+ */
+ protected Transactionable[] getObjectsToLock() throws UsecaseException {
+ try {
+ Node node = SiteUtil.getSiteStructure(this.manager, getSourceDocument())
+ .getRepositoryNode();
+ Node[] nodes = { node };
+ return nodes;
+ } catch (SiteException e) {
+ throw new UsecaseException(e);
+ }
+ }
+
+ /**
* @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
*/
protected void doExecute() throws Exception {
@@ -100,19 +118,22 @@
try {
selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
- if (siteManager instanceof TreeSiteManager) {
-
- TreeSiteManager treeManager = (TreeSiteManager) siteManager;
- SiteTree tree = treeManager.getTree(getSourceDocument().getIdentityMap(),
- publication,
- getSourceDocument().getArea());
+ SiteStructure structure = siteManager.getSiteStructure(getSourceDocument()
+ .getIdentityMap(), publication, getSourceDocument().getArea());
+ if (structure instanceof SiteTree) {
+ SiteTree tree = (SiteTree) structure;
String direction = getParameterAsString(DIRECTION);
if (direction.equals(UP)) {
tree.moveUp(getSourceDocument().getId());
} else if (direction.equals(DOWN)) {
tree.moveDown(getSourceDocument().getId());
+ } else {
+ throw new IllegalArgumentException("The direction [" + direction
+ + "] is not supported.");
}
+ } else {
+ throw new IllegalStateException("This operation is only supported for site trees.");
}
} catch (Exception e) {
throw new RuntimeException(e);
@@ -126,5 +147,4 @@
}
}
-
-}
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org