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]