This commit broke "Edit Navigation Title". I have previously created a bug: http://issues.apache.org/bugzilla/show_bug.cgi?id=40666

I tracked it down to the changes in:
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java

The problem is the first one, SiteTreeNode which had setLabel removed, which affected SiteTreeNodeImpl which implements SiteTreeNode. SiteTreeLink is where the work takes place to use DocumentHelper instead of the SiteTreeNode method. Why was setLabel removed from SiteTreeNode? Both addLabel and removeLabel are still present there.

I can see that the changes are being made using DocumentHelper, but either the changes are not being made in the right place, or they are not being persisted to disk. Maybe the bug is someplace else all together. I just know from testing that this update is when it broke. Hopefully someone with a better understanding can look at this and figure it out.

[EMAIL PROTECTED] wrote:
Author: andreas
Date: Fri Sep 22 09:25:38 2006
New Revision: 448981

URL: http://svn.apache.org/viewvc?view=rev&rev=448981
Log:
Refactored sitetree code, purge empty site nodes

Modified:
    
lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
    
lenya/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java
    lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
    lenya/trunk/src/java/org/apache/lenya/cms/site/simple/DocumentStore.java
    lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
    
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
    
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
    
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
    
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java
    
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
    
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
    
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
    
lenya/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.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?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
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
 Fri Sep 22 09:25:38 2006
@@ -268,7 +268,7 @@
             sourceDocument.getLink().delete();
siteManager.add(destination.getPath(), sourceDocument);
-            siteManager.setLabel(sourceDocument, label);
+            sourceDocument.getLink().setLabel(label);
             siteManager.setVisibleInNav(sourceDocument, visible);
         } catch (final ServiceException e) {
             throw new PublicationException(e);
@@ -414,7 +414,6 @@
         }
         SiteNode targetNode = targetArea.getSite().getNode(targetPath);
         targetNode.setVisible(sourceNode.isVisible());
-        sourceNode.delete();
     }
public void copyAll(Area sourceArea, String sourcePath, Area targetArea, String targetPath)

