You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lenya.apache.org by Richard Frovarp <Ri...@sendit.nodak.edu> on 2006/10/25 23:12:52 UTC

Re: svn commit: r448981 - in /lenya/trunk/src: impl/java/org/apache/lenya/cms/publication/ impl/test/org/apache/lenya/cms/site/ java/org/apache/lenya/cms/site/ java/org/apache/lenya/cms/site/simple/ modules-core/sitemanagement/java/src/org/apache/lenya/cms...

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.

andreas@apache.org 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: commits-unsubscribe@lenya.apache.org
> For additional commands, e-mail: commits-help@lenya.apache.org
>
>
>   


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


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