001/* 002 * Copyright 2010 Anyware Services 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.ametys.web.repository.page.jcr; 017 018import javax.jcr.Node; 019import javax.jcr.RepositoryException; 020 021import org.apache.avalon.framework.service.ServiceException; 022import org.apache.avalon.framework.service.ServiceManager; 023import org.apache.cocoon.environment.Request; 024 025import org.ametys.plugins.repository.AmetysObject; 026import org.ametys.plugins.repository.AmetysObjectFactory; 027import org.ametys.plugins.repository.AmetysRepositoryException; 028import org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObjectFactory; 029import org.ametys.plugins.workflow.support.WorkflowProvider; 030import org.ametys.web.parameters.view.ViewParametersManager; 031import org.ametys.web.repository.page.PageDataTypeExtensionPoint; 032 033/** 034 * {@link AmetysObjectFactory} for creating traversable {@link DefaultPage}. 035 */ 036public class DefaultPageFactory extends DefaultTraversableAmetysObjectFactory 037{ 038 private WorkflowProvider _workflowProvider; 039 private PageDataTypeExtensionPoint _pageDataTypeExtensionPoint; 040 private ViewParametersManager _viewParametersManager; 041 042 @Override 043 public void service(ServiceManager serviceManager) throws ServiceException 044 { 045 super.service(serviceManager); 046 _workflowProvider = (WorkflowProvider) serviceManager.lookup(WorkflowProvider.ROLE); 047 _pageDataTypeExtensionPoint = (PageDataTypeExtensionPoint) serviceManager.lookup(PageDataTypeExtensionPoint.ROLE); 048 _viewParametersManager = (ViewParametersManager) serviceManager.lookup(ViewParametersManager.ROLE); 049 } 050 051 /** 052 * Get the workflow provider 053 * @return workflow provider 054 */ 055 public WorkflowProvider getWorkflowProvider() 056 { 057 return _workflowProvider; 058 } 059 060 /** 061 * Get the request 062 * @return the request 063 */ 064 public Request getRequest () 065 { 066 return null; 067 } 068 069 @Override 070 @SuppressWarnings("unchecked") 071 public DefaultPage getAmetysObject(Node node, String parentPath) throws AmetysRepositoryException 072 { 073 return new DefaultPage(node, parentPath, this); 074 } 075 076 /** 077 * Resolves an {@link AmetysObject} from a node. 078 * @param <A> the actual type of {@link AmetysObject}. 079 * @param node the node. 080 * @return the {@link AmetysObject} resolved. 081 * @throws AmetysRepositoryException if an error occurs. 082 * @throws RepositoryException if a JCR error occurs. 083 */ 084 public <A extends AmetysObject> A resolveAmetysObject(Node node) throws AmetysRepositoryException, RepositoryException 085 { 086 return _resolver.<A>resolve(node, false); 087 } 088 089 /** 090 * Retrieves the extension point of page data types 091 * @return the extension point of page data types 092 */ 093 public PageDataTypeExtensionPoint getPageDataTypeExtensionPoint() 094 { 095 return _pageDataTypeExtensionPoint; 096 } 097 098 /** 099 * Get the view parameters manager 100 * @return the view parameters manager 101 */ 102 public ViewParametersManager getViewParametersManager() 103 { 104 return _viewParametersManager; 105 } 106}