Dang, that's it. Thanks. Works fine now.

Somehow I can't stick using the get… syntax into my head. I still don't like it.

> Am 18.07.2017 um 13:05 schrieb Andrus Adamchik <[email protected]>:
> 
> From the stack, some code somewhere passes 'getCustomerNameForSorting' 
> instead of 'customerNameForSorting' to Cayenne. Can it be a typo in the 
> property name?
> 
> Andrus
> 
>> On Jul 18, 2017, at 1:26 PM, Musall, Maik <[email protected]> wrote:
>> 
>> Yep.
>> 
>>> Am 17.07.2017 um 17:50 schrieb Lon Varscsak <[email protected]>:
>>> 
>>> Is your key “customerNameForSorting”?
>>> 
>>> On Mon, Jul 17, 2017 at 7:40 AM, Musall, Maik <[email protected]> wrote:
>>> 
>>>> Hi John,
>>>> 
>>>>> Am 17.07.2017 um 16:08 schrieb John Huss <[email protected]>:
>>>>> 
>>>>> Expressions will work with non-modeled properties as long as the methods
>>>>> look like getters - have the "get" prefix and no arguments.
>>>> 
>>>> Unfortunately not:
>>>> 
>>>> Caused by: java.lang.IllegalArgumentException: Property
>>>> 'getCustomerNameForSorting' is not readable
>>>>      at org.apache.cayenne.reflect.BeanAccessor.<init>(
>>>> BeanAccessor.java:92)
>>>>      at org.apache.cayenne.reflect.PropertyUtils.createSegmentAccessor(
>>>> PropertyUtils.java:115)
>>>>      at org.apache.cayenne.reflect.PropertyUtils.
>>>> getOrCreateSegmentAccessor(PropertyUtils.java:102)
>>>>      at org.apache.cayenne.reflect.PropertyUtils$PathAccessor.
>>>> getValue(PropertyUtils.java:232)
>>>>      at org.apache.cayenne.reflect.PropertyUtils.getProperty(
>>>> PropertyUtils.java:124)
>>>>      at org.apache.cayenne.CayenneDataObject.readSimpleProperty(
>>>> CayenneDataObject.java:161)
>>>>      at org.apache.cayenne.CayenneDataObject.readNestedProperty(
>>>> CayenneDataObject.java:127)
>>>>      at org.apache.cayenne.CayenneDataObject.readNestedProperty(
>>>> CayenneDataObject.java:147)
>>>>      at org.apache.cayenne.exp.parser.ASTObjPath.evaluateNode(
>>>> ASTObjPath.java:60)
>>>>      at org.apache.cayenne.exp.parser.SimpleNode.evaluate(
>>>> SimpleNode.java:417)
>>>> 
>>>> Signature is: public String getCustomerNameForSorting()
>>>> 
>>>> 
>>>>> But I would use this:
>>>>> 
>>>>> Collections.sort(list, (a,b) -> a.getSomeProp().compareTo(b.
>>>> getSomeProp()));
>>>> 
>>>> Thought of that, but it would require me to re-implement the path segment
>>>> tokenization and everything.
>>>> 
>>>> Maik
>>>> 
>>>> 
>>>>> On Mon, Jul 17, 2017 at 8:08 AM Musall, Maik <[email protected]>
>>>> wrote:
>>>>> 
>>>>>> Hi all,
>>>>>> 
>>>>>> I have a UI with a list of objects and user-configurable filters and
>>>>>> sorting criteria. Most of the sorting criteria are plain db path
>>>>>> expressions, so I can just feed them into Ordering.orderedList(objects).
>>>>>> 
>>>>>> A couple of them however are path expressions with the last segment
>>>> being
>>>>>> not a Property, but a method name that is supposed to be invoked, which
>>>>>> would then return a String, after which the list is to be ordered. This
>>>>>> worked fine in the past using EOF and EOSortOrdering, but Cayenne's
>>>>>> ordering throws an ExpressionException on evaluate().
>>>>>> 
>>>>>> What is the usual way in Cayenne to deal with this?
>>>>>> 
>>>>>> Thanks
>>>>>> Maik
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
> 

Reply via email to