/** * Returns a description of this PageAction. * @since 4.2.1 * @return the page's description as JSON. */ @Path(":page") @GET @Produces(MimeTypes.APPLICATION_JSON_UTF8) public Map<String, Object> getPageDescription() { Map<String, Object> description = new HashMap<String, Object>(); description.put("javaClass", pageInstance.getActionClass().getSuperclass().getName()); description.put("groovyClass", pageInstance.getActionClass().getName()); description.put("page", pageInstance.getPage()); return description; } }
public Class<? extends ActionBean> getActionBeanClass() { return getLastPageInstance().getActionClass(); }
@Deprecated public static PageAction ensureActionBean(PageInstance page) throws IllegalAccessException, InstantiationException { PageAction action = page.getActionBean(); assert action != null; if(action == null) { action = page.getActionClass().newInstance(); page.setActionBean(action); } return action; }
public String[] getSupportedPermissions() { Class<?> actualActionClass = getPageInstance().getActionClass(); SupportsPermissions supportsPermissions = actualActionClass.getAnnotation(SupportsPermissions.class); while(supportsPermissions == null && actualActionClass.getSuperclass() != Object.class) { actualActionClass = actualActionClass.getSuperclass(); supportsPermissions = actualActionClass.getAnnotation(SupportsPermissions.class); } if(supportsPermissions != null && supportsPermissions.value().length > 0) { return supportsPermissions.value(); } else { return null; } }
public static boolean hasPermissions(Configuration conf, PageInstance instance, Subject subject, Method handler) { logger.debug("Checking action permissions"); Class<?> theClass = instance.getActionClass(); RequiresPermissions requiresPermissions = getRequiresPermissionsAnnotation(handler, theClass); if(requiresPermissions != null) { AccessLevel accessLevel = requiresPermissions.level(); String[] permissions = requiresPermissions.permissions(); return hasPermissions(conf, instance, subject, accessLevel, permissions); } return true; }
protected void setupChildPages() { File directory = getPageInstance().getDirectory(); childPagesForm = setupChildPagesForm(childPages, directory, getPage().getLayout(), ""); if(PageActionLogic.supportsDetail(getPageInstance().getActionClass())) { File detailDirectory = new File(directory, PageInstance.DETAIL); if(!detailDirectory.isDirectory() && !ElementsFileUtils.safeMkdir(detailDirectory)) { logger.error("Could not create detail directory{}", detailDirectory.getAbsolutePath()); SessionMessages.addErrorMessage("Could not create detail directory"); return; } detailChildPagesForm = setupChildPagesForm(detailChildPages, detailDirectory, getPage().getDetailLayout(), "detail"); } }
@Override protected ActionBean makeNewActionBean( Class<? extends ActionBean> type, ActionBeanContext context) throws Exception { Dispatch dispatch = DispatcherUtil.getDispatch(context.getRequest()); if(dispatch != null) { PageInstance pageInstance = dispatch.getLastPageInstance(); if(type.equals(pageInstance.getActionClass())) { if(pageInstance.getActionBean() != null) { return pageInstance.getActionBean(); } else { assert false; if(DispatcherLogic.isValidActionClass(type)) { ActionBean actionBean = super.makeNewActionBean(type, context); pageInstance.setActionBean((PageAction) actionBean); return actionBean; } else { throw new Exception("Invalid action bean type for dispatch: " + type); //TODO } } } } return super.makeNewActionBean(type, context); }