[richfaces-svn-commits] JBoss Rich Faces SVN: r2062 - in trunk: framework/test/src/test/java/org/richfaces/model and 5 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Sat Aug 4 16:14:28 EDT 2007
Author: nbelaevski
Date: 2007-08-04 16:14:28 -0400 (Sat, 04 Aug 2007)
New Revision: 2062
Added:
trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveEntry.java
trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveFile.java
Modified:
trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
trunk/framework/test/src/test/java/org/richfaces/model/StackingTreeDataModelTest.java
trunk/samples/treeModelDemo/src/main/resources/org/richfaces/model/tree-model-data.xml
trunk/samples/treeModelDemo/src/main/resources/org/richfaces/service/tree-model-rules.xml
trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp
trunk/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java
trunk/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java
Log:
- Unit tests for StackingTreeDataModel extended
- Draft implementation of handling for nested UIRecursiveTreeNodes
- Added nested UIRecursiveTreeNodes to sample
Modified: trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/framework/api/src/main/java/org/richfaces/model/StackingTreeModel.java 2007-08-04 20:14:28 UTC (rev 2062)
@@ -6,7 +6,6 @@
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
@@ -19,6 +18,8 @@
import org.ajax4jsf.model.DataVisitor;
import org.ajax4jsf.model.ExtendedDataModel;
import org.ajax4jsf.model.Range;
+import org.apache.commons.collections.Predicate;
+import org.apache.commons.collections.iterators.FilterIterator;
/**
* @author Nick Belaevski mailto:nbelaevski at exadel.com created 25.07.2007
@@ -103,7 +104,7 @@
return this;
} else {
Key key = (Key) keyIterator.next();
- StackingTreeModel stackingTreeModel = this.getModelById(key.modelId);
+ StackingTreeModel stackingTreeModel = this.getInternalModelById(key.modelId);
if (entriesIterator != null && entriesIterator.hasNext()) {
StackEntry entry = (StackEntry) entriesIterator.next();
if (entry.model != stackingTreeModel || entry.modelKey != key.modelKey) {
@@ -199,7 +200,7 @@
}
StackEntry lastEntry = (StackEntry) stackEntries.getLast();
- for (Iterator iterator = lastEntry.model.getModelsIterator(); iterator.hasNext();) {
+ for (Iterator iterator = lastEntry.model.getInternalModelsIterator(); iterator.hasNext();) {
StackingTreeModel stackingTreeModel = (StackingTreeModel) iterator.next();
if (!stackingTreeModel.isEmpty()) {
@@ -237,7 +238,7 @@
new Visitor1(dataVisitor));
if (treeRange == null || treeRange.processChildren(argumentKey)) {
- Iterator iterator = this.getModelsIterator();
+ Iterator iterator = this.getInternalModelsIterator();
while (iterator.hasNext()) {
StackingTreeModel model = (StackingTreeModel) iterator.next();
@@ -258,10 +259,23 @@
}
}
+ private StackingTreeModel getInternalModelById(String id) {
+ StackingTreeModel model = getModelById(id);
+ if (model.isActive()) {
+ return model;
+ }
+
+ throw new IllegalStateException();
+ }
+
public StackingTreeModel getModelById(String id) {
return (StackingTreeModel) models.get(id);
}
+ private Iterator getInternalModelsIterator() {
+ return new FilterIterator(getModelsIterator(), ACTIVE_MODEL_PREDICATE);
+ }
+
public Iterator getModelsIterator() {
return models.values().iterator();
}
@@ -350,15 +364,11 @@
public void end(FacesContext context) throws IOException {
if (shifted) {
- if (dataVisitor instanceof LastElementAware) {
- try {
- ((LastElementAware) dataVisitor).setLastElement();
- dataVisitor.process(context, this.rowKey, argument);
- } finally {
- ((LastElementAware) dataVisitor).resetLastElement();
- }
- } else {
+ try {
+ ((LastElementAware) dataVisitor).setLastElement();
dataVisitor.process(context, this.rowKey, argument);
+ } finally {
+ ((LastElementAware) dataVisitor).resetLastElement();
}
}
}
@@ -384,11 +394,7 @@
* @see org.ajax4jsf.model.ExtendedDataModel#getRowKey()
*/
public Object getRowKey() {
- if (parent == null) {
- return rowKey;
- } else {
- return this.parent.getRowKey();
- }
+ return rowKey;
}
public void setRowKey(Object key) {
@@ -499,4 +505,21 @@
parent.componentSelected(component);
}
}
+
+ protected boolean isActive() {
+ return true;
+ }
+
+ private final static Predicate ACTIVE_MODEL_PREDICATE = new Predicate() {
+
+ public boolean evaluate(Object object) {
+ StackingTreeModel model = (StackingTreeModel) object;
+ if (model == null) {
+ return false;
+ }
+
+ return model.isActive();
+ }
+
+ };
}
Modified: trunk/framework/test/src/test/java/org/richfaces/model/StackingTreeDataModelTest.java
===================================================================
--- trunk/framework/test/src/test/java/org/richfaces/model/StackingTreeDataModelTest.java 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/framework/test/src/test/java/org/richfaces/model/StackingTreeDataModelTest.java 2007-08-04 20:14:28 UTC (rev 2062)
@@ -7,11 +7,14 @@
import java.util.LinkedHashMap;
import java.util.Map;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import org.ajax4jsf.model.DataVisitor;
import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
+import org.richfaces.model.StackingTreeModel.Key;
import org.richfaces.model.entity.Directory;
import org.richfaces.model.entity.File;
import org.richfaces.model.entity.Named;
@@ -31,32 +34,35 @@
}
private StackingTreeModel stackingTreeModel;
-
+ private StackingTreeModel projectsModel;
+ private StackingTreeModel directoriesModel;
+ private StackingTreeModel filesModel;
+
/* (non-Javadoc)
* @see org.ajax4jsf.tests.AbstractAjax4JsfTestCase#setUp()
*/
public void setUp() throws Exception {
super.setUp();
this.stackingTreeModel = new StackingTreeModel();
- StackingTreeModel projectsModel = new StackingTreeModel("project", "project", new StackingTreeModelDataProvider() {
+ projectsModel = new StackingTreeModel("project", "project", new StackingTreeModelDataProvider() {
private Map data = null;
-
+
public Object getData() {
if (data == null) {
data = new LinkedHashMap();
Project projectA = new Project("projectA", 10);
-
+
Directory adir1 = new Directory("ADir1", 50);
-
+
adir1.addFile(new File("AFile1", 60));
adir1.addFile(new File("AFile2", 61));
-
+
Directory adir2 = new Directory("ADir2", 101);
projectA.addDirectory(adir1);
projectA.addDirectory(adir2);
-
+
data.put(projectA.getName(), projectA);
Project projectB = new Project("projectB", 501);
@@ -68,28 +74,24 @@
projectB.addDirectory(bdir1);
projectB.addDirectory(bdir2);
projectB.addDirectory(bdir3);
-
+
data.put(projectB.getName(), projectB);
}
return data;
}
-
});
-
final ValueBinding dirVB = application.createValueBinding("#{project.directories}");
- StackingTreeModel directoriesModel = new StackingTreeModel("directory", "directory", new StackingTreeModelDataProvider() {
+ directoriesModel = new StackingTreeModel("directory", "directory", new StackingTreeModelDataProvider() {
public Object getData() {
return dirVB.getValue(facesContext);
}
});
-
final ValueBinding fileVB = application.createValueBinding("#{directory.files}");
- StackingTreeModel filesModel = new StackingTreeModel("file", "file", new StackingTreeModelDataProvider() {
+ filesModel = new StackingTreeModel("file", "file", new StackingTreeModelDataProvider() {
public Object getData() {
return fileVB.getValue(facesContext);
}
});
-
directoriesModel.addStackingModel(filesModel);
projectsModel.addStackingModel(directoriesModel);
this.stackingTreeModel.addStackingModel(projectsModel);
@@ -101,41 +103,218 @@
public void tearDown() throws Exception {
super.tearDown();
this.stackingTreeModel = null;
+ this.projectsModel = null;
+ this.directoriesModel = null;
+ this.filesModel = null;
}
-
+
public void testWalk() throws Exception {
StackingTreeDataModelTestVisitor1 visitor1 = new StackingTreeDataModelTestVisitor1();
this.stackingTreeModel.walk(facesContext, visitor1, null, null);
assertEquals(9, visitor1.getCounter());
+ this.stackingTreeModel.setRowKey(null);
+ assertNull(this.stackingTreeModel.getRowData());
+ assertFalse(this.stackingTreeModel.isLeaf());
}
+ public void testComponentsListener() throws Exception {
+ UIOutput output = new UIOutput();
+ TreeComponentModelListenerImpl listener = new TreeComponentModelListenerImpl();
+ stackingTreeModel.addTreeComponentModelListener(listener);
+ assertNull(listener.getComponent());
+ filesModel.componentSelected(output);
+ assertSame(output, listener.getComponent());
+
+ listener.reset();
+ assertNull(listener.getComponent());
+ stackingTreeModel.removeTreeComponentModelListener(listener);
+ filesModel.componentSelected(output);
+ assertNull(listener.getComponent());
+ }
+
+ public void testKey() throws Exception {
+ Key key = new Key("aaa", new Integer(10));
+ Key key2 = new Key("aaa", new Integer(11));
+ Key key3 = new Key("aaa", new Integer(10));
+ Key key4 = new Key("bbb", new Integer(10));
+
+ assertFalse(key.equals(new Key("aaa", new Integer(0)) {} ));
+
+ assertTrue(key.equals(key3));
+ assertTrue(key3.equals(key));
+ assertTrue(key2.equals(key2));
+ assertTrue(key4.equals(key4));
+
+ assertTrue(key.hashCode() == key3.hashCode());
+ assertTrue(key3.hashCode() == key.hashCode());
+ assertTrue(key2.hashCode() == key2.hashCode());
+ assertTrue(key4.hashCode() == key4.hashCode());
+
+ assertFalse(key.equals(key2));
+ assertFalse(key3.equals(key2));
+ assertFalse(key2.equals(key));
+ assertFalse(key2.equals(key3));
+
+ assertFalse(key.hashCode() == key2.hashCode());
+ assertFalse(key3.hashCode() == key2.hashCode());
+ assertFalse(key2.hashCode() == key.hashCode());
+ assertFalse(key2.hashCode() == key3.hashCode());
+
+ assertFalse(key4.equals(key));
+ assertFalse(key4.equals(key2));
+ assertFalse(key4.equals(key3));
+
+ assertFalse(key4.hashCode() == key.hashCode());
+ assertFalse(key4.hashCode() == key2.hashCode());
+ assertFalse(key4.hashCode() == key3.hashCode());
+
+ assertFalse(key.equals(key4));
+ assertFalse(key2.equals(key4));
+ assertFalse(key3.equals(key4));
+
+ assertFalse(new Key("aaa", new Integer(10)).equals(null));
+ assertFalse(new Key("aaa", null).equals(null));
+ assertFalse(new Key(null, new Integer(10)).equals(null));
+ assertFalse(new Key(null, null).equals(null));
+
+ assertFalse(key.hashCode() == key4.hashCode());
+ assertFalse(key2.hashCode() == key4.hashCode());
+ assertFalse(key3.hashCode() == key4.hashCode());
+
+ assertFalse(key.hashCode() == 0);
+ assertFalse(key2.hashCode() == 0);
+ assertFalse(key3.hashCode() == 0);
+ assertFalse(key4.hashCode() == 0);
+
+ assertTrue(new Key(null, new Integer(11)).equals(new Key(null, new Integer(11))));
+ assertFalse(new Key(null, new Integer(10)).equals(new Key(null, new Integer(11))));
+ assertFalse(new Key(null, new Integer(10)).equals(new Key("aaa", new Integer(10))));
+
+ assertTrue(new Key(null, new Integer(11)).hashCode() == new Key(null, new Integer(11)).hashCode());
+ assertFalse(new Key(null, new Integer(10)).hashCode() == new Key(null, new Integer(11)).hashCode());
+ assertFalse(new Key(null, new Integer(10)).hashCode() == new Key("aaa", new Integer(10)).hashCode());
+
+ assertTrue(new Key("aaa", null).equals(new Key("aaa", null)));
+ assertFalse(new Key("aaa", null).equals(new Key("bbb", null)));
+ assertFalse(new Key("aaa", null).equals(new Key("aaa", new Integer(10))));
+
+ assertTrue(new Key("aaa", null).hashCode() == new Key("aaa", null).hashCode());
+ assertFalse(new Key("aaa", null).hashCode() == new Key("bbb", null).hashCode());
+ assertFalse(new Key("aaa", null).hashCode() == new Key("aaa", new Integer(10)).hashCode());
+ }
+
+ class TreeComponentModelListenerImpl implements TreeComponentModelListener {
+
+ private UIComponent component;
+
+ public void componentSelected(UIComponent component) {
+ this.component = component;
+ }
+
+ public UIComponent getComponent() {
+ return component;
+ }
+
+ public void reset() {
+ this.component = null;
+ }
+ };
+
class StackingTreeDataModelTestVisitor1 implements DataVisitor, LastElementAware {
private boolean last;
private int tag = 0;
private int counter = 0;
-
+
public void process(FacesContext context, Object rowKey, Object argument)
- throws IOException {
+ throws IOException {
+ StackingTreeDataModelTestVisitor2 visitor2 = new StackingTreeDataModelTestVisitor2();
+
+ stackingTreeModel.walk(context, visitor2, null, new ListRowKey(new StackingTreeModel.Key("project", "projectA")),
+ argument, false);
+
+ assertEquals(5, visitor2.getCounter());
+
+ StackingTreeDataModelTestVisitor2 visitor20 = new StackingTreeDataModelTestVisitor2();
+
+ stackingTreeModel.walk(context, visitor20, new TreeRange() {
+
+ public boolean processChildren(TreeRowKey rowKey) {
+ return false;
+ }
+
+ public boolean processNode(TreeRowKey rowKey) {
+ return false;
+ }
+
+ }, new ListRowKey(new StackingTreeModel.Key("project", "projectA")),
+ argument, false);
+
+ assertEquals(0, visitor20.getCounter());
+
+ StackingTreeDataModelTestVisitor2 visitor21 = new StackingTreeDataModelTestVisitor2();
+
+ stackingTreeModel.walk(context, visitor21, new TreeRange() {
+
+ public boolean processChildren(TreeRowKey rowKey) {
+ return false;
+ }
+
+ public boolean processNode(TreeRowKey rowKey) {
+ return true;
+ }
+
+ }, new ListRowKey(new StackingTreeModel.Key("project", "projectA")),
+ argument, false);
+
+ assertEquals(1, visitor21.getCounter());
+
+ StackingTreeDataModelTestVisitor2 visitor22 = new StackingTreeDataModelTestVisitor2();
+
+ stackingTreeModel.walk(context, visitor22, null, new ListRowKey(new StackingTreeModel.Key("project", "projectB")),
+ argument, false);
+
+ assertEquals(4, visitor22.getCounter());
+
+ StackingTreeDataModelTestVisitor2 visitor23 = new StackingTreeDataModelTestVisitor2();
+
+ stackingTreeModel.walk(context, visitor23, new TreeRange() {
+
+ private boolean rootProcessed = false;
+
+ public boolean processChildren(TreeRowKey rowKey) {
+ boolean result = rootProcessed;
+ rootProcessed = true;
+ return !result;
+ }
+
+ public boolean processNode(TreeRowKey rowKey) {
+ return true;
+ }
+
+ }, new ListRowKey(new StackingTreeModel.Key("project", "projectB")),
+ argument, false);
+
+ assertEquals(4, visitor23.getCounter());
+
stackingTreeModel.setRowKey(rowKey);
+
+ assertSame(rowKey, stackingTreeModel.getRowKey());
+
assertNull(stackingTreeModel.getTreeNode());
Object rowData = stackingTreeModel.getRowData();
assertNotNull(rowData);
assertTrue(rowData instanceof Named);
-
+
Named named = (Named) rowData;
-
- if (tag == 0) {
- tag = named.getTag();
- } else {
- int currentTag = named.getTag();
- assertTrue(currentTag > tag);
- this.tag = currentTag;
- }
-
+
+ int currentTag = named.getTag();
+ assertTrue(currentTag > tag);
+ this.tag = currentTag;
+
assertFalse(this.tag % 10 == 1 ^ last);
-
+
if (named instanceof Directory) {
if ("ADir1".equals(named.getName())) {
assertFalse(stackingTreeModel.isLeaf());
@@ -147,7 +326,7 @@
} else if (named instanceof File) {
assertTrue(stackingTreeModel.isLeaf());
}
-
+
counter++;
}
@@ -158,10 +337,33 @@
public void setLastElement() {
this.last = true;
}
-
+
public int getCounter() {
return counter;
}
}
+
+ class StackingTreeDataModelTestVisitor2 implements DataVisitor {
+ private int counter = 0;
+ private int tag = 0;
+
+ public void process(FacesContext context, Object rowKey, Object argument)
+ throws IOException {
+
+ stackingTreeModel.setRowKey(rowKey);
+ Object rowData = stackingTreeModel.getRowData();
+ assertNotNull(rowData);
+ Named named = (Named) rowData;
+
+ int currentTag = named.getTag();
+ assertTrue(currentTag > tag);
+ tag = currentTag;
+ counter++;
+ }
+
+ public int getCounter() {
+ return counter;
+ }
+ }
}
Added: trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveEntry.java
===================================================================
--- trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveEntry.java (rev 0)
+++ trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveEntry.java 2007-08-04 20:14:28 UTC (rev 2062)
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package org.richfaces.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Nick Belaevski
+ * mailto:nbelaevski at exadel.com
+ * created 04.08.2007
+ *
+ */
+public class ArchiveEntry extends Entry {
+ private List archiveEntries = new ArrayList();
+
+ public void addArchiveEntry(ArchiveEntry entry) {
+ this.archiveEntries.add(entry);
+ }
+
+ public List getArchiveEntries() {
+ return archiveEntries;
+ }
+}
Added: trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveFile.java
===================================================================
--- trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveFile.java (rev 0)
+++ trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/ArchiveFile.java 2007-08-04 20:14:28 UTC (rev 2062)
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package org.richfaces.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Nick Belaevski
+ * mailto:nbelaevski at exadel.com
+ * created 04.08.2007
+ *
+ */
+public class ArchiveFile extends File {
+ private List archiveEntries = new ArrayList();
+
+ public void addArchiveEntry(ArchiveEntry entry) {
+ this.archiveEntries.add(entry);
+ }
+
+ public List getArchiveEntries() {
+ return archiveEntries;
+ }
+}
Modified: trunk/samples/treeModelDemo/src/main/resources/org/richfaces/model/tree-model-data.xml
===================================================================
--- trunk/samples/treeModelDemo/src/main/resources/org/richfaces/model/tree-model-data.xml 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/samples/treeModelDemo/src/main/resources/org/richfaces/model/tree-model-data.xml 2007-08-04 20:14:28 UTC (rev 2062)
@@ -77,7 +77,18 @@
<file name="TEST-ComponentTest.xml" />
</directory>
<file name="richfaces-3.1.0-snapshot" />
- <file name="richfaces-3.1.0-sources" />
+ <archive name="richfaces-3.1.0-sources">
+ <archiveEntry name="org">
+ <archiveEntry name="richfaces">
+ <archiveEntry name="component">
+ <archiveEntry name="UITree" />
+ <archiveEntry name="UITreeNode" />
+ <archiveEntry name="UICalendar" />
+ <archiveEntry name="UIRangedNumberInput" />
+ </archiveEntry>
+ </archiveEntry>
+ </archiveEntry>
+ </archive>
<file name="richfaces-3.1.0-javadoc" />
</directory>
</project>
Modified: trunk/samples/treeModelDemo/src/main/resources/org/richfaces/service/tree-model-rules.xml
===================================================================
--- trunk/samples/treeModelDemo/src/main/resources/org/richfaces/service/tree-model-rules.xml 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/samples/treeModelDemo/src/main/resources/org/richfaces/service/tree-model-rules.xml 2007-08-04 20:14:28 UTC (rev 2062)
@@ -36,6 +36,22 @@
</set-properties-rule>
</pattern>
+ <pattern value="*/archive">
+ <object-create-rule classname="org.richfaces.model.ArchiveFile" />
+ <set-next-rule methodname="addFile" />
+ <set-properties-rule>
+ <alias attr-name="name" prop-name="name" />
+ </set-properties-rule>
+ </pattern>
+
+ <pattern value="*/archiveEntry">
+ <object-create-rule classname="org.richfaces.model.ArchiveEntry" />
+ <set-next-rule methodname="addArchiveEntry" />
+ <set-properties-rule>
+ <alias attr-name="name" prop-name="name" />
+ </set-properties-rule>
+ </pattern>
+
<pattern value="*/package">
<object-create-rule classname="org.richfaces.model.Package" />
<set-next-rule methodname="addPackage" />
Modified: trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/samples/treeModelDemo/src/main/webapp/pages/index.jsp 2007-08-04 20:14:28 UTC (rev 2062)
@@ -64,6 +64,16 @@
<h:commandLink action="#{file.click}" value="File1: #{file.name}" />
</tree:treeNode>
</model:treeNodes>
+
+ <model:recursiveTreeNodes id="archiveEntry" var="archiveEntry"
+ root="#{dir.files}" nodes="#{archiveEntry.archiveEntries}">
+
+ <tree:treeNode id="archiveEntryNode" rendered="#{archiveEntry.class.simpleName == 'ArchiveFile' or archiveEntry.class.simpleName == 'ArchiveEntry'}">
+ <h:commandLink action="#{archiveEntry.click}" value="Archive entry: #{archiveEntry.name}" />
+ </tree:treeNode>
+
+ </model:recursiveTreeNodes>
+
</model:recursiveTreeNodes>
<%--model:treeNodes var="file" nodes="#{proj.dir.files}">
Modified: trunk/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java
===================================================================
--- trunk/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/ui/treeModel/src/main/java/org/richfaces/component/UIRecursiveTreeNodes.java 2007-08-04 20:14:28 UTC (rev 2062)
@@ -7,6 +7,7 @@
import java.util.Iterator;
import javax.faces.context.FacesContext;
+import javax.faces.el.PropertyNotFoundException;
import org.apache.commons.collections.iterators.IteratorChain;
import org.richfaces.model.StackingTreeModel;
@@ -27,8 +28,12 @@
public abstract void setRoot(Object root);
public Object getData() {
- return getRoot();
- }
+ try {
+ return getRoot();
+ } catch (PropertyNotFoundException e) {
+ return new Object[0];
+ }
+ }
public abstract String getVar();
public abstract void setVar(String var);
@@ -39,7 +44,11 @@
StackingTreeModel recursiveModel = new StackingTreeModel(getId(), getVar(), new StackingTreeModelDataProvider() {
public Object getData() {
- return UIRecursiveTreeNodes.this.getNodes();
+ try {
+ return UIRecursiveTreeNodes.this.getNodes();
+ } catch (PropertyNotFoundException e) {
+ return new Object[0];
+ }
}
}) {
@@ -65,6 +74,10 @@
return chain;
}
+
+ protected boolean isActive() {
+ return UIRecursiveTreeNodes.this.isRendered();
+ }
};
stackingModel.addStackingModel(recursiveModel);
Modified: trunk/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java
===================================================================
--- trunk/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java 2007-08-04 02:19:57 UTC (rev 2061)
+++ trunk/ui/treeModel/src/main/java/org/richfaces/component/UITreeNodes.java 2007-08-04 20:14:28 UTC (rev 2062)
@@ -36,6 +36,10 @@
super.setupModel(object, facesContext);
componentSelected(UITreeNodes.this);
}
+
+ protected boolean isActive() {
+ return UITreeNodes.this.isRendered();
+ }
};
return treeModel;
More information about the richfaces-svn-commits
mailing list