Modified: 
lenya/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java 
(original)
+++ 
lenya/trunk/src/impl/test/org/apache/lenya/cms/site/SimpleSiteManagerTest.java 
Fri Sep 22 09:25:38 2006
@@ -38,6 +38,9 @@
public class SimpleSiteManagerTest extends AbstractAccessControlTest { + protected static final String PATH = "/foo/bar";
+    protected static final String PARENT_PATH = "/foo";
+
     public void testSimpleSiteManager() throws Exception {
login("lenya");
@@ -92,14 +95,15 @@
             Document doc = docManager.add(getFactory(), type, 
contentSourceUri, pub,
                     Publication.AUTHORING_AREA, "en", "xml");
- structure.add("/foo", doc);
-            assertTrue(structure.contains("/foo"));
-            Document linkDoc = 
structure.getNode("/foo").getLink("en").getDocument();
+            structure.add(PATH, doc);
+            assertTrue(structure.contains(PATH));
+            Document linkDoc = 
structure.getNode(PATH).getLink("en").getDocument();
             assertSame(linkDoc, doc);
doc.getLink().delete();
             assertFalse(structure.containsByUuid(doc.getUUID(), 
doc.getLanguage()));
-            assertFalse(structure.contains("/foo"));
+            assertFalse(structure.contains(PATH));
+            assertFalse(structure.contains(PARENT_PATH));
} finally {
             if (selector != null) {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java Fri Sep 22 
09:25:38 2006
@@ -125,15 +125,6 @@
     void copy(Document sourceDocument, Document destinationDocument) throws 
SiteException;
/**
-     * Sets the label of a certain document.
- * - * @param document The document.
-     * @param label The label.
-     * @throws SiteException if an error occurs.
-     */
-    void setLabel(Document document, String label) throws SiteException;
-
-    /**
      * Sets the visibility of a node in the navigation. It is meant to hide 
specific nodes within
      * the "public" navigation whereas the node is visible within the 
info/site area.
*
Modified: 
lenya/trunk/src/java/org/apache/lenya/cms/site/simple/DocumentStore.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/simple/DocumentStore.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/simple/DocumentStore.java 
(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/simple/DocumentStore.java 
Fri Sep 22 09:25:38 2006
@@ -279,4 +279,9 @@
                 + "]!");
     }
+ public void remove(Document document) throws DocumentException {
+        super.remove(document);
+        this.doc2path.remove(getKey(document.getUUID(), 
document.getLanguage()));
+    }
+
 }

Modified: 
lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java 
(original)
+++ 
lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java 
Fri Sep 22 09:25:38 2006
@@ -189,13 +189,6 @@
     }
/**
-     * @see 
org.apache.lenya.cms.site.SiteManager#setLabel(org.apache.lenya.cms.publication.Document,
-     *      java.lang.String)
-     */
-    public void setLabel(Document document, String label) throws SiteException 
{
-    }
-
-    /**
      * @see 
org.apache.lenya.cms.site.SiteManager#setVisibleInNav(org.apache.lenya.cms.publication.Document,
      *      boolean)
      */

Modified: 
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
 (original)
+++ 
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
 Fri Sep 22 09:25:38 2006
@@ -16,13 +16,11 @@
  */
 package org.apache.lenya.cms.site.usecases;
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentException;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
 import org.apache.lenya.cms.site.SiteStructure;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
@@ -94,25 +92,8 @@
         super.doExecute();
Document document = getSourceDocument();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + 
"Selector");
-            siteManager = (SiteManager) 
selector.select(document.getPublication()
-                    .getSiteManagerHint());
-
-            String label = getParameterAsString(LABEL);
-            siteManager.setLabel(document, label);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
-        }
+        String label = getParameterAsString(LABEL);
+        document.getLink().setLabel(label);
WorkflowUtil.invoke(this.manager, getSession(), getLogger(), document, getEvent());
Modified: 
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
 (original)
+++ 
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
 Fri Sep 22 09:25:38 2006
@@ -131,21 +131,9 @@
         Document[] sources = SiteUtil.getSubSite(this.manager, 
doc.getLink().getNode())
                 .getDocuments();
         Area targetArea = doc.getPublication().getArea(targetAreaName);
-        SiteStructure targetSite = targetArea.getSite();
DocumentLocator targetLoc = doc.getLocator().getAreaVersion(targetAreaName);
         targetLoc = SiteUtil.getAvailableLocator(this.manager, 
getDocumentFactory(), targetLoc);
-
-        String[] steps = targetLoc.getPath().substring(1).split("/");
-        int s = 0;
-        String path = "";
-        while (s < steps.length) {
-            if (!targetSite.contains(path)) {
-                targetSite.add(path);
-            }
-            path += "/" + steps[s];
-            s++;
-        }
for (int i = 0; i < sources.length; i++) {
             WorkflowUtil.invoke(this.manager,

Modified: 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
 (original)
+++ 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
 Fri Sep 22 09:25:38 2006
@@ -245,6 +245,19 @@
             boolean visibleInNav, String href, String suffix, boolean link) 
throws SiteException {
         return addNode(parentid + "/" + id, uuid, visibleInNav, href, suffix, 
link, null);
     }
+ + protected void createParents(final String path) throws SiteException {
+        String[] steps = path.substring(1).split("/");
+        int s = 0;
+        String ancestorPath = "";
+        while (s < steps.length) {
+            if (!contains(ancestorPath)) {
+                add(ancestorPath);
+            }
+            ancestorPath += "/" + steps[s];
+            s++;
+        }
+    }
/**
      * @see org.apache.lenya.cms.site.tree.SiteTree#addNode(java.lang.String, 
java.lang.String,
@@ -254,19 +267,16 @@
     public synchronized SiteTreeNode addNode(String parentPath, String name, 
String uuid,
             boolean visibleInNav, String href, String suffix, boolean link, 
String refpath)
             throws SiteException {
+ + String path = parentPath + "/" + name;
+        createParents(path);
Node parentNode = getNodeInternal(parentPath); - if (parentNode == null) {
-            throw new SiteException("Parent path: " + parentPath + " in " + 
this.area
-                    + " tree not found");
-        }
-
         getLogger().debug("PARENT ELEMENT: " + parentNode);
         getLogger().debug("VISIBLEINNAV IS: " + visibleInNav);
// Check if child already exists
-        String path = parentPath + "/" + name;
         Node childNode = getNodeInternal(path);
if (childNode != null) {
@@ -324,7 +334,7 @@
         try {
             SiteTreeNode node = (SiteTreeNode) getNode(path);
             if (node != null) {
-                node.addLabel(new SiteTreeLink(this.factory, node, label, 
language));
+                node.addLabel(language, label);
             }
             saveDocument();
         } catch (SiteException e) {
@@ -382,6 +392,7 @@
         } catch (SiteException e) {
             throw new RuntimeException(e);
         }
+ return newNode;
     }
@@ -562,11 +573,7 @@
     public synchronized void setLabel(String path, String language, String 
label) {
         try {
             SiteTreeNode node = (SiteTreeNode) getNode(path);
-            if (node != null) {
-                SiteTreeLink link = new SiteTreeLink(this.factory, node, 
label, language);
-                node.setLink(link);
-            }
-            saveDocument();
+            node.getLink(language).setLabel(label);
         } catch (SiteException e) {
             throw new RuntimeException(e);
         }
@@ -695,15 +702,13 @@
         }
SiteTreeNode node = addNode(path, doc.getUUID(), true, null, "", false);
-
-        SiteTreeLink label = new SiteTreeLink(doc.getFactory(), node, "", 
doc.getLanguage());
-        node.addLabel(label);
+        node.addLabel(doc.getLanguage(), "");
if (node.getLanguages().length == 1) {
             node.setUUID(doc.getUUID());
         }
- return label;
+        return node.getLink(doc.getLanguage());
     }
public SiteNode add(String path) throws SiteException {

Modified: 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java
 (original)
+++ 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeLink.java
 Fri Sep 22 09:25:38 2006
@@ -19,20 +19,26 @@
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.site.Label;
 import org.apache.lenya.cms.site.SiteNode;
+import org.apache.lenya.xml.DocumentHelper;
+import org.w3c.dom.Element;
/**
  * SiteTree link.
  */
 public class SiteTreeLink extends Label {
- protected SiteTreeLink(DocumentFactory factory, SiteNode node, String _label, String _language) {
+    protected SiteTreeLink(DocumentFactory factory, SiteNode node, String 
_label, String _language,
+            Element element) {
         super(factory, node, _label, _language);
+        this.element = element;
     }
public void delete() {
         SiteTreeNode node = (SiteTreeNode) getNode();
         node.removeLabel(getLanguage());
     }
+ + private Element element; /**
      * Set the actual label of the label object.
@@ -40,8 +46,7 @@
      * @param label The label.
      */
     public void setLabel(String label) {
-        SiteTreeNode node = (SiteTreeNode) getNode();
-        node.setLabel(getLanguage(), label);
+        DocumentHelper.setSimpleElementText(this.element, label);
     }
}

Modified: 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
 (original)
+++ 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNode.java
 Fri Sep 22 09:25:38 2006
@@ -41,11 +41,11 @@
/**
      * Add a label to this node iff the node does not have this label already.
- * + * @param language The language.
      * @param label the label to be added.
      * @throws SiteException if the label is already contained.
      */
-    void addLabel(SiteTreeLink label) throws SiteException;
+    void addLabel(String language, String label) throws SiteException;
/**
      * Remove a label from this node.
@@ -155,14 +155,6 @@
        void acceptReverseSubtree(SiteTreeNodeVisitor visitor) throws 
DocumentException;
/**
-     * Sets a label of an this node. If the label does not exist, it is added.
-     * Otherwise, the existing label is replaced.
- * - * @param label the label to add
-     */
-    void setLink(SiteTreeLink label);
-
-    /**
      * Sets an attribute of this node. If the attribute already exists its 
value will be overwritten
      *
      * @param attributeName name of the attribute
@@ -195,12 +187,5 @@
      * @param uuid The UUID.
      */
     void setUUID(String uuid);
-
-    /**
-     * Sets a label.
-     * @param language The language.
-     * @param label The label.
-     */
-    void setLabel(String language, String label);
}

Modified: 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
 (original)
+++ 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/SiteTreeNodeImpl.java
 Fri Sep 22 09:25:38 2006
@@ -117,11 +117,12 @@
         } else {
             if (getLanguages().length > 0) {
                 String path = getPath();
-                getLogger().warn("Assuming non-UUID content because no 'uuid' 
attribute is set"
-                        + " and the node contains links. Returning path [" + path + 
"] as UUID.");
+                getLogger().warn(
+                        "Assuming non-UUID content because no 'uuid' attribute is 
set"
+                                + " and the node contains links. Returning path 
[" + path
+                                + "] as UUID.");
                 return path;
-            }
-            else {
+            } else {
                 return null;
             }
         }
@@ -172,19 +173,20 @@
                     labelLanguage = languageAttribute.getNodeValue();
                 }
- labels.add(new SiteTreeLink(this.factory, this, labelName, labelLanguage));
+                labels.add(new SiteTreeLink(this.factory, this, labelName, 
labelLanguage,
+                        (Element) child));
             }
         }
