You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (JIRA)" <ji...@apache.org> on 2016/12/25 13:05:58 UTC

[jira] [Comment Edited] (CAY-1551) orderings with "+." in the path fail when performing in memory sort

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

Andrus Adamchik edited comment on CAY-1551 at 12/25/16 1:05 PM:
----------------------------------------------------------------

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() {
        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}


was (Author: andrus):
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)