Hook up a debugger and see what is going on when the NPE is thrown?

On Tue, Jun 28, 2016 at 3:43 PM, Davide Vecchi <d...@amc.dk> wrote:

> Thanks, those are interesting options to change my design, which I will
> probably have to do.
>
> But at this stage I need to focus on why the outcome of defining columns
> in that way is different in 5.3.8, because it might be that more areas of
> this web application are affected by differences in 5.3.8 and I haven't
> found out these areas yet.
>
> Or perhaps, would it be correct to say that that way of defining columns
> is not correct in general, regardless of Tapestry version ? Maybe this is
> the case and this incorrect way was being somehow "forgiven" by 5.3.7 ?
>
>
> -----Original Message-----
> From: Chris Poulsen [mailto:mailingl...@nesluop.dk]
> Sent: Tuesday, June 28, 2016 15:32
> To: Tapestry users <users@tapestry.apache.org>
> Subject: Re: Null pointer on sort with 5.3.8 that didn't occur with 5.3.7
>
> Also you can control the display blocks using the data-type on the bean
> model, if you need something special.
>
> --
> Chris
>
> On Tue, Jun 28, 2016 at 3:30 PM, Chris Poulsen <mailingl...@nesluop.dk>
> wrote:
>
> > You can use a bean model for variable number of columns, that one also
> > gives you full control over conduits etc.
> >
> > Inject BeanModelSource and create a display model for your data
> > source, use .include (or similar) to whitelist the desired attributes
> > in the generated model and model.add to get your synthetic columns
> defined.
> >
> > --
> > Chris
> >
> > On Tue, Jun 28, 2016 at 3:13 PM, Davide Vecchi <d...@amc.dk> wrote:
> >
> >> Thanks for the answers, it's becoming more clear.
> >>
> >> The possibility suggested by Kalle makes sense, however I made some
> >> test about it and I don't think it's the cause of my problem. This
> >> grid column was being sorted without exceptions with Java 7 +
> >> Tapestry 5.3.7, plus I checked and none of the values in the column
> >> is null. I have also tested calling Arrays.sort with some null
> >> elements and it throws a null pointer both with Java 7 and Java 8.
> >> My problem has most probably to do with the fact that that column is
> >> not part of the grid data source, as Cezary suggested, and it was so
> >> also when we were using Java 7.
> >>
> >> About Cezary's hypothesis, I think my problem is definitely in that
> >> area, but there is probably also something going on related to the
> >> different Tapestry version because the column was defined in the same
> >> way when using
> >> 5.3.7 and in that case there was no exception.
> >>
> >> The column is defined like this:
> >>
> >> - In the page template, one param of the grid tag is
> >>
> >>         t:add="prop:gridAdd"
> >>
> >> - In the page Java code, there is the corresponding
> >>
> >>         public String getGridAdd() {
> >>                 return " myColumn1, myColumn2, myColumn3, myColumn4";
> >>         }
> >>
> >>   where let's say that "myColumn3" is the column whose sorting fails.
> >>
> >> - In the page template, within the t:grid tag there is the definition
> >> of the customized content of that column:
> >>
> >>         <p: myColumn3Cell>${ myColumn3}</p: myColumn3Cell>
> >>
> >> - In the page Java code, there is the method returning the value for
> >> that
> >> column:
> >>
> >>         public String getMyColumn3()
> >>         {
> >>                 return aStringThatIsNeverNull;
> >>         }
> >>
> >> So I'm trying to find out if this way of defining my column is not
> >> right in 5.3.8 although it was not failing in 5.3.7, in order to
> rectify it.
> >>
> >>
> >> -----Original Message-----
> >> From: Cezary Biernacki [mailto:cezary...@gmail.com]
> >> Sent: Monday, June 27, 2016 18:10
> >> To: Tapestry users <users@tapestry.apache.org>
> >> Subject: Re: Null pointer on sort with 5.3.8 that didn't occur with
> >> 5.3.7
> >>
> >> Your stack trace seems to indicate that conduit (a mechanism
> >> connecting Tapestry with a column) is not available. It can happen if
> >> the column is manually added to the model. Was the column sortable with
> Tapestry  5.3.7?
> >> How is this column defined?
> >>
> >> Best regards,
> >> Cezary
> >>
> >>
> >> On Mon, Jun 27, 2016 at 4:43 PM, Davide Vecchi <d...@amc.dk> wrote:
> >>
> >> > Hi everybody
> >> >
> >> > For now I cannot post code to reproduce this problem because it
> >> > only occurs with one columns of a specific grid from a big
> >> > application and so far I wasn't able to extract the code to
> >> > reproduce the error into a runnable example. But after posting this
> >> > I will keep trying and if I manage I will post that.
> >> >
> >> > We migrated this web application from Java 1.7 + Tapestry 5.3.7 to
> >> > Java
> >> > 1.8 with Tapestry 5.3.8 .
> >> >
> >> > Clicking on the column header of this column - which contains
> >> > String values - causes the exception below.
> >> >
> >> > While I'm investigating this error I was wondering if someone is
> >> > aware of differences in the grid sorting of Tapestry 5.3.8 that
> >> > might cause it to throw a null-pointer where Tapestry 5.3.7
> >> > wouldn't (and maybe should; it's likely that there is a mistake of
> >> > mine that was somehow being "forgiven" by 5.3.7).
> >> >
> >> > Stacktrace:
> >> >
> >> > java.lang.NullPointerException
> >> > ?
> >> > org.apache.tapestry5.internal.grid.CollectionGridDataSource$2.compa
> >> > re(
> >> > CollectionGridDataSource.java:78)
> >> > ?
> >> > org.apache.tapestry5.internal.grid.CollectionGridDataSource$3.compa
> >> > re(
> >> > CollectionGridDataSource.java:91) ?
> >> > java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
> >> > ?  java.util.TimSort.sort(TimSort.java:234)
> >> > ?  java.util.Arrays.sort(Arrays.java:1512)
> >> > ?  java.util.ArrayList.sort(ArrayList.java:1454)
> >> > ?  java.util.Collections.sort(Collections.java:175)
> >> > ?
> >> > org.apache.tapestry5.internal.grid.CollectionGridDataSource.prepare
> >> > (Co
> >> > llectionGridDataSource.java:97)
> >> > ?
> >> > my.package.gui.tapestry.components.AMCGridEmbedded$CachingDataSourc
> >> > e.p
> >> > repare(AMCGridEmbedded.java:853)
> >> > ?
> >> > my.package.gui.tapestry.components.AMCGridEmbedded.setupDataSource(
> >> > AMC
> >> > GridEmbedded.java:1174)
> >> > ?
> >> > my.package.gui.tapestry.components.AMCGridEmbedded.setupRender(AMCG
> >> > rid
> >> > Embedded.java:655)
> >> > ?
> >> > my.package.gui.tapestry.components.AMCGridEmbedded.advised$setupRen
> >> > der
> >> > _1a14d3f8fd924(AMCGridEmbedded.java)
> >> > ?
> >> > my.package.gui.tapestry.components.AMCGridEmbedded$Invocation_setup
> >> > Ren der_1a14d3f8fd923.proceedToAdvisedMethod(Unknown
> >> > Source)
> >> > ?
> >> >
> >> org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.procee
> >> d(AbstractMethodInvocation.java:84)
> >> > ?  ....
> >> > ?  ....
> >> >
> >> >
> >>
> >
> >
>

Reply via email to