[
https://issues.apache.org/jira/browse/OPENJPA-2479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeff Oh updated OPENJPA-2479:
-----------------------------
Priority: Minor (was: Major)
> 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
> Priority: Minor
> 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)