[richfaces-issues] [JBoss JIRA] Updated: (RF-10189) Comparator doesn't consider null values

Nick Belaevski (JIRA) jira-events at lists.jboss.org
Wed Jan 19 14:51:50 EST 2011


     [ https://issues.jboss.org/browse/RF-10189?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nick Belaevski updated RF-10189:
--------------------------------

    Fix Version/s: 4.0.0.CR1
                       (was: 4.0.0.CR2)


> Comparator doesn't consider null values
> ---------------------------------------
>
>                 Key: RF-10189
>                 URL: https://issues.jboss.org/browse/RF-10189
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-tables
>    Affects Versions: 4.0.0.Milestone5
>         Environment:     * RichFaces 4.0.0-SNAPSHOT r.20958
>     * Metamer 4.0.0-SNAPSHOT r.20964
>     * Mojarra 2.0.3-b05
>     * JBoss AS 6.0.0.Final
>     * OpenJDK Runtime Environment 1.6.0_20-b20 @ Linux
>     * Firefox 3.6.13 @ Linux x86_64
>            Reporter: Lukas Fryc
>            Assignee: Konstantin Mishin
>             Fix For: 4.0.0.CR1
>
>
> See also [Steps to Reproduce] to reproduce it in Metamer.
> I have model which contains null values in one column and when I want to sort by such column, I want to let RichFaces consider it and sort it on the end of the.
> The java.lang.Comparable itself [1] states that the NullPointerException should be thrown when comparing object to null value.
> However for user convenience, it will be better to handle null values in consistent way to avoid necessity for defining custom comparator.
> [1] http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html
> java.lang.NullPointerException
> 	at java.util.Date.getMillisOf(Date.java:956)
> 	at java.util.Date.compareTo(Date.java:976)
> 	at java.util.Date.compareTo(Date.java:129)
> 	at org.richfaces.model.ArrangeableModel.compareSortByValues(ArrangeableModel.java:328)
> 	at org.richfaces.model.ArrangeableModel.compare(ArrangeableModel.java:309)
> 	at org.richfaces.model.ArrangeableModel.access$200(ArrangeableModel.java:52)
> 	at org.richfaces.model.ArrangeableModel$2.compare(ArrangeableModel.java:262)
> 	at java.util.Arrays.mergeSort(Arrays.java:1283)
> 	at java.util.Arrays.mergeSort(Arrays.java:1294)
> 	at java.util.Arrays.mergeSort(Arrays.java:1294)
> 	at java.util.Arrays.mergeSort(Arrays.java:1295)
> 	at java.util.Arrays.mergeSort(Arrays.java:1294)
> 	at java.util.Arrays.mergeSort(Arrays.java:1294)
> 	at java.util.Arrays.sort(Arrays.java:1223)
> 	at java.util.Collections.sort(Collections.java:176)
> 	at org.richfaces.model.ArrangeableModel.sort(ArrangeableModel.java:260)
> 	at org.richfaces.model.ArrangeableModel.arrange(ArrangeableModel.java:214)
> 	at org.richfaces.component.UIDataTableBase.createExtendedDataModel(UIDataTableBase.java:170)
> 	at org.richfaces.component.UIDataAdaptor.getExtendedDataModel(UIDataAdaptor.java:560)
> 	at org.richfaces.component.UIDataAdaptor.getRowCount(UIDataAdaptor.java:607)
> 	at org.richfaces.renderkit.AbstractTableRenderer.encodeTableRows(AbstractTableRenderer.java:147)
> 	at org.richfaces.renderkit.AbstractTableRenderer.doEncodeChildren(AbstractTableRenderer.java:209)
> 	at org.richfaces.renderkit.RendererBase.encodeChildren(RendererBase.java:157)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
> 	at org.richfaces.renderkit.DataTableRenderer.encodeRow(DataTableRenderer.java:183)
> 	at org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:62)
> 	at org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:109)
> 	at org.richfaces.component.UIDataAdaptor.walk(UIDataAdaptor.java:918)
> 	at org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:72)
> 	at org.richfaces.renderkit.AbstractTableRenderer.encodeRows(AbstractTableRenderer.java:102)
> 	at org.richfaces.renderkit.AbstractRowsRenderer.processRows(AbstractRowsRenderer.java:80)
> 	at org.richfaces.renderkit.AbstractTableRenderer.encodeTableRows(AbstractTableRenderer.java:159)
> 	at org.richfaces.renderkit.AbstractTableRenderer.doEncodeChildren(AbstractTableRenderer.java:209)
> 	at org.richfaces.renderkit.RendererBase.encodeChildren(RendererBase.java:157)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
> 	at org.richfaces.context.ExtendedPartialViewContextImpl$RenderVisitCallback.visit(ExtendedPartialViewContextImpl.java:517)
> 	at org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:480)
> 	at org.richfaces.component.UIDataAdaptor.visitTree(UIDataAdaptor.java:1343)
> 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
> 	at javax.faces.component.UIForm.visitTree(UIForm.java:331)
> 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
> 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
> 	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
> 	at org.richfaces.context.ExtendedPartialViewContextImpl.processPartialRenderPhase(ExtendedPartialViewContextImpl.java:284)
> 	at org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:206)
> 	at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:968)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643)
> 	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:378)
> 	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
> 	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:269)
> 	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
> 	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.richfaces.tests.metamer.TestIdentityFilter.doFilter(TestIdentityFilter.java:93)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:636)
> Jan 12, 2011 2:28:15 PM org.richfaces.context.ExtendedPartialViewContextImpl$RenderVisitCallback logException
> SEVERE: null

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list