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