return (SiteTreeLink[]) labels.toArray(new SiteTreeLink[labels.size()]);
     }
- public void addLabel(SiteTreeLink label) throws SiteException {
-        Assert.isTrue("not contains " + label.getLanguage(), 
!hasLink(label.getLanguage()));
+    public void addLabel(String language, String label) throws SiteException {
+        Assert.isTrue("not contains " + language, !hasLink(language));
NamespaceHelper helper = getNamespaceHelper();
-        Element labelElem = helper.createElement(SiteTreeNodeImpl.LABEL_NAME, 
label.getLabel());
-        labelElem.setAttribute(SiteTreeNodeImpl.LANGUAGE_ATTRIBUTE_NAME, 
label.getLanguage());
+        Element labelElem = helper.createElement(SiteTreeNodeImpl.LABEL_NAME, 
label);
+        labelElem.setAttribute(SiteTreeNodeImpl.LANGUAGE_ATTRIBUTE_NAME, 
language);
         node.insertBefore(labelElem, node.getFirstChild());
         getTree().save();
     }
@@ -207,8 +209,8 @@
                     if ((child.getNodeType() == Node.ELEMENT_NODE)
                             && child.getNodeName().equals(LABEL_NAME)) {
- Node languageAttribute = child.getAttributes()
-                                .getNamedItem(LANGUAGE_ATTRIBUTE_NAME);
+                        Node languageAttribute = 
child.getAttributes().getNamedItem(
+                                LANGUAGE_ATTRIBUTE_NAME);
if (languageAttribute != null
                                 && 
languageAttribute.getNodeValue().equals(language)) {
@@ -218,11 +220,19 @@
                         }
                     }
                 }
