/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.client; import org.jdom.Document; import com.enonic.cms.api.client.model.GetCategoriesParams; import com.enonic.cms.api.client.model.GetMenuDataParams; import com.enonic.cms.api.client.model.GetMenuItemParams; import com.enonic.cms.core.portal.datasource.DataSourceContext; import com.enonic.cms.core.portal.datasource.service.DataSourceService; import com.enonic.cms.core.preview.PreviewService; import com.enonic.cms.core.security.SecurityService; /** * This class wraps the presentation service and calls with the new client api. */ public final class PresentationInvoker { private final DataSourceService dataSourceService; private final SecurityService securityService; private final PreviewService previewService; public PresentationInvoker( DataSourceService dataSourceService, SecurityService securityService, PreviewService previewService ) { this.dataSourceService = dataSourceService; this.securityService = securityService; this.previewService = previewService; } private DataSourceContext createDataSourceContext() { DataSourceContext dataSourceContext = new DataSourceContext(); dataSourceContext.setPreviewContext( previewService.getPreviewContext() ); dataSourceContext.setUser( securityService.getImpersonatedPortalUser() ); return dataSourceContext; } public Document getCategories( GetCategoriesParams params ) throws Exception { assertMinValue( "categoryKey", params.categoryKey, 0 ); return this.dataSourceService.getCategories( createDataSourceContext(), params.categoryKey, params.levels, params.includeTopCategory, true, false, params.includeContentCount ).getAsJDOMDocument(); } public Document getMenuData( GetMenuDataParams params ) throws Exception { assertMinValue( "menuKey", params.menuKey, 0 ); return this.dataSourceService.getMenuData( createDataSourceContext(), params.menuKey ).getAsJDOMDocument(); } public Document getMenuItem( GetMenuItemParams params ) throws Exception { assertMinValue( "menuItemKey", params.menuItemKey, 0 ); return this.dataSourceService.getMenuItem( createDataSourceContext(), params.menuItemKey, params.withParents ).getAsJDOMDocument(); } private void assertMinValue( String name, int value, int minValue ) { if ( value < minValue ) { throw new IllegalArgumentException( "Parameter [" + name + "] must be >= " + minValue ); } } }