コード例 #1
0
 public void testService() throws ApsSystemException {
   RequestContext reqCtx = this.getRequestContext();
   ((MockHttpServletRequest) reqCtx.getRequest()).setServletPath("/it/homepage.wp");
   int status = this._requestValidator.service(reqCtx, ControllerManager.CONTINUE);
   assertEquals(ControllerManager.CONTINUE, status);
   Lang lang = (Lang) reqCtx.getExtraParam(SystemConstants.EXTRAPAR_CURRENT_LANG);
   IPage page = (IPage) reqCtx.getExtraParam(SystemConstants.EXTRAPAR_CURRENT_PAGE);
   assertNotNull(page);
   assertNotNull(lang);
   assertEquals("it", lang.getCode());
   assertEquals("homepage", page.getCode());
 }
コード例 #2
0
 private List<NavigatorTarget> parseSubSpec(
     NavigatorExpression navExpression,
     IPage page,
     List<NavigatorTarget> targets,
     UserDetails user) {
   int specId = navExpression.getSpecId();
   IPage basePage = null;
   if (specId == NavigatorExpression.SPEC_CURRENT_PAGE_ID) {
     basePage = page;
   } else if (specId == NavigatorExpression.SPEC_PARENT_PAGE_ID) {
     int limit = 0;
     do {
       basePage = page.getParent();
       limit++;
     } while ((!basePage.isShowable() || !this.isUserAllowed(user, basePage)) && limit < 20);
   } else if (specId == NavigatorExpression.SPEC_SUPER_ID) {
     if (navExpression.getSpecSuperLevel() < 0) {
       throw new RuntimeException("Level 'SUPER' not specified : Page " + page.getCode());
     }
     basePage = page;
     for (int i = 1; i <= navExpression.getSpecSuperLevel(); i++) {
       basePage = basePage.getParent();
     }
     int limit = 0;
     while ((!basePage.isShowable() || !this.isUserAllowed(user, basePage)) && limit < 20) {
       basePage = basePage.getParent();
       limit++;
     }
   } else if (specId == NavigatorExpression.SPEC_ABS_ID) {
     basePage = page;
     if (navExpression.getSpecAbsLevel() < 0) {
       throw new RuntimeException("Level 'ABS' not specified : Page " + page.getCode());
     }
     int absLevel = navExpression.getSpecAbsLevel();
     List<IPage> candidates = new ArrayList<IPage>();
     int limit = 0;
     if (basePage.isShowable() && isUserAllowed(user, basePage)) {
       candidates.add(0, basePage);
     }
     while (basePage != basePage.getParent() && limit < 20) {
       basePage = basePage.getParent();
       if (basePage.isShowable() && isUserAllowed(user, basePage)) {
         candidates.add(0, basePage);
       }
       limit++;
     }
     if (absLevel >= candidates.size()) {
       absLevel = candidates.size() - 1;
     }
     basePage = (IPage) candidates.get(absLevel);
   } else if (specId == NavigatorExpression.SPEC_PAGE_ID) {
     if (null == navExpression.getSpecCode()) {
       throw new RuntimeException("Page Code not specified : Page " + page.getCode());
     }
     String code = navExpression.getSpecCode();
     IPage basePageTemp = this.getPageManager().getPage(code);
     if (null == basePageTemp) {
       ApsSystemUtils.getLogger()
           .severe(
               "Invalid Page Specification (null): Code " + code + " - Pagina " + page.getCode());
       return targets;
     }
     if (basePageTemp.isShowable() && this.isUserAllowed(user, basePageTemp)) {
       basePage = basePageTemp;
     }
   }
   if (null == basePage) {
     return targets;
   }
   targets = this.processBasePage(navExpression, basePage, targets, user);
   return targets;
 }