[richfaces-svn-commits] JBoss Rich Faces SVN: r2454 - in trunk: framework/api/src/main/java/org/richfaces/model and 9 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Aug 23 13:50:34 EDT 2007


Author: nbelaevski
Date: 2007-08-23 13:50:34 -0400 (Thu, 23 Aug 2007)
New Revision: 2454

Added:
   trunk/ui/tree/src/test/java/org/richfaces/renderkit/
   trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java
Modified:
   trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java
   trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java
   trunk/framework/api/src/main/java/org/richfaces/model/ListRowKey.java
   trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java
   trunk/samples/tree-demo/src/main/webapp/pages/index.jsp
   trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
   trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java
   trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
   trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
   trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss
   trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
   trunk/ui/tree/src/test/java/org/richfaces/component/ListRowKeyTest.java
Log:
http://jira.jboss.com/jira/browse/RF-642

Modified: trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -38,8 +38,4 @@
 		super(component);
 	}
 
-	public AjaxSelectedEvent(UIComponent component, boolean duplicate) {
-		super(component, duplicate);
-	}
-
 }

Modified: trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -32,18 +32,10 @@
  */
 public class NodeSelectedEvent extends FacesEvent {
 
-	private boolean duplicate = false; 
-	
 	public NodeSelectedEvent(UIComponent component) {
 		super(component);
 	}
 
-	public NodeSelectedEvent(UIComponent component, boolean duplicate) {
-		super(component);
-		
-		this.duplicate = duplicate;
-	}
-
 	/**
 	 * 
 	 */
@@ -64,8 +56,4 @@
 	public void processListener(FacesListener listener) {
 		((NodeSelectedListener) listener).processSelection(this);
 	}
-
-	public boolean isDuplicate() {
-		return duplicate;
-	}
 }

Modified: trunk/framework/api/src/main/java/org/richfaces/model/ListRowKey.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/model/ListRowKey.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/framework/api/src/main/java/org/richfaces/model/ListRowKey.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -187,12 +187,7 @@
 		if (rowKey instanceof ListRowKey) {
 			ListRowKey listRowKey = (ListRowKey) rowKey;
 
-			int commonLength = getCommonPathLength(listRowKey);
-			if (commonLength != 0) {
-				return commonLength == depth();
-			} else {
-				return rowKey.depth() == 0;
-			}
+			return depth() == getCommonPathLength(listRowKey);
 		} else {
 			return super.isSubKey(rowKey);
 		}

Modified: trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java
===================================================================
--- trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -34,17 +34,17 @@
 import javax.faces.context.FacesContext;
 import javax.faces.event.FacesEvent;
 
+import org.ajax4jsf.context.AjaxContext;
+import org.richfaces.component.UITree;
+import org.richfaces.component.UITreeNode;
+import org.richfaces.component.xml.XmlTreeDataBuilder;
 import org.richfaces.event.DropEvent;
-import org.ajax4jsf.context.AjaxContext;
+import org.richfaces.event.NodeExpandedEvent;
+import org.richfaces.event.NodeSelectedEvent;
 import org.richfaces.model.ListRowKey;
 import org.richfaces.model.TreeNode;
 import org.richfaces.model.TreeNodeImpl;
 import org.richfaces.model.TreeRowKey;
