Doing this using purely CDI APIs can be a bit tricky. One option that will most likely work is to combine BeanManager.resolveObserverMethods() method with a custom implementation of ProcessInjectionTarget interface. That way you can resolve the matching observer methods and then call their notify() method to deliver the event. Exception handling needs to be implemented to match the spec.

We should update the spec to define a more direct route and for the JPA spec to mention this requirement.

Jozef

On 06/22/2015 02:25 PM, Emily Jiang wrote:
Jozef,
Just re-iterate my concern:
The implementation is in eclipse link. I guess they don't want to depend on a specific CDI implementation. Therefore, what you suggested may not be accepted by the eclipse link project.

Thanks
Emily


On Sun, Jun 21, 2015 at 10:59 PM, Emily Jiang <[email protected] <mailto:[email protected]>> wrote:

    thanks Jozef!

    On Sun, Jun 21, 2015 at 10:58 PM, Emily Jiang
    <[email protected] <mailto:[email protected]>> wrote:

        Jozef,
        The implementation is in eclipse link. I guess they don't want
        to depend on a specific CDI implementation.
        Thanks
        Emily

        On Sun, Jun 21, 2015 at 8:42 PM, Jozef Hartinger
        <[email protected] <mailto:[email protected]>> wrote:

            Hi Emily,

            the implementation should call the following method
            
http://docs.jboss.org/weld/javadoc/2.2/weld-spi/org/jboss/weld/manager/api/WeldManager.html#fireProcessInjectionTarget-javax.enterprise.inject.spi.AnnotatedType-javax.enterprise.inject.spi.InjectionTarget-
            on Weld BeanManager and use the returned value as the
            InjectionTarget.

            HTH,

            Jozef


            On 06/19/2015 12:28 PM, Emily Jiang wrote:

            In CDI 1.2 spec
            11.5.7. ProcessInjectionPoint event
            The container must fire an event for every injection
            point of every Java EE component class
            supporting injection that may be instantiated by the
            container at runtime, including every managed bean
            declared using @ManagedBean, EJB session or
            message-driven bean, bean, interceptor or decorator.

            The JavaEE component classes are mentioned in JavaEE
            platform EE.5-1, which includes servlets, servlet
            filters, entity listeners etc.

            My concern is about entity listeners in JPA. Eclipse link
            has done all the injection for entity listeners. It does
            not fire the event, @See
            createEntityListenerAndInjectDependancies(...)

            JPA spec section 3.5.1 does not mention this event
            requirement. How can the eclipse cdi implementation
            satisfy the CDI spec?

            [1]
            
http://git.eclipse.org/c/eclipselink/eclipselink.runtime.git/tree/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/sessions/cdi/EntityListenerInjectionManagerImpl.java?h=2.6_WAS]
-- Thanks
            Emily
            =================
            Emily Jiang
            [email protected] <mailto:[email protected]>


            _______________________________________________
            weld-dev mailing list
            [email protected]  <mailto:[email protected]>
            https://lists.jboss.org/mailman/listinfo/weld-dev




-- Thanks
        Emily
        =================
        Emily Jiang
        [email protected] <mailto:[email protected]>




-- Thanks
    Emily
    =================
    Emily Jiang
    [email protected] <mailto:[email protected]>




--
Thanks
Emily
=================
Emily Jiang
[email protected] <mailto:[email protected]>

_______________________________________________
weld-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-dev

Reply via email to