@Override public void beforePhase(PhaseEvent event) { FacesContext context = event.getFacesContext(); HttpServletRequest httpRequest = (HttpServletRequest) context.getExternalContext().getRequest(); try { URLPolicyService service = getURLPolicyService(); if (service.isCandidateForDecoding(httpRequest)) { // Make sure we're in a transaction, and that Seam knows it. // Sometimes, when there is a page action, SeamPhaseListener // commits the transaction in RENDER_RESPONSE before this // phase listener executes, but does not start a new one. // (SeamPhaseListener.handleTransactionsAfterPageActions) if (!Transaction.instance().isActiveOrMarkedRollback()) { Transaction.instance().begin(); } // hot reload hook, maybe to move up so that it's handled on // all requests, not only the ones using the URLservice // framework (?) resetHotReloadContext(context); // restore state service.navigate(context); // apply requests parameters after - they may need the state // to be restored first. service.applyRequestParameters(context); } } catch (RuntimeException | SystemException | NotSupportedException e) { handleException(context, e); } }
protected String getCurrentMainTabFromRequest() { URLPolicyService service = Framework.getService(URLPolicyService.class); ServletRequest request = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); if (request instanceof HttpServletRequest) { DocumentView docView = service.getDocumentViewFromRequest((HttpServletRequest) request); if (docView == null) { return null; } String tabIds = docView.getParameter(WebActions.TAB_IDS_PARAMETER); String mainTabId = docView.getParameter(WebActions.MAIN_TAB_ID_PARAMETER); if (mainTabId != null && !mainTabId.isEmpty()) { tabIds = mainTabId; } if (tabIds != null && tabIds.contains(WebActions.MAIN_TABS_CATEGORY)) { String[] encodedActions = tabIds.split(","); for (String encodedAction : encodedActions) { if (encodedAction.startsWith(WebActions.MAIN_TABS_CATEGORY)) { String[] actionInfo = encodedAction.split(":"); if (actionInfo != null && actionInfo.length > 1) { return actionInfo[1]; } } } } } return null; }
public String getPatternFor(String mainTabId) { URLPolicyService service = Framework.getService(URLPolicyService.class); // FIXME: find some way to reference the pattern in the action, // assume the pattern will be the same than the default one for // now, or use the default one. if (!WebActions.DOCUMENTS_MAIN_TAB_ID.equals(mainTabId) && service.hasPattern(mainTabId)) { return mainTabId; } return service.getDefaultPatternName(); }