-import org.richfaces.component.UITree;
-import org.richfaces.component.UITreeNode;
-import org.richfaces.event.NodeExpandedEvent;
-import org.richfaces.event.NodeSelectedEvent;
-import org.richfaces.component.xml.XmlTreeDataBuilder;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
@@ -186,6 +186,16 @@
 
 	public void onSelect(NodeSelectedEvent event) {
 		System.out.println("Node selected: " + getTree(event).getRowKey());
+		UITree tree = getTree(event);
+		Set keys = tree.getAjaxKeys();
+		if (keys == null) {
+			keys = new HashSet();
+			tree.setAjaxKeys(keys);
+		}
+
+		keys.add(tree.getRowKey());
+		keys.add(new ListRowKey());
+		
 		if (getTree(event).getTreeNode()!=null) {
 			selectedNode = getTree(event).getTreeNode();
 			initData();

Modified: trunk/samples/tree-demo/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/samples/tree-demo/src/main/webapp/pages/index.jsp	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/samples/tree-demo/src/main/webapp/pages/index.jsp	2007-08-23 17:50:34 UTC (rev 2454)
@@ -1,4 +1,6 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+            "http://www.w3.org/TR/html4/loose.dtd">
+
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
 <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
@@ -118,7 +120,7 @@
 					onselected="window.status='selectedNode: '+event.selectedNode;"
 					onexpand="window.status='expandedNode: '+event.expandedNode"
 					oncollapse="window.status='collapsedNode: '+event.collapsedNode"
-					ajaxSubmitSelection="true" reRender="outputText, selectOneListbox"
+					ajaxSubmitSelection="true"
 					preserveModel="none"
 					dragIndicator="treeIndicator"
 					immediate="false"

Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -321,8 +321,8 @@
 			AbstractTreeDataModel dataModel = (AbstractTreeDataModel) getExtendedDataModel();
 			dataModel.walk(faces, visitor, range, rowKey,
 					argument,
-					faces.getExternalContext().getRequestParameterMap().get(
-							getBaseClientId(faces) + LAST_ELEMENT_FLAG) != null);
+					false/*faces.getExternalContext().getRequestParameterMap().get(
+							getBaseClientId(faces) + LAST_ELEMENT_FLAG) != null*/);
 		} finally {
 			try {
 				setRowKey(faces, savedRowKey);
@@ -492,9 +492,7 @@
 
 		if (event instanceof NodeSelectedEvent) {
 			NodeSelectedEvent selectedEvent = (NodeSelectedEvent) event;
-			if (!selectedEvent.isDuplicate()) {
-				setSelected();
-			}
+			setSelected();
 		}
 
 		// fire node events

Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -20,7 +20,6 @@
 import org.richfaces.event.DropEvent;
 import org.richfaces.event.DropListener;
 import org.richfaces.event.NodeExpandedListener;
-import org.richfaces.event.NodeSelectedEvent;
 import org.richfaces.event.NodeSelectedListener;
 import org.richfaces.event.TreeListenerEventsProducer;
 
@@ -108,13 +107,6 @@
 		FacesContext context = getFacesContext();
 		UITree tree = getUITree();
 
-		if (event instanceof NodeSelectedEvent) {
-			NodeSelectedEvent selectedEvent = (NodeSelectedEvent) event;
-			if (!selectedEvent.isDuplicate()) {
-				tree.setSelected();
-			}
-		}
-		
 		TreeEvents.invokeListenerBindings(this, event, context);
 
 		//TODO quick fix for UITree to invoke listeners

Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -289,11 +289,11 @@
 				if (tree.getAttributes().get(
 						UITree.SELECTED_NODE_PARAMETER_NAME) == null) {
 
+					new NodeSelectedEvent(tree).queue();
 					new NodeSelectedEvent(node).queue();
-					new NodeSelectedEvent(tree, true).queue();
 				} else {
+					new AjaxSelectedEvent(tree).queue();
 					new AjaxSelectedEvent(node).queue();
-					new AjaxSelectedEvent(tree, true).queue();
 				}
 			}
 

Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -23,6 +23,8 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +54,35 @@
 
 public abstract class TreeRendererBase extends CompositeRenderer {
 
+	protected final static Comparator treeRowKeyComparator = new Comparator() {
+
+		public int compare(Object key1, Object key2) {
+			TreeRowKey treeRowKey1 = (TreeRowKey) key1;
+			TreeRowKey treeRowKey2 = (TreeRowKey) key2;
+			
+			Iterator iterator1 = treeRowKey1.iterator();
+			Iterator iterator2 = treeRowKey2.iterator();
+			
+			while (iterator1.hasNext() && iterator2.hasNext()) {
+				String id1 = iterator1.next().toString();
+				String id2 = iterator2.next().toString();
+				
+				int cr = id1.compareTo(id2);
+				if (cr != 0) {
+					return cr;
+				}
+			}
+			
+			if (iterator1.hasNext()) {
+				return 1;
+			} else if (iterator2.hasNext()) {
+				return -1;
+			} else {
+				return 0;
+			}
+		}
+	};
+	
 	private final class RendererDataModelEventNavigator extends
 			TreeDataModelEventNavigator {
 		private final FacesContext context;
@@ -62,7 +93,6 @@
 		private String clientId;
 		private boolean expanded;
 		private boolean showLines;
-		private boolean isLastElement;
 		
 		private RendererDataModelEventNavigator(UITree tree,
 				TreeRowKey floatingKey, FacesContext context, Flag droppedDownToLevelFlag) {
@@ -129,10 +159,7 @@
 		public void beforeUp(int levels) throws IOException {
 		}
 		
-		int stat = 0;
-		
 		public void openDiv(Context context) throws IOException {
-			stat++;
 			writer.startElement("div", tree);
 			
 			if (context == null) {
@@ -159,12 +186,7 @@
 		
 		public void closeDiv() throws IOException {
 			writer.endElement("div");
-			stat--;
 		}
-		
-		public int getStat() {
-			return stat;
-		}
 	}
 
 	private class DataVisitorWithLastElement implements DataVisitor,
@@ -172,8 +194,6 @@
 
 		private boolean isLastElement = false;
 
-		private final ResponseWriter writer;
-
 		private final Flag flag;
 
 		private final UITree tree;
@@ -182,10 +202,8 @@
 		
 		private TreeStateAdvisor methodBindingAdvisor = null;
 
-		private DataVisitorWithLastElement(ResponseWriter writer,
-				Flag flag, UITree tree,
+		private DataVisitorWithLastElement(Flag flag, UITree tree,
 				RendererDataModelEventNavigator navigator) {
-			this.writer = writer;
 			this.flag = flag;
 			this.tree = tree;
 			this.navigator = navigator;
@@ -208,8 +226,20 @@
 			try {
 				nodeFacet.getAttributes().put("isLastElement", new Boolean(isLastElement));
 
-				renderChild(context, nodeFacet);
+				ResponseWriter writer = context.getResponseWriter();
+				if (isLastElement) {
+					writer.startElement("p", tree);
+					writer.writeAttribute("class", "last-node", null);
+					writer.endElement("p");
 
+					writer.startElement("div", tree);
+					renderChild(context, nodeFacet);
+					writer.endElement("div");
+				} else {
+					renderChild(context, nodeFacet);
+				}
+				
+
 				c = new Context();
 				c.setClientId(nodeFacet.getClientId(context) + NamingContainer.SEPARATOR_CHAR);
 				c.setLast(this.isLastElement);
@@ -331,12 +361,38 @@
 				try {
 					Set ajaxKeys = tree.getAjaxKeys(); 
 					if (ajaxKeys != null) {
-						Iterator ajaxKeysItr = ajaxKeys.iterator();
+						List list = new ArrayList(ajaxKeys.size());
+						list.addAll(ajaxKeys);
+						Collections.sort(list, treeRowKeyComparator);
+						Iterator ajaxKeysItr = list.iterator();
+						TreeRowKey lastKey = null;
+						
 						while (ajaxKeysItr.hasNext()) {
 							TreeRowKey key = (TreeRowKey) ajaxKeysItr.next();
+
+							if (lastKey == null) {
+								lastKey = key;
+							} else {
+								if (!lastKey.isSubKey(key)) {
+									lastKey = key;
+								} else {
+									//skip nodes that's parent nodes have been rendered
+									continue;
+								}
+							}
+							
+							if (key != null && key.depth() == 0) {
+								key = null;
+							}
+							
 							tree.setRowKey(context, key);
 							
-							String id = tree.getNodeFacet().getClientId(context);
+							String id;
+							if (key == null) {
+								id = tree.getClientId(context);
+							} else {
+								id = tree.getNodeFacet().getClientId(context);
+							}
 							String treeChildrenId = id + NamingContainer.SEPARATOR_CHAR + "childs";
 							if (ids.isEmpty() || ids.contains(id) || ids.contains(tree.getClientId(context))/* handle tree updates requests */) {
 								writeContent(context, tree, key);
@@ -349,7 +405,7 @@
 							}
 						}
 						
-						ajaxKeys.clear();
+						//ajaxKeys.clear();
 					}
 				} catch (Exception e) {
 					throw new FacesException(e);
@@ -525,8 +581,7 @@
 				
 			};
 			
-			input.walk(context, new DataVisitorWithLastElement(writer,
-					droppedDownToLevelFlag, input,
+			input.walk(context, new DataVisitorWithLastElement(droppedDownToLevelFlag, input,
 					levelNavigator), treeRange, key, null);
 
 			/*if (key != null) {
@@ -534,8 +589,6 @@
 			}*/
 
 			levelNavigator.followRowKey(context, null);
-
-			System.out.println("TreeRendererBase.writeContent() " + levelNavigator.getStat());
 		} finally {
 			input.setRowKey(context, null);
 			input.restoreOrigValue();

Modified: trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss
===================================================================
--- trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss	2007-08-23 17:50:34 UTC (rev 2454)
@@ -80,6 +80,10 @@
 	cursor: pointer;
 }
 
+.last-node {
+	display: none;
+}
+
 ]]>
 </f:verbatim>
 
@@ -112,11 +116,14 @@
 		<f:resource f:key="org.richfaces.renderkit.html.images.TreeLineNodeImage"/>
 	</u:style>
 </u:selector>
-<u:selector name=".dr-tree-h-ic-line-last">
+<u:selector name="p.last-node+* .rich-tree-node-handleicon">
 	<u:style name="background-image">
 		<f:resource f:key="org.richfaces.renderkit.html.images.TreeLineLastImage"/>
 	</u:style>
 </u:selector>
+<u:selector name="p.last-node+*+div.dr-tree-h-ic-line">
+	<u:style name="background-image" value="none" />
+</u:selector>
 <u:selector name=".dr-tree-h-ic-line-exp">
 	<u:style name="background-image">
 		<f:resource f:key="org.richfaces.renderkit.html.images.TreeLineExpandedImage"/>

Modified: trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
===================================================================
--- trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js	2007-08-23 17:50:34 UTC (rev 2454)
@@ -136,7 +136,17 @@
 		if (nodeIds) {
 			for (var i = 0; i < nodeIds.length; i++ ) {
 				var nodeId = nodeIds[i];
-				this._getNodeElements(this, nodeId, nodeId.substring(0, nodeId.lastIndexOf(':')));
+				if (nodeId != this.id) {
+					this._getNodeElements(this, nodeId, nodeId.substring(0, nodeId.lastIndexOf(':')));
+				} else {
+					for (var i = 0; i < this.childs.length; i++) {
+						var child = this.childs[i];
+						child.destroy();
+					}
+					
+					this.childs = [];	
+					this.getElements();
+				}
 			}
 
 			//input holding selection has been refreshed

Modified: trunk/ui/tree/src/test/java/org/richfaces/component/ListRowKeyTest.java
===================================================================
--- trunk/ui/tree/src/test/java/org/richfaces/component/ListRowKeyTest.java	2007-08-23 17:45:15 UTC (rev 2453)
+++ trunk/ui/tree/src/test/java/org/richfaces/component/ListRowKeyTest.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -241,10 +241,10 @@
 		
 		ListRowKey listRowKey1 = new ListRowKey(keyBase);
 	
-		assertFalse(new ListRowKey().isSubKey(listRowKey1));
-		assertFalse(new ListRowKey().isSubKey(listRowKey));
-		assertTrue(listRowKey.isSubKey(new ListRowKey()));
-		assertTrue(listRowKey1.isSubKey(new ListRowKey()));
+		assertTrue(new ListRowKey().isSubKey(listRowKey1));
+		assertTrue(new ListRowKey().isSubKey(listRowKey));
+		assertFalse(listRowKey.isSubKey(new ListRowKey()));
+		assertFalse(listRowKey1.isSubKey(new ListRowKey()));
 
 		assertTrue(listRowKey.isSubKey(listRowKey1));
 		assertFalse(listRowKey1.isSubKey(listRowKey));

Added: trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java
===================================================================
--- trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java	                        (rev 0)
+++ trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java	2007-08-23 17:50:34 UTC (rev 2454)
@@ -0,0 +1,95 @@
+/**
+ * License Agreement.
+ *
+ *  JBoss RichFaces - 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.renderkit;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+import org.richfaces.model.ListRowKey;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ * <br /><br />
+ * 
+ * Created 22.08.2007
+ * @author Nick Belaevski
+ * @since 3.1
+ */
+
+public class TreeRowKeyComparatorTest extends TestCase {
+
+	/* (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+	}
+
+	/* (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+
+	public void testComparator() throws Exception {
+		Comparator comparator = TreeRendererBase.treeRowKeyComparator;
+	
+		ListRowKey emptyKey = new ListRowKey();
+		ListRowKey key = new ListRowKey(new Integer(23));
+		ListRowKey eqkey = new ListRowKey(new Integer(23));
+		ListRowKey supKey = new ListRowKey(new ListRowKey(new Integer(23)), new Integer(34));
+	
+		ListRowKey predLongKey = new ListRowKey(new ListRowKey(new ListRowKey(new Integer(22)), new Integer(0)), new Integer(8));
+		ListRowKey predKey = new ListRowKey(new Integer(22));
+		ListRowKey predSupKey = new ListRowKey(new ListRowKey(new Integer(22)), new Integer(34));
+		ListRowKey succKey = new ListRowKey(new ListRowKey(new Integer(25)), new Integer(34));
+		ListRowKey succSupKey = new ListRowKey(new ListRowKey(new ListRowKey(new Integer(25)), new Integer(34)), new Integer(2));
+	
+		ArrayList list = new ArrayList();
+		list.add(eqkey);
+		list.add(succSupKey);
+		list.add(succKey);
+		list.add(predSupKey);
+		list.add(predKey);
+		list.add(supKey);
+		list.add(key);
+		list.add(emptyKey);
+		list.add(predLongKey);
+		
+		Collections.sort(list, comparator);
+		
+		assertEquals(emptyKey, list.get(0));
+		assertEquals(predKey, list.get(1));
+		assertEquals(predLongKey, list.get(2));
+		assertEquals(predSupKey, list.get(3));
+		assertEquals(eqkey, list.get(4));
+		assertEquals(key, list.get(5));
+		assertEquals(supKey, list.get(6));
+		assertEquals(succKey, list.get(7));
+		assertEquals(succSupKey, list.get(8));
+	
+	}
+}




More information about the richfaces-svn-commits mailing list