use of org.apache.deltaspike.core.api.config.view.ViewConfig in project deltaspike by apache.
the class ViewConfigAwareNavigationHandler method handleNavigation.
// Security checks will be performed by the view-handler provided by ds
@Override
public void handleNavigation(FacesContext facesContext, String fromAction, String outcome) {
lazyInit();
if (outcome != null && outcome.contains(".")) {
String originalOutcome = outcome;
if (!this.otherOutcomes.contains(outcome)) {
// it isn't possible to support interfaces due to cdi restrictions
if (outcome.startsWith("class ")) {
outcome = outcome.substring(6);
}
ViewConfigDescriptor entry = this.viewConfigs.get(outcome);
if (entry == null) {
if (DefaultErrorView.class.getName().equals(originalOutcome)) {
entry = this.viewConfigResolver.getDefaultErrorViewConfigDescriptor();
}
}
boolean allowCaching = true;
if (entry == null) {
Class<?> loadedClass = ClassUtils.tryToLoadClassForName(outcome);
if (loadedClass == null) {
this.otherOutcomes.add(originalOutcome);
} else if (ViewConfig.class.isAssignableFrom(loadedClass)) {
// a sub-classed page-config for annotating it with different view params
if (loadedClass.getAnnotation(View.class) == null && loadedClass.getSuperclass().getAnnotation(View.class) != null) {
allowCaching = false;
addConfiguredViewParameters(loadedClass);
loadedClass = loadedClass.getSuperclass();
}
entry = this.viewConfigResolver.getViewConfigDescriptor((Class<? extends ViewConfig>) loadedClass);
}
}
if (entry != null) {
// in case of false it has been added already
if (allowCaching) {
this.viewConfigs.put(outcome, entry);
addConfiguredViewParameters(entry.getConfigClass());
}
String oldViewId = null;
if (facesContext.getViewRoot() != null) {
oldViewId = facesContext.getViewRoot().getViewId();
}
PreViewConfigNavigateEvent navigateEvent = firePreViewConfigNavigateEvent(oldViewId, entry);
entry = tryToUpdateEntry(entry, navigateEvent);
if (entry != null) {
outcome = convertEntryToOutcome(facesContext.getExternalContext(), entry);
}
}
}
}
this.navigationHandler.handleNavigation(facesContext, fromAction, outcome);
}
use of org.apache.deltaspike.core.api.config.view.ViewConfig in project deltaspike by apache.
the class DefaultConfigNodeConverter method convert.
@Override
public ConfigDescriptor convert(ViewConfigNode node) {
List<Annotation> mergedMetaData = mergeMetaData(node.getMetaData(), node.getInheritedMetaData());
// e.g. replace default placeholders needed for the merge with real default values
mergedMetaData = preProcessMetaData(mergedMetaData, node);
Class sourceClass = node.getSource();
if (ViewConfigUtils.isFolderConfig(sourceClass)) {
Folder folderAnnotation = findMetaDataByType(mergedMetaData, Folder.class);
return new DefaultFolderConfigDescriptor(folderAnnotation.name(), node.getSource(), mergedMetaData, node.getCallbackDescriptors());
} else if (ViewConfig.class.isAssignableFrom(sourceClass)) {
View viewAnnotation = findMetaDataByType(mergedMetaData, View.class);
String viewId = viewAnnotation.basePath() + viewAnnotation.name() + "." + viewAnnotation.extension();
return new DefaultViewPathConfigDescriptor(viewId, (Class<? extends ViewConfig>) node.getSource(), filterInheritedFolderMetaData(mergedMetaData), node.getCallbackDescriptors());
} else {
throw new IllegalStateException(node.getSource() + " isn't a valid view-config");
}
}
Aggregations