void observesPineapplePOM(@Observes ProcessObserverMethod<Pineapple, FruitObserver> event) { event.configureObserverMethod() .addQualifier(Delicious.DeliciousLiteral.INSTANCE) .notifyWith((eventConsumer) -> { pineAppleQualifiers = eventConsumer.getMetadata().getQualifiers(); consumerNotified.set(true); }); }
@Test(groups = { INTEGRATION, PERSISTENCE }) @SpecAssertions({ @SpecAssertion(section = OBSERVER_NOTIFICATION, id = "fa"), @SpecAssertion(section = OBSERVER_NOTIFICATION, id = "fb") }) public void testCustomTransactionalObserver() throws Exception { ActionSequence.reset(); // GiraffeObserver 2x, GiraffeCustomObserver 1x assertEquals(getCurrentManager().resolveObserverMethods(new Giraffe()).size(), 3); // Transactional invocation giraffeService.feed(); // Test ObserverMethod.notify() was called assertNotNull(extension.getAnyGiraffeObserver().getReceivedPayload()); assertEquals(Giraffe.class, extension.getAnyGiraffeObserver().getReceivedPayload().getEvent().getClass()); assertNotNull(extension.getAnyGiraffeObserver().getReceivedPayload().getMetadata()); // Test ObserverMethod.getTransactionPhase() was called assertTrue(extension.getAnyGiraffeObserver().isTransactionPhaseCalled()); // Test custom observer received notification during the after completion phase (after succesfull commit) // BEFORE_COMPLETION must be fired at the beginning of the commit (after checkpoint) // AFTER_SUCCESS and AFTER_COMPLETION must be fired after BEFORE_COMPLETION // AFTER_FAILURE is not fired ActionSequence.getSequence().beginsWith("checkpoint", TransactionPhase.BEFORE_COMPLETION.toString()); ActionSequence.getSequence().assertDataContainsAll(TransactionPhase.AFTER_SUCCESS.toString(), TransactionPhase.AFTER_COMPLETION.toString()); }
EventMetadata metadata = eventContext.getMetadata();