Author: nbelaevski
Date: 2007-03-30 14:52:09 -0400 (Fri, 30 Mar 2007)
New Revision: 229
Added:
trunk/richfaces/tree/src/test/java/org/richfaces/component/xml/
trunk/richfaces/tree/src/test/java/org/richfaces/component/xml/TreeDataBuilderTest.java
trunk/richfaces/tree/src/test/resources/
trunk/richfaces/tree/src/test/resources/org/
trunk/richfaces/tree/src/test/resources/org/richfaces/
trunk/richfaces/tree/src/test/resources/org/richfaces/component/
trunk/richfaces/tree/src/test/resources/org/richfaces/component/xml/
trunk/richfaces/tree/src/test/resources/org/richfaces/component/xml/XmlTreeDataBuilderTest.xml
Modified:
trunk/richfaces/tree/
trunk/richfaces/tree/src/main/java/org/richfaces/component/xml/XmlTreeDataBuilder.java
trunk/richfaces/tree/src/test/java/org/richfaces/component/TreeNodeTest.java
Log:
XMLTreeDataBuilder corrections
Test for XMLTreeDataBuilder created
Property changes on: trunk/richfaces/tree
___________________________________________________________________
Name: svn:ignore
- target
.settings
.classpath
.project
+ target
.settings
.classpath
.project
.clover
Modified:
trunk/richfaces/tree/src/main/java/org/richfaces/component/xml/XmlTreeDataBuilder.java
===================================================================
---
trunk/richfaces/tree/src/main/java/org/richfaces/component/xml/XmlTreeDataBuilder.java 2007-03-30
15:05:29 UTC (rev 228)
+++
trunk/richfaces/tree/src/main/java/org/richfaces/component/xml/XmlTreeDataBuilder.java 2007-03-30
18:52:09 UTC (rev 229)
@@ -80,18 +80,12 @@
int currentId = 0;
if (idsList.size() <= level) {
- for (int i = idsList.size(); i < level; i++) {
+ for (int i = idsList.size(); i <= level; i++) {
idsList.add(null);
}
-
- idsList.add(new Integer(0));
} else {
Integer integer = (Integer) idsList.get(level);
- if (integer != null) {
- currentId = integer.intValue() + 1;
- } else {
- //zero currentId is ok
- }
+ currentId = integer.intValue() + 1;
}
Set exclusions = (Set) exclusionSets.get(level);
@@ -117,17 +111,18 @@
TreeNode node = new TreeNodeImpl();
node.setData(xmlNodeData);
- if (this.treeNode != null) {
- this.treeNode.addChild(id, node);
- this.treeNodesList.add(this.treeNode);
- }
-
+ this.treeNode.addChild(id, node);
+ this.treeNodesList.add(this.treeNode);
this.treeNode = node;
}
public void body(String namespace, String name, String text)
throws Exception {
super.body(namespace, name, text);
+
+ if (text != null) {
+ ((XmlNodeData) this.treeNode.getData()).setText(text.trim());
+ }
}
public void end(String namespace, String name) throws Exception {
@@ -145,9 +140,7 @@
exclusionSets.remove(exclusionSets.size() - 1);
}
- if (!this.treeNodesList.isEmpty()) {
- this.treeNode = (TreeNode) this.treeNodesList.remove(this.treeNodesList.size() - 1);
- }
+ this.treeNode = (TreeNode) this.treeNodesList.remove(this.treeNodesList.size() - 1);
}
}
@@ -163,6 +156,7 @@
}
};
digester.setRules(rulesBase);
+ digester.setNamespaceAware(true);
digester.parse(inputSource);
return rule.treeNode;
Modified: trunk/richfaces/tree/src/test/java/org/richfaces/component/TreeNodeTest.java
===================================================================
---
trunk/richfaces/tree/src/test/java/org/richfaces/component/TreeNodeTest.java 2007-03-30
15:05:29 UTC (rev 228)
+++
trunk/richfaces/tree/src/test/java/org/richfaces/component/TreeNodeTest.java 2007-03-30
18:52:09 UTC (rev 229)
@@ -35,6 +35,8 @@
*/
public class TreeNodeTest extends TestCase {
+ private final static Object NODE_ID = new Integer(0);
+
protected TreeNode node = null;
protected static final int TEST_CHILDREN_COUNT = 7;
@@ -69,13 +71,13 @@
}
public void testIsLeaf() {
- node.addChild("first", new TreeNodeImpl());
+ node.addChild(NODE_ID, new TreeNodeImpl());
assertFalse(node.isLeaf());
}
public void testParent() {
TreeNode child = new TreeNodeImpl();
- node.addChild("first", child);
+ node.addChild(NODE_ID, child);
assertEquals(child.getParent(), node);
}
@@ -84,10 +86,18 @@
firstNode.setData("First Node");
TreeNode secondNode = new TreeNodeImpl();
secondNode.setData("Second Node");
- node.addChild("first", firstNode);
+ node.addChild(NODE_ID, firstNode);
node.addChild("second", secondNode);
node.addChild("third", new TreeNodeImpl());
assertTrue(node.getChild("second").getData().equals("Second
Node"));
}
+ public void testRemove() {
+ assertTrue(node.isLeaf());
+ node.addChild(NODE_ID, new TreeNodeImpl());
+ assertFalse(node.isLeaf());
+ node.removeChild(NODE_ID);
+ assertTrue(node.isLeaf());
+ }
+
}
Added:
trunk/richfaces/tree/src/test/java/org/richfaces/component/xml/TreeDataBuilderTest.java
===================================================================
---
trunk/richfaces/tree/src/test/java/org/richfaces/component/xml/TreeDataBuilderTest.java
(rev 0)
+++
trunk/richfaces/tree/src/test/java/org/richfaces/component/xml/TreeDataBuilderTest.java 2007-03-30
18:52:09 UTC (rev 229)
@@ -0,0 +1,102 @@
+/**
+ * License Agreement.
+ *
+ * JBoss RichFaces 3.0 - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+package org.richfaces.component.xml;
+
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.richfaces.component.TreeNode;
+import org.xml.sax.InputSource;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Nick Belaevski - nbelaevski(a)exadel.com
+ * created 30.03.2007
+ *
+ */
+public class TreeDataBuilderTest extends TestCase {
+ private TreeNode treeNode = null;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ InputStream stream =
this.getClass().getResourceAsStream("/org/richfaces/component/xml/XmlTreeDataBuilderTest.xml");
+ try {
+ treeNode = XmlTreeDataBuilder.build(new InputSource(stream));
+ } finally {
+ stream.close();
+ }
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testIds() {
+ assertNotNull(treeNode);
+
+ new Visitor() {
+ public void visit(Object key, TreeNode node) {
+ XmlNodeData data = (XmlNodeData) node.getData();
+ if (data == null) {
+ return ;
+ }
+
+ if ("servlet-name-id".equals(data.getName())) {
+ assertEquals("1", key);
+ } else if ("servlet-class-id".equals(data.getName())) {
+ assertEquals("0", key);
+ } else if ("load-on-startup-id".equals(data.getName())) {
+ assertEquals("2", key);
+ } else if ("description".equals(data.getName())) {
+ assertEquals("Tree demo", data.getText());
+ } else if ("web-app".equals(data.getName())) {
+ assertNotNull(node.toString());
+ assertEquals("", data.getText());
+ assertEquals("urn:testing", data.getNamespace());
+
+ Map attributes = data.getAttributes();
+ assertEquals("2.4", attributes.get("version"));
+ assertEquals("testId", attributes.get("id"));
+ assertEquals(2, attributes.size());
+ }
+
+ assertNotNull(data.toString());
+ }
+ }.accept(null, treeNode);
+ }
+}
+
+abstract class Visitor {
+ public void accept(Object key, TreeNode node) {
+ this.visit(key, node);
+ Iterator iterator = node.getChildren();
+ while (iterator.hasNext()) {
+ Map.Entry entry = (Map.Entry) iterator.next();
+
+ this.accept(entry.getKey(), (TreeNode) entry.getValue());
+ }
+ }
+
+ public abstract void visit(Object key, TreeNode node);
+}
Added:
trunk/richfaces/tree/src/test/resources/org/richfaces/component/xml/XmlTreeDataBuilderTest.xml
===================================================================
---
trunk/richfaces/tree/src/test/resources/org/richfaces/component/xml/XmlTreeDataBuilderTest.xml
(rev 0)
+++
trunk/richfaces/tree/src/test/resources/org/richfaces/component/xml/XmlTreeDataBuilderTest.xml 2007-03-30
18:52:09 UTC (rev 229)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<web-app version="2.4" id="testId"
xmlns="urn:testing">
+ <description>
+ Tree demo
+ </description>
+ <display-name id="displayName">tree-demo</display-name>
+ <context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
+ <context-param id="4">
+ <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
+ <param-value>false</param-value>
+ </context-param>
+ <context-param>
+ <param-name>facelets.REFRESH_PERIOD</param-name>
+ <param-value>2</param-value>
+ </context-param>
+ <context-param>
+ <param-name>facelets.DEVELOPMENT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+ <context-param>
+ <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+ <param-value>client</param-value>
+ </context-param>
+ <context-param>
+ <param-name>com.sun.faces.validateXml</param-name>
+ <param-value>true</param-value>
+ </context-param>
+ <context-param>
+ <param-name>com.sun.faces.verifyObjects</param-name>
+ <param-value>true</param-value>
+ </context-param>
+ <filter>
+ <filter-name>a4j</filter-name>
+ <filter-class>org.ajax4jsf.Filter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>a4j</filter-name>
+ <servlet-name>Faces Servlet</servlet-name>
+ <dispatcher>FORWARD</dispatcher>
+ <dispatcher>REQUEST</dispatcher>
+ <dispatcher>INCLUDE</dispatcher>
+ </filter-mapping>
+ <servlet>
+ <servlet-name-id id="1">Faces Servlet</servlet-name-id>
+ <servlet-class-id>javax.faces.webapp.FacesServlet</servlet-class-id>
+ <load-on-startup-id>1</load-on-startup-id>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ </login-config>
+</web-app>