Re: Assemblies assemblies everywhere and which one to ship?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Feb 15 2007 - 09:20:41 EST

  • Next message: Michael Gentry: "Re: [JIRA] Created: (CAY-752) Importing EOModel gives Cast Exception"

    On Jan 8, 2007, at 3:48 PM, Dain Sundstrom wrote:
    > On Jan 8, 2007, at 11:59 AM, Andrus Adamchik wrote:
    >> On Jan 8, 2007, at 9:39 PM, Dain Sundstrom wrote:
    >>
    >>> Well, we depend on being able to listen to events on the EM which
    >>> there is no spec interface for. I'm sure Cayanne has and
    >>> interface that can provide us with the events, and when they send
    >>> us the info we can add a hook for their Impl.
    >>
    >> What kind of events?
    >
    > We need afterLoad, beforeStore, afterAttach, beforeDelete, and
    > afterDetach so we can make the proper EJB Entity bean callbacks.
    > The code we use for OpenJPA is here:
    >
    > http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/
    > container/openejb-core/src/main/java/org/apache/openejb/core/cmp/
    > jpa/JpaCmpEngine.java?revision=492404&view=markup&pathrev=492419
    >
    > look for OpenJPALifecycleListener inner class.
    >
    > -dain

    Dain,

    I just checked in the code to register Cayenne callback listeners.

    1. The API description...

    https://svn.apache.org/repos/asf/cayenne/main/trunk/framework/cayenne-
    jdk1.4-unpublished/src/main/java/org/apache/cayenne/
    LifecycleListener.java

    class CayenneListener implements org.apache.cayenne.LifecycleListener {
        ...
    }

    EntityManager em = ...;
    CayenneEntityManager cem = (CayenneEntityManager) em;
    LifecycleCallbackRegistry registry = cem.getChannel
    ().getEntityResolver().getCallbackRegistry();
    registry.addDefaultListener(new CayenneListener());

    Note that callback registry is shared by all EntityManagers obtained
    via a given EntityManagerFactory, so listener registration is needed
    only once per EMF life-span.

    2. The callback types... The callbacks that Cayenne currently
    provides are all following the JPA spec. Mapping them to the
    callbacks that you mentioned we get this:

    afterLoad -> postLoad
    beforeStore -> prePersist,preUpdate
    beforeDelete -> preRemove
    afterDetach ->
    afterAttach ->

    There is no attach/detach callback. Does it make it a show stopper
    for testing with OpenEJB? Or rather, does it make sense to code a
    workaround on the OpenEJB end, making it more portable in only
    relying on standard JPA callbacks (not sure whether it is possible)?
    Or otherwise we can do it in Cayenne.

    Andrus



    This archive was generated by hypermail 2.0.0 : Thu Feb 15 2007 - 09:21:19 EST