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