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) > >> > ? .... > >> > ? .... > >> > > >> > > >> > > > > >