in jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/navigation/CodiNavigationHandler.java [118:176]
public NavigationCase getNavigationCase(FacesContext context, String action, String outcome)
{
if (this.wrapped instanceof ConfigurableNavigationHandler)
{
if(action == null && outcome != null && outcome.contains(".") && outcome.startsWith("class ") &&
!otherOutcomes.contains(outcome))
{
String originalOutcome = outcome;
NavigationCase navigationCase = this.viewConfigBasedNavigationCaseCache.get(originalOutcome);
if (navigationCase != null)
{
return navigationCase;
}
outcome = outcome.substring(6);
ViewConfigDescriptor entry = null;
if(DefaultErrorView.class.getName().equals(originalOutcome))
{
entry = ViewConfigCache.getDefaultErrorViewConfigDescriptor();
}
if(entry == null)
{
Object loadedClass = tryToLoadClassForName(outcome);
if(loadedClass == null)
{
this.otherOutcomes.add(originalOutcome);
}
else if(ViewConfig.class.isAssignableFrom((Class)loadedClass))
{
//noinspection unchecked
entry = ViewConfigCache.getViewConfigDescriptor((Class<? extends ViewConfig>) loadedClass);
}
}
if(entry != null)
{
navigationCase = new NavigationCase("*",
null,
null,
null,
entry.getViewId(),
null,
Page.NavigationMode.REDIRECT.equals(entry.getNavigationMode()),
false);
this.viewConfigBasedNavigationCaseCache.put(originalOutcome, navigationCase);
return navigationCase;
}
}
return ((ConfigurableNavigationHandler) this.wrapped).getNavigationCase(context, action, outcome);
}
//TODO add support for implicit navigation in combination with view-config based typesafe navigation
return null;
}