Jeff Oh created OPENJPA-2479:
--------------------------------
Summary: 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: 2.3.0
Reporter: Jeff Oh
Fix For: 2.3.1
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)