Search in sources :

Example 1 with BeanPreDestroyEventListener

use of io.micronaut.context.event.BeanPreDestroyEventListener in project micronaut-core by micronaut-projects.

the class DefaultBeanContext method disposeBean.

private <T> void disposeBean(BeanRegistration<T> registration, Argument<T> beanType, T finalBean, BeanDefinition<T> definition) {
    final List<BeanPreDestroyEventListener> preDestroyEventListeners = resolveListeners(BeanPreDestroyEventListener.class, beanType);
    T beanToDestroy = finalBean;
    if (CollectionUtils.isNotEmpty(preDestroyEventListeners)) {
        for (BeanPreDestroyEventListener<T> listener : preDestroyEventListeners) {
            try {
                final BeanPreDestroyEvent<T> event = new BeanPreDestroyEvent<>(this, definition, beanToDestroy);
                beanToDestroy = Objects.requireNonNull(listener.onPreDestroy(event), "PreDestroy event listener illegally returned null: " + listener.getClass());
            } catch (Exception e) {
                throw new BeanDestructionException(definition, e);
            }
        }
    }
    try {
        registration.close();
    } catch (Exception e) {
        throw new BeanDestructionException(definition, e);
    }
    final List<BeanDestroyedEventListener> postDestroyListeners = resolveListeners(BeanDestroyedEventListener.class, beanType);
    if (CollectionUtils.isNotEmpty(postDestroyListeners)) {
        for (BeanDestroyedEventListener<T> listener : postDestroyListeners) {
            try {
                final BeanDestroyedEvent<T> event = new BeanDestroyedEvent<>(this, definition, beanToDestroy);
                listener.onDestroyed(event);
            } catch (Exception e) {
                throw new BeanDestructionException(definition, e);
            }
        }
    }
}
Also used : BeanDestructionException(io.micronaut.context.exceptions.BeanDestructionException) DependencyInjectionException(io.micronaut.context.exceptions.DependencyInjectionException) NonUniqueBeanException(io.micronaut.context.exceptions.NonUniqueBeanException) BeanCreationException(io.micronaut.context.exceptions.BeanCreationException) DisabledBeanException(io.micronaut.context.exceptions.DisabledBeanException) BeanDestructionException(io.micronaut.context.exceptions.BeanDestructionException) NoSuchBeanException(io.micronaut.context.exceptions.NoSuchBeanException) BeanContextException(io.micronaut.context.exceptions.BeanContextException) BeanInstantiationException(io.micronaut.context.exceptions.BeanInstantiationException) BeanDestroyedEvent(io.micronaut.context.event.BeanDestroyedEvent) BeanPreDestroyEventListener(io.micronaut.context.event.BeanPreDestroyEventListener) BeanPreDestroyEvent(io.micronaut.context.event.BeanPreDestroyEvent) BeanDestroyedEventListener(io.micronaut.context.event.BeanDestroyedEventListener)

Aggregations

BeanDestroyedEvent (io.micronaut.context.event.BeanDestroyedEvent)1 BeanDestroyedEventListener (io.micronaut.context.event.BeanDestroyedEventListener)1 BeanPreDestroyEvent (io.micronaut.context.event.BeanPreDestroyEvent)1 BeanPreDestroyEventListener (io.micronaut.context.event.BeanPreDestroyEventListener)1 BeanContextException (io.micronaut.context.exceptions.BeanContextException)1 BeanCreationException (io.micronaut.context.exceptions.BeanCreationException)1 BeanDestructionException (io.micronaut.context.exceptions.BeanDestructionException)1 BeanInstantiationException (io.micronaut.context.exceptions.BeanInstantiationException)1 DependencyInjectionException (io.micronaut.context.exceptions.DependencyInjectionException)1 DisabledBeanException (io.micronaut.context.exceptions.DisabledBeanException)1 NoSuchBeanException (io.micronaut.context.exceptions.NoSuchBeanException)1 NonUniqueBeanException (io.micronaut.context.exceptions.NonUniqueBeanException)1