use of org.apache.deltaspike.core.api.config.view.metadata.ViewConfigDescriptor in project deltaspike by apache.
the class ViewConfigTest method testCallbackExecution.
@Test
public void testCallbackExecution() {
this.viewConfigExtension.addPageDefinition(SimplePageConfig.class);
final SimpleTestAccessDecisionVoter testInstance = new SimpleTestAccessDecisionVoter();
ViewConfigNode node = this.viewConfigExtension.findNode(SimplePageConfig.class);
//add it to avoid in-container test for this simple constellation - usually not needed!
node.getCallbackDescriptors().put(TestSecured.class, new ArrayList<CallbackDescriptor>() {
{
add(new TestSecured.Descriptor(new Class[] { SimpleTestAccessDecisionVoter.class }, DefaultCallback.class) {
@Override
protected Object getTargetObject(Class targetType) {
return testInstance;
}
});
}
});
ViewConfigResolver viewConfigResolver = this.viewConfigResolverProducer.createViewConfigResolver();
ViewConfigDescriptor viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(SimplePageConfig.class);
Assert.assertNotNull(viewConfigDescriptor);
Assert.assertNotNull(viewConfigDescriptor.getCallbackDescriptor(TestSecured.class));
List<Set<String>> /*return type of one callback*/
callbackResult = viewConfigDescriptor.getExecutableCallbackDescriptor(TestSecured.class, TestSecured.Descriptor.class).execute("param1", "param2");
Assert.assertNotNull(callbackResult);
Assert.assertEquals(1, callbackResult.size());
Assert.assertEquals(2, callbackResult.iterator().next().size());
Iterator<String> resultIterator = callbackResult.iterator().next().iterator();
//the order in the result isn't guaranteed
Set<String> expectedValues = new HashSet<String>();
expectedValues.add("param1");
expectedValues.add("param2");
while (resultIterator.hasNext()) {
String currentValue = resultIterator.next();
if (!expectedValues.remove(currentValue)) {
Assert.fail("value '" + currentValue + "' not found in the result");
}
}
Assert.assertTrue(expectedValues.isEmpty());
}
use of org.apache.deltaspike.core.api.config.view.metadata.ViewConfigDescriptor in project deltaspike by apache.
the class ViewConfigTest method testSimpleViewConfigWithCallbacks.
@Test
public void testSimpleViewConfigWithCallbacks() {
this.viewConfigExtension.addPageDefinition(SimplePageConfig.class);
ViewConfigResolver viewConfigResolver = this.viewConfigResolverProducer.createViewConfigResolver();
ViewConfigDescriptor viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(SimplePageConfig.class);
Assert.assertNotNull(viewConfigDescriptor);
Assert.assertNull(viewConfigDescriptor.getCallbackDescriptor(ViewControllerRef.class, InitView.class));
Assert.assertNotNull(viewConfigDescriptor.getCallbackDescriptor(ViewControllerRef.class, PreRenderView.class));
Assert.assertNotNull(viewConfigDescriptor.getCallbackDescriptor(TestSecured.class));
}
use of org.apache.deltaspike.core.api.config.view.metadata.ViewConfigDescriptor in project deltaspike by apache.
the class SecurityUtils method tryToHandleSecurityViolation.
private static void tryToHandleSecurityViolation(RuntimeException runtimeException, boolean allowNavigation) {
ErrorViewAwareAccessDeniedException exception = extractException(runtimeException);
if (exception == null) {
throw runtimeException;
}
Class<? extends ViewConfig> errorView = null;
Class<? extends ViewConfig> inlineErrorView = exception.getErrorView();
if (inlineErrorView != null && !DefaultErrorView.class.getName().equals(inlineErrorView.getName())) {
errorView = inlineErrorView;
}
if (errorView == null) {
ViewConfigResolver viewConfigResolver = BeanProvider.getContextualReference(ViewConfigResolver.class);
ViewConfigDescriptor errorPageDescriptor = viewConfigResolver.getDefaultErrorViewConfigDescriptor();
if (errorPageDescriptor != null) {
errorView = errorPageDescriptor.getConfigClass();
}
}
if (errorView == null && allowNavigation) {
throw exception;
}
processApplicationSecurityException(exception, errorView, allowNavigation);
}
use of org.apache.deltaspike.core.api.config.view.metadata.ViewConfigDescriptor in project deltaspike by apache.
the class ViewConfigTest method testSimpleViewConfigWithViewControllerCallback.
@Test
public void testSimpleViewConfigWithViewControllerCallback() {
this.viewConfigExtension.addPageDefinition(SimplePageConfig.class);
ViewConfigResolver viewConfigResolver = this.viewConfigResolverProducer.createViewConfigResolver();
ViewConfigDescriptor viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(SimplePageConfig.class);
Assert.assertNotNull(viewConfigDescriptor);
Assert.assertNotNull(viewConfigDescriptor.getCallbackDescriptor(ViewControllerRef.class, PostRenderView.class));
Assert.assertEquals(PageBean002.class, viewConfigDescriptor.getCallbackDescriptor(ViewControllerRef.class, PostRenderView.class).getCallbackMethods().keySet().iterator().next());
Assert.assertEquals("postRenderViewCallbackMethod", ((List<Method>) viewConfigDescriptor.getCallbackDescriptor(ViewControllerRef.class, PostRenderView.class).getCallbackMethods().values().iterator().next()).iterator().next().getName());
}
use of org.apache.deltaspike.core.api.config.view.metadata.ViewConfigDescriptor in project deltaspike by apache.
the class ViewConfigPathValidator method validateViewConfigPaths.
//allows to test and re-use it in a custom listener
// (if a custom listener is needed for supporting custom extensions or
// this listener is deactivated e.g. to change the order)
protected void validateViewConfigPaths(ServletContextEvent sce, ViewConfigResolver viewConfigResolver, List<String> supportedExtensions) {
for (ConfigDescriptor configDescriptor : viewConfigResolver.getConfigDescriptors()) {
try {
if (configDescriptor instanceof ViewConfigDescriptor) {
//currently other extensions aren't supported
String viewId = ((ViewConfigDescriptor) configDescriptor).getViewId();
String extension = viewId.substring(viewId.lastIndexOf('.') + 1);
if (!supportedExtensions.contains(extension)) {
continue;
}
}
if (!isValidPath(sce, configDescriptor)) {
if (configDescriptor instanceof DefaultFolderConfigDescriptor && !configDescriptor.getConfigClass().isAnnotationPresent(Folder.class)) {
LOGGER.fine(configDescriptor.getConfigClass().getName() + " looks like a marker interface" + " only used for providing meta-data, because the path " + configDescriptor.getPath() + " doesn't exist and the config-class isn't annotated with " + Folder.class.getName());
continue;
}
throw new IllegalStateException("path '" + configDescriptor.getPath() + "' is missing, but mapped by: " + configDescriptor.getConfigClass().getName());
}
} catch (Exception e) {
printException(e);
throw ExceptionUtils.throwAsRuntimeException(e);
}
}
}
Aggregations