//it isn't possible to support interfaces due to cdi restrictions
if(outcome.startsWith("class "))
{
outcome = outcome.substring(6);
}
ViewConfigEntry entry = this.viewConfigs.get(outcome);
if(entry == null)
{
if(DefaultErrorView.class.getName().equals(originalOutcome))
{
entry = ViewConfigCache.getDefaultErrorView();
}
}
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.getViewDefinition((Class<? extends ViewConfig>)loadedClass);
}
}
if(entry != null)
{
//security
try
{
invokeVoters(null, this.beanManager, entry.getAccessDecisionVoters(), entry.getErrorView());
}
catch (AccessDeniedException accessDeniedException)
{
tryToHandleSecurityViolation(accessDeniedException);
return;