You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2008/05/30 14:19:57 UTC
svn commit: r661679 - in
/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree2:
DelegatingSiteTree.java SiteTreeFactory.java
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) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org