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] [Created] (OPENJPA-2479) LifecycleListener invocation order inconsistent when listeners are added to the EntityManagerFactory
Date Thu, 06 Mar 2014 05:12:42 GMT
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)

Mime
View raw message