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