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

Lukas Fryc (JIRA) jira-events at lists.jboss.org
Wed Jan 12 08:32:49 EST 2011


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

        


More information about the richfaces-issues mailing list