/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.processor; import com.enonic.esl.servlet.http.HttpServletRequestWrapper; import com.enonic.cms.core.language.LanguageEntity; import com.enonic.cms.core.language.LanguageResolver; import com.enonic.cms.core.portal.PageTemplateNotFoundException; import com.enonic.cms.core.structure.SitePath; import com.enonic.cms.core.structure.menuitem.MenuItemEntity; import com.enonic.cms.core.structure.page.PageEntity; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; public class PageRequestProcessor extends AbstractPageRequestProcessor { public PageRequestProcessor( final PageRequestProcessorContext context ) { super( context ); } public PageRequestProcessorResult process() { final PageRequestProcessorResult result = new PageRequestProcessorResult(); final SitePath sitePath = context.getSitePath(); final MenuItemEntity menuItem = context.getMenuItem(); portalAccessService.checkAccessToPage( menuItem, sitePath, context.getRequester() ); // page template PageTemplateEntity pageTemplate = resolvePageTemplate(); result.setPageTemplate( pageTemplate ); // language final LanguageEntity language = resolveLanguage(); result.setLanguage( language ); // site path sitePath.addParam( "id", menuItem.getKey().toString() ); result.setSitePath( sitePath ); // http request HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper( context.getHttpRequest() ); // noinspection deprecation requestWrapper.setParamsMasked( false ); requestWrapper.setParameter( "id", menuItem.getKey().toString() ); result.setHttpRequest( requestWrapper ); processCommonRequest( result ); return result; } private PageTemplateEntity resolvePageTemplate() { final PageEntity page = context.getMenuItem().getPage(); if ( page == null || page.getTemplate() == null ) { throw new PageTemplateNotFoundException( context.getSitePath() ); } return page.getTemplate(); } private LanguageEntity resolveLanguage() { if ( context.getOverridingLanguage() != null ) { return context.getOverridingLanguage(); } else { return LanguageResolver.resolve( context.getSite(), context.getMenuItem() ); } } }