in jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/PhasesLifecycleCallbackPhaseListener.java [176:233]
private void processPhaseCallbacks(PhaseEvent phaseEvent, boolean beforePhase)
{
UIViewRoot viewRoot = phaseEvent.getFacesContext().getViewRoot();
if(viewRoot == null)
{
return;
}
String viewId = viewRoot.getViewId();
ViewConfigDescriptor viewDefinitionEntry = ViewConfigCache.getViewConfigDescriptor(viewId);
if(viewDefinitionEntry == null)
{
return;
}
List<PageBeanDescriptor> beanEntries = viewDefinitionEntry.getPageBeanDescriptors();
Object bean;
RequestLifecycleCallbackEntry phasesLifecycleCallbackEntry;
List<Method> lifecycleCallbacks;
for(PageBeanDescriptor beanEntry : beanEntries)
{
if(!(beanEntry instanceof LifecycleAwarePageBeanDescriptor))
{
continue;
}
phasesLifecycleCallbackEntry = ((LifecycleAwarePageBeanDescriptor)beanEntry)
.getPhasesLifecycleCallback(phaseEvent.getPhaseId());
if(phasesLifecycleCallbackEntry == null)
{
continue;
}
if(beforePhase)
{
lifecycleCallbacks = phasesLifecycleCallbackEntry.getBeforePhaseCallbacks();
}
else
{
lifecycleCallbacks = phasesLifecycleCallbackEntry.getAfterPhaseCallbacks();
}
if(lifecycleCallbacks.isEmpty())
{
continue;
}
//TODO provide a detailed error message in case of a missing bean
bean = getContextualReferenceByName(this.beanManager, beanEntry.getBeanName(), Object.class);
invokePhasesLifecycleCallbacks(bean, lifecycleCallbacks, phaseEvent);
}
}