+                deleteIfEmpty();
             } catch (SiteException e) {
- throw new RuntimeException("could not save sitetree after deleting label of " + throw new RuntimeException("could not save sitetree after deleting label of "
                         + this + " [" + language + "]");
             }
         }
+
+    }
+
+    protected void deleteIfEmpty() throws SiteException {
+        if (getLanguages().length == 0 && getChildren().length == 0) {
+            delete();
+        }
     }
/**
@@ -283,9 +293,7 @@
         Element[] elements = helper.getChildren((Element) this.node, 
SiteTreeNodeImpl.NODE_NAME);
for (int i = 0; i < elements.length; i++) {
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory,
-                    getTree(),
-                    elements[i],
+            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, 
getTree(), elements[i],
                     getLogger());
             childElements.add(newNode);
         }
@@ -302,9 +310,7 @@
         Element[] elements = helper.getChildren((Element) this.node, 
SiteTreeNodeImpl.NODE_NAME);
         for (int i = 0; i < elements.length; i++) {
             this.node.removeChild(elements[i]);
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory,
-                    getTree(),
-                    elements[i],
+            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, 
getTree(), elements[i],
                     getLogger());
             childElements.add(newNode);
         }
@@ -318,12 +324,11 @@
         List siblingElements = new ArrayList();
NamespaceHelper helper = getNamespaceHelper();
-        Element[] elements = helper.getNextSiblings((Element) this.node, 
SiteTreeNodeImpl.NODE_NAME);
+        Element[] elements = helper
+                .getNextSiblings((Element) this.node, 
SiteTreeNodeImpl.NODE_NAME);
for (int i = 0; i < elements.length; i++) {
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory,
-                    getTree(),
-                    elements[i],
+            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, 
getTree(), elements[i],
                     getLogger());
             siblingElements.add(newNode);
         }
@@ -342,9 +347,7 @@
                 SiteTreeNodeImpl.NODE_NAME);
for (int i = 0; i < elements.length; i++) {
-            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory,
-                    getTree(),
-                    elements[i],
+            SiteTreeNode newNode = new SiteTreeNodeImpl(this.factory, 
getTree(), elements[i],
                     getLogger());
             siblingElements.add(newNode);
         }
@@ -411,33 +414,6 @@
     }
/**
-     * @see 
org.apache.lenya.cms.site.tree.SiteTreeNode#setLink(org.apache.lenya.cms.site.Label)
-     */
-    public void setLink(SiteTreeLink label) {
-        try {
-            SiteTreeLink existingLabel = (SiteTreeLink) 
getLink(label.getLanguage());
-            if (existingLabel != null) {
-                removeLabel(label.getLanguage());
-            }
-            addLabel(label);
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public void setLabel(String language, String label) {
-        try {
-            SiteTreeLink existingLabel = (SiteTreeLink) getLink(language);
-            if (existingLabel != null) {
-                removeLabel(language);
-            }
-            addLabel(new SiteTreeLink(this.factory, this, label, language));
-        } catch (SiteException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
      * @see 
org.apache.lenya.cms.site.tree.SiteTreeNode#setNodeAttribute(String, String)
      */
     public void setNodeAttribute(String attributeName, String attributeValue) {
@@ -470,13 +446,10 @@
         Node parentNode = this.node.getParentNode();
         if (parentNode.getNodeType() == Node.ELEMENT_NODE
                 && parentNode.getLocalName().equals(NODE_NAME)) {
-            parent = new SiteTreeNodeImpl(this.factory,
-                    getTree(),
-                    (Element) parentNode,
+            parent = new SiteTreeNodeImpl(this.factory, getTree(), (Element) 
parentNode,
                     getLogger());
             ContainerUtil.enableLogging(parent, getLogger());
-        }
-        else {
+        } else {
             throw new SiteException("The node [" + this + "] has no parent.");
         }
@@ -488,9 +461,8 @@
      * @return A namespace helper.
      */
     protected NamespaceHelper getNamespaceHelper() {
-        NamespaceHelper helper = new 
NamespaceHelper(DefaultSiteTree.NAMESPACE_URI,
-                "",
-                this.node.getOwnerDocument());
+        NamespaceHelper helper = new NamespaceHelper(DefaultSiteTree.NAMESPACE_URI, 
"", this.node
+                .getOwnerDocument());
         return helper;
     }
@@ -615,7 +587,18 @@
     }
public void delete() {
-        getTree().removeNode(getPath());
+        try {
+            SiteTreeNodeImpl parent = null;
+            if (!isTopLevel()) {
+                parent = (SiteTreeNodeImpl) getParent();
+            }
+            getTree().removeNode(getPath());
+            if (parent != null) {
+                parent.deleteIfEmpty();
+            }
+        } catch (SiteException e) {
+            throw new RuntimeException(e);
+        }
     }
public boolean isTopLevel() {

Modified: 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
 (original)
+++ 
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
 Fri Sep 22 09:25:38 2006
@@ -242,9 +242,7 @@
                 // if the node already exists in the live
                 // tree simply insert the label in the
                 // live tree
-                destinationTree.setLabel(destinationDocument.getPath(),
-                        link.getLanguage(),
-                        link.getLabel());
+                destinationDocument.getLink().setLabel(link.getLabel());
             }
         } catch (DocumentException e) {
             throw new SiteException(e);

Modified: 
lenya/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java?view=diff&rev=448981&r1=448980&r2=448981
==============================================================================
--- 
lenya/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java
 (original)
+++ 
lenya/trunk/src/modules/sitetree/java/test/org/apache/lenya/cms/site/tree/SiteTreeNodeImplTest.java
 Fri Sep 22 09:25:38 2006
@@ -92,8 +92,8 @@
         assertEquals(languages.length, 2);
         for (int i = 0; i < languages.length; i++) {
             Link label = this.node.getLink(languages[i]);
-            Link label1 = new SiteTreeLink(getFactory(), node, "Bar", "en");
-            Link label2 = new SiteTreeLink(getFactory(), node, "Stab", "de");
+            Link label1 = new SiteTreeLink(getFactory(), node, "Bar", "en", 
null);
+            Link label2 = new SiteTreeLink(getFactory(), node, "Stab", "de", 
null);
             assertTrue(label.equals(label1) || label.equals(label2));
         }
     }
@@ -115,9 +115,8 @@
* */
     final public void testAddLabel() throws SiteException {
-        Link label = new SiteTreeLink(getFactory(), this.node, "Barolo", "it");
-        this.node.addLabel((SiteTreeLink) label);
-        label = this.node.getLink("it");
+        this.node.addLabel("it", "Barolo");
+        Link label = this.node.getLink("it");
         assertNotNull(label);
         assertEquals(label.getLabel(), "Barolo");
         assertFalse(this.node.hasLink("ch"));



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Richard Frovarp
EduTech System Administrator
1-701-231-5127 or 1-800-774-1091


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to