Author: andreas
Date: Fri May 30 05:19:56 2008
New Revision: 661679
URL: http://svn.apache.org/viewvc?rev=661679&view=rev
Log:
Don't store sitetree reference in delegating site tree. This might fix bug 44067.
Modified:
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java
Modified: lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java?rev=661679&r1=661678&r2=661679&view=diff
==============================================================================
--- lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java (original)
+++ lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java Fri May 30 05:19:56 2008
@@ -31,6 +31,7 @@
import org.apache.lenya.cms.repository.NodeFactory;
import org.apache.lenya.cms.repository.RepositoryException;
import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.cms.repository.SharedItemStore;
import org.apache.lenya.cms.site.Link;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteNode;
@@ -38,11 +39,11 @@
import org.apache.lenya.cms.site.tree.SiteTree;
/**
- * Site tree implementation which delegates all operations to a shared site tree.
+ * Site tree implementation which delegates all operations to a shared site
+ * tree.
*/
public class DelegatingSiteTree implements SiteStructure, SiteTree {
-
- private SiteTreeImpl tree;
+
private Area area;
private ServiceManager manager;
private Map links = new HashMap();
@@ -51,16 +52,24 @@
private List topLevelNodes;
private List preOrder;
private String sourceUri;
+ private SharedItemStore store;
+ private String key;
+ private SiteTreeFactory factory;
/**
* @param manager The service manager.
* @param area The area which this tree belongs to.
- * @param tree The tree to delegate to.
+ * @param factory The site tree factory.
+ * @param store The shared item store.
+ * @param key The key to build the sitetree.
*/
- public DelegatingSiteTree(ServiceManager manager, Area area, SiteTreeImpl tree) {
- this.tree = tree;
+ public DelegatingSiteTree(ServiceManager manager, Area area, SiteTreeFactory factory,
+ SharedItemStore store, String key) {
this.area = area;
this.manager = manager;
+ this.store = store;
+ this.key = key;
+ this.factory = factory;
}
public Link add(String path, Document doc) throws SiteException {
@@ -76,39 +85,39 @@
}
public boolean contains(String path) {
- return this.tree.contains(path);
+ return getTree().contains(path);
}
public boolean contains(String path, String language) {
- return this.tree.contains(path, language);
+ return getTree().contains(path, language);
}
public boolean containsByUuid(String uuid, String language) {
- return this.tree.containsByUuid(uuid, language);
+ return getTree().containsByUuid(uuid, language);
}
public boolean containsInAnyLanguage(String uuid) {
- return this.tree.containsInAnyLanguage(uuid);
+ return getTree().containsInAnyLanguage(uuid);
}
public String getArea() {
return this.area.getName();
}
-
+
public Link getByUuid(String uuid, String language) throws SiteException {
- Link delegate = this.tree.getByUuid(uuid, language);
+ Link delegate = getTree().getByUuid(uuid, language);
return getLink(delegate);
}
protected Link getLink(Link delegate) {
Link link = (Link) this.links.get(delegate);
if (link == null) {
- link = new DelegatingLink(this.area.getPublication().getFactory(), getNode(delegate.getNode()),
- delegate.getLabel(), delegate.getLanguage());
+ link = new DelegatingLink(this.area.getPublication().getFactory(), getNode(delegate
+ .getNode()), delegate.getLabel(), delegate.getLanguage());
}
return link;
}
-
+
protected DelegatingNode getNode(SiteNode delegate) {
DelegatingNode node = (DelegatingNode) this.nodes.get(delegate);
if (node == null) {
@@ -119,12 +128,12 @@
}
public SiteNode getNode(String path) throws SiteException {
- return getNode(this.tree.getNode(path));
+ return getNode(getTree().getNode(path));
}
public SiteNode[] getNodes() {
if (this.nodeList == null) {
- SiteNode[] delegates = this.tree.getNodes();
+ SiteNode[] delegates = getTree().getNodes();
this.nodeList = new ArrayList();
for (int i = 0; i < delegates.length; i++) {
this.nodeList.add(getNode(delegates[i]));
@@ -139,7 +148,7 @@
public SiteNode[] getTopLevelNodes() {
if (this.topLevelNodes == null) {
- SiteNode[] delegates = this.tree.getTopLevelNodes();
+ SiteNode[] delegates = getTree().getTopLevelNodes();
this.topLevelNodes = new ArrayList();
for (int i = 0; i < delegates.length; i++) {
this.topLevelNodes.add(getNode(delegates[i]));
@@ -153,7 +162,7 @@
}
private NodeFactory nodeFactory;
-
+
protected NodeFactory getNodeFactory() {
if (this.nodeFactory == null) {
try {
@@ -191,7 +200,7 @@
public SiteNode[] preOrder() {
if (this.preOrder == null) {
- SiteNode[] delegates = this.tree.preOrder();
+ SiteNode[] delegates = getTree().preOrder();
this.preOrder = new ArrayList();
for (int i = 0; i < delegates.length; i++) {
this.preOrder.add(getNode(delegates[i]));
@@ -200,6 +209,14 @@
return (SiteNode[]) this.preOrder.toArray(new SiteNode[this.preOrder.size()]);
}
+ protected SiteTree getTree() {
+ try {
+ return (SiteTree) this.store.getRepositoryItem(this.factory, this.key);
+ } catch (RepositoryException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
public void save() throws RepositoryException {
throw new UnsupportedOperationException();
}
Modified: lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java?rev=661679&r1=661678&r2=661679&view=diff
==============================================================================
--- lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java (original)
+++ lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java Fri May 30 05:19:56 2008
@@ -68,8 +68,7 @@
SharedItemStore store = null;
try {
store = (SharedItemStore) this.manager.lookup(SharedItemStore.ROLE);
- SiteTreeImpl sharedTree = (SiteTreeImpl) store.getRepositoryItem(this, key);
- tree = new DelegatingSiteTree(this.manager, area, sharedTree);
+ tree = new DelegatingSiteTree(this.manager, area, this, store, key);
}
finally {
if (store != null) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.