You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Savva Kolbachev (JIRA)" <ji...@apache.org> on 2015/10/22 11:35:27 UTC

[jira] [Closed] (CAY-2028) Wrap DataChannelFilter calls in the main transaction

     [ https://issues.apache.org/jira/browse/CAY-2028?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Savva Kolbachev closed CAY-2028.
--------------------------------
       Resolution: Done
    Fix Version/s: 4.0.M3

> Wrap DataChannelFilter calls in the main transaction
> ----------------------------------------------------
>
>                 Key: CAY-2028
>                 URL: https://issues.apache.org/jira/browse/CAY-2028
>             Project: Cayenne
>          Issue Type: Task
>            Reporter: Andrus Adamchik
>            Assignee: Savva Kolbachev
>             Fix For: 4.0.M3
>
>
> Currently select and update operations stack is structured roughly as follows:
> {noformat}
> --> filter1 enter
> ---> filter2 enter
> ----> ...
> -----> tx start
> ------> run operation
> -----> tx end
> ----> ...
> ---> filter2 exit
> --> filter1 exit
> {noformat}
> I.e. all filters are outside of the transaction (though I guess a filter can preemptively start a tx on its own). Very often we'd like to invert that as follows:
> {noformat}
> -> tx start
> --> filter1 enter
> ---> filter2 enter
> ----> ...
> -----> run operation
> ----> ...
> ---> filter2 exit
> --> filter1 exit
> -> tx exit
> {noformat}
> or maybe mix pre- and post-tx filters:
> {noformat}
> -> filter1 enter
> --> tx start
> ---> filter2 enter
> ----> ...
> -----> run operation
> ----> ...
> ---> filter2 exit
> --> tx exit
> -> filter1 exit
> {noformat}
> So I guess a way to control this behavior is by moving TX code into its own filter, and registering it by default. We will also need a change in DI API to allow callers to control the order of DI list items insertion, so that custom filters can be inserted either before or after a given filter. E.g.:
> {noformat}
> ListBuilder.add(label, object).after(label1);
> ListBuilder.add(label, object).before(label2);
> {noformat}



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