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; 023 024import org.ametys.plugins.repository.AmetysObject; 025import org.ametys.plugins.repository.AmetysRepositoryException; 026import org.ametys.plugins.repository.jcr.SimpleAmetysObjectFactory; 027import org.ametys.web.parameters.view.ViewParametersManager; 028import org.ametys.web.repository.page.CopySiteComponent; 029import org.ametys.web.repository.page.PageDataTypeExtensionPoint; 030import org.ametys.web.service.Service; 031import org.ametys.web.service.ServiceExtensionPoint; 032 033/** 034 * Factory for DefaultZoneItem 035 */ 036public class DefaultZoneItemFactory extends SimpleAmetysObjectFactory 037{ 038 private CopySiteComponent _copyCmp; 039 private PageDataTypeExtensionPoint _pageDataTypeExtensionPoint; 040 private ServiceExtensionPoint _serviceExtensionPoint; 041 private ViewParametersManager _viewParametersManager; 042 043 @Override 044 public void service(ServiceManager smanager) throws ServiceException 045 { 046 super.service(smanager); 047 _copyCmp = (CopySiteComponent) smanager.lookup(CopySiteComponent.ROLE); 048 _pageDataTypeExtensionPoint = (PageDataTypeExtensionPoint) smanager.lookup(PageDataTypeExtensionPoint.ROLE); 049 _serviceExtensionPoint = (ServiceExtensionPoint) smanager.lookup(ServiceExtensionPoint.ROLE); 050 _viewParametersManager = (ViewParametersManager) smanager.lookup(ViewParametersManager.ROLE); 051 } 052 053 @Override 054 public DefaultZoneItem getAmetysObject(Node node, String parentPath) throws AmetysRepositoryException 055 { 056 return new DefaultZoneItem(node, parentPath, this); 057 } 058 059 /** 060 * Resolves an {@link AmetysObject} from a node. 061 * @param <A> the actual type of {@link AmetysObject}. 062 * @param node the node. 063 * @return the {@link AmetysObject} resolved. 064 * @throws AmetysRepositoryException if an error occurs. 065 * @throws RepositoryException if a JCR error occurs. 066 */ 067 public <A extends AmetysObject> A resolveAmetysObject(Node node) throws AmetysRepositoryException, RepositoryException 068 { 069 return _resolver.<A>resolve(node, false); 070 } 071 072 CopySiteComponent getCopySiteComponent () 073 { 074 return _copyCmp; 075 } 076 077 PageDataTypeExtensionPoint getPageDataTypeExtensionPoint() 078 { 079 return _pageDataTypeExtensionPoint; 080 } 081 082 /** 083 * Retrieves the service with the given identifier 084 * @param serviceId identifier of the service to retrieve 085 * @return the service 086 */ 087 public Service getService(String serviceId) 088 { 089 return _serviceExtensionPoint.getExtension(serviceId); 090 } 091 092 /** 093 * Get the view parameters manager 094 * @return the view parameters manager 095 */ 096 public ViewParametersManager getViewParametersManager() 097 { 098 return _viewParametersManager; 099 } 100}