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


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

        
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to