in jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/DefaultPageBeanDescriptor.java [121:207]
private Map<PhaseId, RequestLifecycleCallbackEntry> findCallbackDefinitions(Class beanClass)
{
Class currentClass = beanClass;
PhasesLifecycleCallbackEntryHelper beforeCallbackEntryHelper = new PhasesLifecycleCallbackEntryHelper();
PhasesLifecycleCallbackEntryHelper afterCallbackEntryHelper = new PhasesLifecycleCallbackEntryHelper();
List<String> processedMethodNames = new ArrayList<String>();
boolean callbackAdded;
while(!(currentClass.getName().equals(Object.class.getName())))
{
for(Method currentMethod : currentClass.getDeclaredMethods())
{
//don't process overridden methods
if (processedMethodNames.contains(currentMethod.getName()))
{
continue;
}
callbackAdded = false;
if(currentMethod.isAnnotationPresent(BeforePhase.class))
{
callbackAdded = true;
beforeCallbackEntryHelper.add(
currentMethod.getAnnotation(BeforePhase.class).value(), currentMethod);
}
else if(currentMethod.isAnnotationPresent(AfterPhase.class))
{
callbackAdded = true;
afterCallbackEntryHelper.add(
currentMethod.getAnnotation(AfterPhase.class).value(), currentMethod);
}
else if(currentMethod.isAnnotationPresent(InitView.class))
{
callbackAdded = true;
this.initViewMethods.add(currentMethod);
}
else if(currentMethod.isAnnotationPresent(PrePageAction.class))
{
callbackAdded = true;
this.prePageActionMethods.add(currentMethod);
}
else if(currentMethod.isAnnotationPresent(PreRenderView.class))
{
callbackAdded = true;
this.preRenderViewMethods.add(currentMethod);
}
else if(currentMethod.isAnnotationPresent(PostRenderView.class))
{
callbackAdded = true;
this.postRenderViewMethods.add(currentMethod);
}
if (callbackAdded)
{
processedMethodNames.add(currentMethod.getName());
String errorMessage = "";
if (currentMethod.getParameterTypes().length != 0)
{
errorMessage += "Parameters aren't supported. ";
}
if (Modifier.isPrivate(currentMethod.getModifiers()))
{
errorMessage +=
"Private methods aren't supported to avoid side-effects with normal-scoped CDI beans. " +
"Please use e.g. protected or public instead. ";
}
if (!"".equals(errorMessage))
{
throw new IllegalStateException("Callback-Implementation not supported: " +
currentMethod.getDeclaringClass().getName() + "#" + currentMethod.getName() + ". " +
errorMessage);
}
}
}
currentClass = currentClass.getSuperclass();
}
return createPhasesLifecycleCallbackMap(beforeCallbackEntryHelper, afterCallbackEntryHelper);
}