[ 
https://issues.apache.org/jira/browse/CAY-1551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15776452#comment-15776452
 ] 

Andrus Adamchik commented on CAY-1551:
--------------------------------------

Still broken as of 12/2016 (both ordering and in-memory evaluation of 
expressions). E.g. you may add this to OrderingTest to reproduce:

{noformat}
    @Test
    public void testOrderList_Related() throws Exception {
        List<B1> unordered = asList(
                new B1().setName("three").setB2(new B2().setName("Z")),
                new B1().setName("one").setB2(new B2().setName("A")),
                new B1().setName("two").setB2(new B2().setName("M"))
        );

        List<B1> ordered = new Ordering("b2+.name", 
SortOrder.ASCENDING).orderedList(unordered);
        assertEquals("one", ordered.get(0).getName());
        assertEquals("two", ordered.get(1).getName());
        assertEquals("three", ordered.get(2).getName());
    }
{noformat}

> orderings with "+." in the path fail when performing in memory sort
> -------------------------------------------------------------------
>
>                 Key: CAY-1551
>                 URL: https://issues.apache.org/jira/browse/CAY-1551
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 3.1M1
>            Reporter: Marcin Skladaniec
>
> Example stack:
> Exception in thread "AWT-EventQueue-0" 
> org.apache.cayenne.exp.ExpressionException: [v.3.0.1 Sep 06 2010 15:09:38] 
> Error evaluating expression 'invoiceLine+.invoice.invoiceNumber'
>       at 
> org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:339)
>       at org.apache.cayenne.query.Ordering.compare(Ordering.java:336)
>       at java.util.Arrays.mergeSort(Arrays.java:1270)
>       at java.util.Arrays.sort(Arrays.java:1210)
>       at java.util.Collections.sort(Collections.java:159)
>       at org.apache.cayenne.query.Ordering.orderList(Ordering.java:324)
> ....
> Caused by: java.beans.IntrospectionException: No property 'invoiceLine+' 
> found in class ish.oncourse.cayenne.Enrolment
>       at 
> org.apache.cayenne.reflect.PropertyUtils.getSimpleProperty(PropertyUtils.java:203)
>       at 
> org.apache.cayenne.reflect.PropertyUtils.getProperty(PropertyUtils.java:116)
>       at 
> org.apache.cayenne.exp.parser.ASTObjPath.evaluateNode(ASTObjPath.java:54)
>       at 
> org.apache.cayenne.exp.parser.SimpleNode.evaluate(SimpleNode.java:335)
>       ... 52 more



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to