use of org.mule.runtime.core.internal.lifecycle.phases.LifecyclePhase in project mule by mulesoft.
the class RegistryLifecycleCallback method doOnTransition.
private void doOnTransition(String phaseName, T object) throws MuleException {
LifecyclePhase phase = registryLifecycleManager.phases.get(phaseName);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(format("Applying lifecycle phase: %s for registry: %s", phase, object.getClass().getSimpleName()));
}
if (phase instanceof ContainerManagedLifecyclePhase) {
phase.applyLifecycle(object);
return;
}
// overlapping interfaces can cause duplicates
// TODO: each LifecycleManager should keep this set per executing phase
// and clear it when the phase is fully applied
Set<Object> duplicates = new HashSet<>();
final NotificationDispatcher notificationFirer = ((MuleContextWithRegistries) registryLifecycleManager.muleContext).getRegistry().lookupObject(NotificationDispatcher.class);
for (LifecycleObject lifecycleObject : phase.getOrderedLifecycleObjects()) {
lifecycleObject.firePreNotification(notificationFirer);
// TODO Collection -> List API refactoring
Collection<?> targetsObj = lookupObjectsForLifecycle(lifecycleObject);
doApplyLifecycle(phase, duplicates, lifecycleObject, targetsObj);
lifecycleObject.firePostNotification(notificationFirer);
}
interceptor.onPhaseCompleted(phase);
}
use of org.mule.runtime.core.internal.lifecycle.phases.LifecyclePhase in project mule by mulesoft.
the class RegistryLifecycleManager method doApplyLifecycle.
private void doApplyLifecycle(Object object, String phase) throws LifecycleException {
LifecyclePhase lp = phases.get(phase);
lifecycleInterceptor.beforePhaseExecution(lp, object);
try {
lp.applyLifecycle(object);
lifecycleInterceptor.afterPhaseExecution(lp, object, empty());
} catch (Exception e) {
lifecycleInterceptor.afterPhaseExecution(lp, object, of(e));
throw e;
}
}
Aggregations