openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Oh (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (OPENJPA-2479) LifecycleListener invocation order inconsistent when listeners are added to the EntityManagerFactory
Date Thu, 06 Mar 2014 05:18:42 GMT

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

Jeff Oh updated OPENJPA-2479:
-----------------------------

    Affects Version/s: 1.2.3
                       2.0.1
                       2.1.1
                       2.2.2
        Fix Version/s:     (was: 2.3.1)

> LifecycleListener invocation order inconsistent when listeners are added to the EntityManagerFactory
> ----------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2479
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2479
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.2.3, 2.0.1, 2.1.1, 2.2.2, 2.3.0
>            Reporter: Jeff Oh
>              Labels: easyfix, patch
>         Attachments: OPENJPA-2479-trunk.patch
>
>
> The EntityManagerFactory contains the method addLifecycleListener().  While the EntityManagerFactory
never invokes these listeners itself, it does add them to any EntityManagers created by the
factory.
> Unfortunately, the EntityManagerFactory stores the listeners added to the factory in
a java.util.HashMap.  As a result, the order that the listeners were added is lost.  If there
is a dependency in the listener order then it is impossible to guarantee the order in which
listeners are invoked.  As an example, if listener one modifies an object in the beforePersist()
handler, and listener two writes audit records describing changes in a separate beforePersist()
handler, then it is important to be to control the order in which the listeners are executed.
> The attached patch and unit test replaces the HashMap inside of AbstractBrokerFactory
with a LinkedHashMap so that listeners are invoked in predictable order.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message