You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2018/05/08 12:49:21 UTC

[myfaces] 22/29: MYFACES-3518 and MYFACES-1528 Regression: empty with CachedRowSet (fix test)

This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch 1.1.x
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 490e18faf53c42e54132ec567c231f6236862fdf
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Fri Mar 30 01:58:42 2012 +0000

    MYFACES-3518 and MYFACES-1528 Regression: <h:DataTable> empty with CachedRowSet (fix test)
---
 .../renderkit/html/HtmlTableRendererTest.java      | 134 +++++++++++++++++++++
 1 file changed, 134 insertions(+)

diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java
index 73a067a..d688855 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlTableRendererTest.java
@@ -19,8 +19,13 @@
 package org.apache.myfaces.renderkit.html;
 
 import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
 
+import javax.faces.component.UIColumn;
 import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.model.ListDataModel;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
@@ -60,6 +65,11 @@ public class HtmlTableRendererTest extends AbstractJsfTestCase
                 dataTable.getRendererType(),
                 new HtmlTableRenderer());
 
+        HtmlOutputText text = new HtmlOutputText();
+        facesContext.getRenderKit().addRenderer(
+                text.getFamily(),
+                text.getRendererType(),
+                new HtmlTextRenderer());
     }
 
     public void tearDown()
@@ -90,4 +100,128 @@ public class HtmlTableRendererTest extends AbstractJsfTestCase
             fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
         }
     }
+    
+    /**
+     * Check table renderer behavior when DataModel returns -1 from getRowCount(). It should
+     * render the same as if that value is provided. Note t:dataTable newspaper mode requires
+     * row count to calculate newspaperRows and newspaperColumns. 
+     */
+    public void testNoRowCountRender() throws Exception
+    {
+        List list = new ArrayList();
+        list.add(new Person("John"  , "Smith"));
+        list.add(new Person("Pepito", "Perez"));
+        list.add(new Person("Kurt",   "Kobain"));
+        
+        dataTable.setId("data");
+        dataTable.setRowClasses("class1, class2");
+        dataTable.setVar("person");
+        
+        UIColumn column1 = new UIColumn();
+        HtmlOutputText text = new HtmlOutputText();
+        text.setValueBinding("value", 
+                facesContext.getApplication().createValueBinding("#{person.firstName}"));
+        column1.getChildren().add(text);
+        
+        dataTable.getChildren().add(column1);
+        UIColumn column2 = new UIColumn();
+        HtmlOutputText text2 = new HtmlOutputText();
+        text2.setValueBinding("value", 
+                facesContext.getApplication().createValueBinding("#{person.lastName}"));
+        column2.getChildren().add(text2);
+        dataTable.getChildren().add(column2);
+
+        UnknownRowCountDemoDataModel urdm = new UnknownRowCountDemoDataModel();
+        urdm.setWrappedData(list);
+        dataTable.setValue(urdm);
+
+        String output1 = null;
+        try 
+        {
+            dataTable.encodeBegin(facesContext);
+            dataTable.encodeChildren(facesContext);
+            dataTable.encodeEnd(facesContext);
+            output1 = ((StringWriter) writer.getWriter()).getBuffer().toString();
+        }
+        catch (Exception e)
+        {
+            fail(e.getMessage());
+        }
+        
+        ListDataModel ldm = new ListDataModel();
+        ldm.setWrappedData(list);
+        dataTable.setValue(ldm);
+        ((StringWriter) writer.getWriter()).getBuffer().setLength(0);
+        
+        String output2 = null;
+        try 
+        {
+            dataTable.encodeBegin(facesContext);
+            dataTable.encodeChildren(facesContext);
+            dataTable.encodeEnd(facesContext);
+            output2 = ((StringWriter) writer.getWriter()).getBuffer().toString();
+        }
+        catch (Exception e)
+        {
+            fail(e.getMessage());
+        }
+
+        assertTrue(output2.contains("John"));
+        assertTrue(output2.contains("Smith"));
+        assertTrue(output2.contains("class1"));
+        assertTrue(output2.contains("class2"));
+        
+        assertTrue(output1.contains("John"));
+        assertTrue(output1.contains("Smith"));
+        assertTrue(output1.contains("class1"));
+        assertTrue(output1.contains("class2"));
+        
+        assertEquals(output2, output1);
+    }
+
+    public class Person
+    {
+        private String firstName;
+        
+        private String lastName;
+        
+        public Person(String firstName, String lastName)
+        {
+            this.firstName = firstName;
+            this.lastName = lastName;
+        }
+        
+        public String getFirstName()
+        {
+            return firstName;
+        }
+        
+        public void setFirstName(String firstName)
+        {
+            this.firstName = firstName;
+        }
+        
+        public String getLastName()
+        {
+            return lastName;
+        }
+        
+        public void setLastName(String lastName)
+        {
+            this.lastName = lastName;
+        }
+    }
+    
+    public class UnknownRowCountDemoDataModel extends ListDataModel
+    {
+        public UnknownRowCountDemoDataModel()
+        {
+            super();
+        }
+        
+        public int getRowCount()
+        {
+            return -1;
+        }
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.