You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by mi...@apache.org on 2005/04/11 11:09:08 UTC
svn commit: r160851 - in
lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication:
ImportSiteTree.java JCRSiteTree.java JCRSiteTreeNodeImpl.java
Author: michi
Date: Mon Apr 11 02:09:06 2005
New Revision: 160851
URL: http://svn.apache.org/viewcvs?view=rev&rev=160851
Log:
patch of Felix Roethenbacher added
Modified:
lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/ImportSiteTree.java
lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTree.java
lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTreeNodeImpl.java
Modified: lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/ImportSiteTree.java
URL: http://svn.apache.org/viewcvs/lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/ImportSiteTree.java?view=diff&r1=160850&r2=160851
==============================================================================
--- lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/ImportSiteTree.java (original)
+++ lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/ImportSiteTree.java Mon Apr 11 02:09:06 2005
@@ -70,22 +70,11 @@
// Import authoring sitetree.
Session authSession = repo.login(new SimpleCredentials(REPO_USER, "".toCharArray()), Publication.AUTHORING_AREA);
- NamespaceRegistry registry = authSession.getWorkspace().getNamespaceRegistry();
- try {
- nsPrefixAuthSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixAuthUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- } catch (NamespaceException nse) {
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_USER, JCRSiteTree.NS_URI_USER);
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_SYSTEM, JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixAuthSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixAuthUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- }
+ nsPrefixAuthSys = getNamespacePrefix(authSession, JCRSiteTree.NS_URI_SYSTEM, JCRSiteTree.NS_PREFIX_SYSTEM);
+ nsPrefixAuthUser = getNamespacePrefix(authSession, JCRSiteTree.NS_URI_USER, JCRSiteTree.NS_PREFIX_USER);
authSession.importXML("/", new FileInputStream(defaultPubDir + "/content/authoring/sitetree.xml.import"));
- authSession.setNamespacePrefix(nsPrefixAuthSys, JCRSiteTree.NS_URI_SYSTEM);
- authSession.setNamespacePrefix(nsPrefixAuthUser, JCRSiteTree.NS_URI_USER);
-
// Remove empty text nodes and add referenceable/versionable mixinType
NodeIterator iter = authSession.getRootNode().getNodes(nsPrefixAuthSys + ":*");
iter = authSession.getRootNode().getNodes(nsPrefixAuthSys + ":*");
@@ -98,20 +87,9 @@
// Clone authoring sitetree to live workspace
System.out.println("Cloning authoring area to live area.");
Session liveSession = repo.login(new SimpleCredentials(REPO_USER, "".toCharArray()), Publication.LIVE_AREA);
- registry = liveSession.getWorkspace().getNamespaceRegistry();
- try {
- nsPrefixLiveSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixLiveUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- } catch (NamespaceException nse) {
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_USER, JCRSiteTree.NS_URI_USER);
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_SYSTEM, JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixLiveSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixLiveUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- }
+ nsPrefixLiveSys = getNamespacePrefix(liveSession, JCRSiteTree.NS_URI_SYSTEM, JCRSiteTree.NS_PREFIX_SYSTEM);
+ nsPrefixLiveUser = getNamespacePrefix(liveSession, JCRSiteTree.NS_URI_USER, JCRSiteTree.NS_PREFIX_USER);
- liveSession.setNamespacePrefix(nsPrefixLiveSys, JCRSiteTree.NS_URI_SYSTEM);
- liveSession.setNamespacePrefix(nsPrefixLiveUser, JCRSiteTree.NS_URI_USER);
-
liveSession.getWorkspace().clone(Publication.AUTHORING_AREA,
"/" + nsPrefixAuthSys + ":site",
"/" + nsPrefixLiveSys + ":site", true);
@@ -119,20 +97,10 @@
// Remove nodes that are not in live sitetree.
System.out.println("Removing nodes not in live area");
Session defaultSession = repo.login(new SimpleCredentials(REPO_USER, "".toCharArray()), null);
- registry = defaultSession.getWorkspace().getNamespaceRegistry();
- try {
- nsPrefixDefaultSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixDefaultUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- } catch (NamespaceException nse) {
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_USER, JCRSiteTree.NS_URI_USER);
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_SYSTEM, JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixDefaultSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixDefaultUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- }
+ nsPrefixDefaultSys = getNamespacePrefix(defaultSession, JCRSiteTree.NS_URI_SYSTEM, JCRSiteTree.NS_PREFIX_SYSTEM);
+ nsPrefixDefaultUser = getNamespacePrefix(defaultSession, JCRSiteTree.NS_URI_USER, JCRSiteTree.NS_PREFIX_USER);
defaultSession.importXML("/", new FileInputStream(defaultPubDir + "/content/live/sitetree.xml.import"));
- defaultSession.setNamespacePrefix(nsPrefixDefaultSys, JCRSiteTree.NS_URI_SYSTEM);
- defaultSession.setNamespacePrefix(nsPrefixDefaultUser, JCRSiteTree.NS_URI_USER);
iter = authSession.getRootNode().getNodes(nsPrefixAuthSys + ":*");
while (iter.hasNext()) {
@@ -151,19 +119,8 @@
// Creating trash workspace.
System.out.println("Creating 'trash' workspace.");
Session trashSession = repo.login(new SimpleCredentials(REPO_USER, "".toCharArray()), Publication.TRASH_AREA);
- registry = trashSession.getWorkspace().getNamespaceRegistry();
- try {
- nsPrefixTrashSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixTrashUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- } catch (NamespaceException nse) {
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_USER, JCRSiteTree.NS_URI_USER);
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_SYSTEM, JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixTrashSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixTrashUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- }
-
- trashSession.setNamespacePrefix(nsPrefixTrashSys, JCRSiteTree.NS_URI_SYSTEM);
- trashSession.setNamespacePrefix(nsPrefixTrashUser, JCRSiteTree.NS_URI_USER);
+ nsPrefixTrashSys = getNamespacePrefix(trashSession, JCRSiteTree.NS_URI_SYSTEM, JCRSiteTree.NS_PREFIX_SYSTEM);
+ nsPrefixTrashUser = getNamespacePrefix(trashSession, JCRSiteTree.NS_URI_USER, JCRSiteTree.NS_PREFIX_USER);
// Create sitetree root node.
trashSession.getRootNode().addNode(nsPrefixTrashSys + ":site");
@@ -173,19 +130,8 @@
// Creating archive workspace.
System.out.println("Creating 'archive' workspace.");
Session archiveSession = repo.login(new SimpleCredentials(REPO_USER, "".toCharArray()), Publication.ARCHIVE_AREA);
- registry = archiveSession.getWorkspace().getNamespaceRegistry();
- try {
- nsPrefixArchiveSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixArchiveUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- } catch (NamespaceException nse) {
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_USER, JCRSiteTree.NS_URI_USER);
- registry.registerNamespace(JCRSiteTree.NS_PREFIX_SYSTEM, JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixArchiveSys = registry.getPrefix(JCRSiteTree.NS_URI_SYSTEM);
- nsPrefixArchiveUser = registry.getPrefix(JCRSiteTree.NS_URI_USER);
- }
-
- archiveSession.setNamespacePrefix(nsPrefixTrashSys, JCRSiteTree.NS_URI_SYSTEM);
- archiveSession.setNamespacePrefix(nsPrefixTrashUser, JCRSiteTree.NS_URI_USER);
+ nsPrefixArchiveSys = getNamespacePrefix(archiveSession, JCRSiteTree.NS_URI_SYSTEM, JCRSiteTree.NS_PREFIX_SYSTEM);
+ nsPrefixArchiveUser = getNamespacePrefix(archiveSession, JCRSiteTree.NS_URI_USER, JCRSiteTree.NS_PREFIX_USER);
// Create sitetree root node.
archiveSession.getRootNode().addNode(nsPrefixTrashSys + ":site");
@@ -217,6 +163,33 @@
RegistryHelper.registerRepository(ctx, "repo", configFile, repHomeDir, true);
return (Repository) ctx.lookup("repo");
}
+
+ /**
+ * Get namespace prefix for given namespace URI.
+ * @param session Session object
+ * @param namespace namespace URI of the prefix you want
+ * @param defaultPrefix if no prefix is registered with that namespace URI
+ * @return namespace prefix of given namespace URI
+ */
+ private String getNamespacePrefix(Session session, String namespace, String defaultPrefix) {
+ String prefix = null;
+ NamespaceRegistry registry = null;
+ try {
+ registry = session.getWorkspace().getNamespaceRegistry();
+ try {
+ prefix = registry.getPrefix(namespace);
+ } catch (NamespaceException e) {
+ // If prefix is not found, register default prefix
+ registry.registerNamespace(defaultPrefix, namespace);
+ prefix = defaultPrefix;
+ session.setNamespacePrefix(defaultPrefix, namespace);
+ }
+ } catch (RepositoryException e) {
+ e.printStackTrace();
+ }
+ return prefix;
+ }
+
/**
* Remove empty jcr:xmltext nodes (artifact from importXML()).
Modified: lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTree.java
URL: http://svn.apache.org/viewcvs/lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTree.java?view=diff&r1=160850&r2=160851
==============================================================================
--- lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTree.java (original)
+++ lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTree.java Mon Apr 11 02:09:06 2005
@@ -27,8 +27,10 @@
import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
+import javax.jcr.ItemExistsException;
import javax.jcr.NamespaceException;
import javax.jcr.NamespaceRegistry;
+import javax.jcr.NoSuchWorkspaceException;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.PathNotFoundException;
@@ -62,7 +64,8 @@
public static final String NS_PREFIX_USER = "lust"; // lenya user site tree
public static final String NS_URI_SYSTEM = "http://apache.org/cocoon/lenya/sitetree/system/1.0";
public static final String NS_PREFIX_SYSTEM = "lst"; // lenya system site tree
-
+
+ // Repository node names
public static final String SITETREE_NAME = "site";
public static final String DOCUMENT_NAME = "document";
protected static final String Q_CONTENT_NAME = "jcr:content";
@@ -70,8 +73,7 @@
// Nodetype names
protected static final String NODE_NT_NAME = "node";
protected static final String DOCUMENT_NT_NAME = "document";
-
-
+ protected static final String Q_CONTENT_NT_NAME = "jcr:content";
public static final String REPOSITORY_HOME = "repos" + File.separator + "repo-sitetree";
@@ -80,6 +82,8 @@
private Repository repository = null;
private Session session = null;
+
+ private String workspace = null;
/**
* Create a JCRSiteTree
@@ -90,6 +94,7 @@
* @throws SiteTreeException if an error occurs
*/
protected JCRSiteTree(File pubDir, String area) throws SiteTreeException {
+ this.workspace = area;
try {
repository = getRepository(pubDir.getAbsolutePath() + File.separator + REPOSITORY_HOME);
String userId = REPO_USER;
@@ -103,7 +108,6 @@
// Add sitetree root node if it does not exist already
if (!session.getRootNode().hasNode(prefixSys + ":" + SITETREE_NAME)) {
Node siteNode = session.getRootNode().addNode(prefixSys + ":" + SITETREE_NAME);
- siteNode.addMixin("mix:referenceable");
session.save();
}
} catch (RepositoryException e) {
@@ -266,22 +270,8 @@
* @see org.apache.lenya.cms.publication.SiteTree#removeNode(java.lang.String)
*/
public synchronized SiteTreeNode removeNode(String documentId) {
- assert documentId != null;
-
- Node node = null;
- try {
- node = session.getRootNode().getNode(mapDocumentIdToJCRAbsolute(documentId).substring(1));
- node.remove();
- } catch (PathNotFoundException e) {
- // No node found.
- } catch (RepositoryException e) {
- log.error("JCRSiteTree.removeNode() failed for document id " + documentId, e);
- }
- if (node != null) {
- return new JCRSiteTreeNodeImpl(node, this);
- } else {
- return null;
- }
+ throw new RuntimeException("importSubTree() is not supported by the JCRSiteTree " +
+ "implementation. Use copy() and move() instead");
}
/**
@@ -413,39 +403,23 @@
}
/** (non-Javadoc)
+ * @throws NotSupportedException
+ * @throws RepositoryException
+ * @throws LockException
+ * @throws ItemExistsException
+ * @throws PathNotFoundException
+ * @throws AccessDeniedException
+ * @throws VersionException
+ * @throws ConstraintViolationException
+ * @throws NoSuchWorkspaceException
* @see org.apache.lenya.cms.publication.SiteTree#importSubtree(org.apache.lenya.cms.publication.SiteTreeNode, org.apache.lenya.cms.publication.SiteTreeNode, java.lang.String)
*/
public synchronized void importSubtree(SiteTreeNode newParent, SiteTreeNode subtreeRoot,
String newid, String refDocumentId)
throws SiteTreeException
{
- assert subtreeRoot != null;
- assert newParent != null;
- String parentId = newParent.getAbsoluteId();
- String id = newid;
-
- this.addNode(
- parentId,
- id,
- subtreeRoot.getLabels(),
- subtreeRoot.visibleInNav(),
- subtreeRoot.getHref(),
- subtreeRoot.getSuffix(),
- subtreeRoot.hasLink(),
- refDocumentId);
- newParent = this.getNode(parentId + "/" + id);
- if (newParent == null) {
- throw new SiteTreeException("The added node was not found.");
- }
- SiteTreeNode[] children = subtreeRoot.getChildren();
- if (children == null) {
- log.info("The node " + subtreeRoot.toString() + " has no children");
- return;
- } else {
- for (int i = 0; i < children.length; i++) {
- importSubtree(newParent, children[i], children[i].getId(), null);
- }
- }
+ throw new SiteTreeException("importSubTree() is not supported by the JCRSiteTree " +
+ "implementation. Use copy() and move() instead");
}
/** (non-Javadoc)
@@ -582,4 +556,128 @@
}
return (Repository) ctx.lookup("repo");
}
+
+ public String getWorkspace() {
+ return workspace;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lenya.cms.publication.SiteTree#copy(org.apache.lenya.cms.publication.SiteTreeNode, org.apache.lenya.cms.publication.SiteTreeNode, java.lang.String, java.lang.String)
+ */
+ public void copy(SiteTreeNode src, SiteTreeNode dst, String newId, String followingSibling)
+ throws SiteTreeException
+ {
+ assert src instanceof JCRSiteTreeNodeImpl;
+ assert dst instanceof JCRSiteTreeNodeImpl;
+
+ JCRSiteTreeNodeImpl srcNode = (JCRSiteTreeNodeImpl)src;
+ JCRSiteTreeNodeImpl dstNode = (JCRSiteTreeNodeImpl)dst;
+
+ String dstPath = null;
+ String srcWorkspace = srcNode.getJCRSiteTree().getWorkspace();
+ String dstWorkspace = dstNode.getJCRSiteTree().getWorkspace();
+
+ try {
+ if (dstWorkspace != this.getWorkspace()) {
+ // Destination node not in this sitetree. Delegate to destination sitetree.
+ dstNode.getJCRSiteTree().copy(src, dst, newId, followingSibling);
+ } else {
+ // Destination node is in this sitetree.
+ dstPath = dstNode.getJCRNode().getPath() + "/" + prefixUser + ":" + newId;
+ if (srcWorkspace == this.getWorkspace()) {
+ // Source node is in this sitetree.
+ session.getWorkspace().copy(srcNode.getJCRNode().getPath(), dstPath);
+ } else {
+ // Source node not in this sitetree.
+ session.getWorkspace().copy(srcWorkspace,
+ srcNode.getJCRNode().getPath(), dstPath);
+ }
+ }
+ // TODO: Ordering of nodes
+ } catch (NoSuchWorkspaceException e) {
+ throw new SiteTreeException("Workspace does not exist: " + srcWorkspace, e);
+ } catch (ConstraintViolationException e) {
+ throw new SiteTreeException("Constraint violation exception.", e);
+ } catch (VersionException e) {
+ throw new SiteTreeException("Version exception.", e);
+ } catch (AccessDeniedException e) {
+ throw new SiteTreeException("Access denied exception.", e);
+ } catch (PathNotFoundException e) {
+ throw new SiteTreeException("Path not found exception.", e);
+ } catch (ItemExistsException e) {
+ throw new SiteTreeException("Item exists exception: " + dstPath, e);
+ } catch (LockException e) {
+ throw new SiteTreeException("Lock exception.", e);
+ } catch (RepositoryException e) {
+ throw new SiteTreeException("Repository exception.", e);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lenya.cms.publication.SiteTree#move(org.apache.lenya.cms.publication.SiteTreeNode, org.apache.lenya.cms.publication.SiteTreeNode, java.lang.String, java.lang.String)
+ */
+ public void move(SiteTreeNode src, SiteTreeNode dst, String newId, String followingSibling) throws SiteTreeException {
+ assert src instanceof JCRSiteTreeNodeImpl;
+ assert dst instanceof JCRSiteTreeNodeImpl;
+
+ JCRSiteTreeNodeImpl srcNode = (JCRSiteTreeNodeImpl)src;
+ JCRSiteTreeNodeImpl dstNode = (JCRSiteTreeNodeImpl)dst;
+
+ String srcPath = null;
+ String dstPath = null;
+ String srcWorkspace = srcNode.getJCRSiteTree().getWorkspace();
+ String dstWorkspace = dstNode.getJCRSiteTree().getWorkspace();
+
+ try {
+ srcPath = srcNode.getJCRNode().getPath();
+ dstPath = dstNode.getJCRNode().getPath() + "/" + prefixUser + ":" + newId;
+
+ if (dstWorkspace != this.getWorkspace()) {
+ // Delegate move operation to destination sitetree.
+ dstNode.getJCRSiteTree().move(src, dst, newId, followingSibling);
+ } else if (srcWorkspace == this.getWorkspace()) {
+ // Move node intra-sitetree.
+ session.getWorkspace().move(srcPath, dstPath);
+ } else {
+ // First, copy src node into this sitetree, then delete src node.
+ copy(src, dst, newId, followingSibling);
+ srcNode.getJCRSiteTree().deleteNode(srcNode.getJCRNode().getPath());
+ }
+ // TODO: Ordering of nodes
+ } catch (NoSuchWorkspaceException e) {
+ throw new SiteTreeException("Workspace does not exist: " + srcWorkspace, e);
+ } catch (ConstraintViolationException e) {
+ throw new SiteTreeException("Constraint violation exception.", e);
+ } catch (VersionException e) {
+ throw new SiteTreeException("Version exception.", e);
+ } catch (AccessDeniedException e) {
+ throw new SiteTreeException("Access denied exception.", e);
+ } catch (PathNotFoundException e) {
+ throw new SiteTreeException("Path not found exception.", e);
+ } catch (ItemExistsException e) {
+ throw new SiteTreeException("Item exists exception: " + dstPath, e);
+ } catch (LockException e) {
+ throw new SiteTreeException("Lock exception.", e);
+ } catch (RepositoryException e) {
+ throw new SiteTreeException("Repository exception.", e);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lenya.cms.publication.SiteTree#deleteNode(java.lang.String)
+ */
+ public void deleteNode(String documentId) throws SiteTreeException {
+ assert documentId != null;
+
+ Node node = null;
+ try {
+ node = session.getRootNode().getNode(mapDocumentIdToJCRAbsolute(documentId).substring(1));
+ node.remove();
+ } catch (PathNotFoundException e) {
+ throw new SiteTreeException("Node not found: " + documentId, e);
+ } catch (RepositoryException e) {
+ throw new SiteTreeException("Repository exception.", e);
+ }
+ }
+
}
Modified: lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTreeNodeImpl.java
URL: http://svn.apache.org/viewcvs/lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTreeNodeImpl.java?view=diff&r1=160850&r2=160851
==============================================================================
--- lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTreeNodeImpl.java (original)
+++ lenya/sandbox/jcrsitetree/src/java/org/apache/lenya/cms/publication/JCRSiteTreeNodeImpl.java Mon Apr 11 02:09:06 2005
@@ -168,12 +168,15 @@
assert label.getLanguage() != null;
if (getLabel(label.getLanguage()) == null) {
- Node labelNode = null;
// only add the label if there is no label with the same language yet.
+ Node labelNode = null;
try {
- labelNode = node.addNode(sitetree.getSystemPrefix() + ":" + JCRSiteTree.DOCUMENT_NAME);
+ labelNode = node.addNode(sitetree.getSystemPrefix() + ":" + JCRSiteTree.DOCUMENT_NAME,
+ sitetree.getSystemPrefix() + ":" + JCRSiteTree.DOCUMENT_NT_NAME);
labelNode.setProperty(sitetree.getSystemPrefix() + ":" + LABEL_NAME, label.getLabel());
labelNode.setProperty("xml:" + LANGUAGE_ATTRIBUTE_NAME, label.getLanguage());
+ labelNode.addNode(JCRSiteTree.Q_CONTENT_NAME, JCRSiteTree.Q_CONTENT_NT_NAME);
+
} catch (ItemExistsException e) {
log.error("JCRSiteTreeNodeImpl.addLabel() failed: item exists exception", e);
} catch (PathNotFoundException e) {
@@ -301,20 +304,24 @@
* @see org.apache.lenya.cms.publication.SiteTreeNode#removeChildren()
*/
public SiteTreeNode[] removeChildren() {
- List childElements = new ArrayList();
+ throw new RuntimeException("removeChildren() unsupported (deprecated). Use deleteChildren() instead.");
+ }
+
+ /**
+ * @see org.apache.lenya.cms.publication.SiteTreeNode#deleteChildren()
+ */
+ public void deleteChildren() throws SiteTreeException {
try {
NodeIterator iter;
iter = node.getNodes(sitetree.getUserPrefix() + ":*");
while (iter.hasNext()) {
- childElements.add(new JCRSiteTreeNodeImpl(iter.nextNode(), sitetree));
iter.nextNode().remove();
}
} catch (RepositoryException e) {
- log.error("JCRSiteTreeNodeImpl.removeChildren() failed: repository exception");
+ throw new SiteTreeException(e);
}
- return (SiteTreeNode[]) childElements.toArray(new SiteTreeNode[childElements.size()]);
}
-
+
/**
* @see org.apache.lenya.cms.publication.SiteTreeNode#getChildren()
*/
@@ -496,4 +503,11 @@
return list;
}
+ protected JCRSiteTree getJCRSiteTree() {
+ return sitetree;
+ }
+
+ protected Node getJCRNode() {
+ return node;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org