001/*
002 *  Copyright 2011 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.cache;
017
018import org.ametys.cms.repository.Content;
019import org.ametys.web.repository.page.Page;
020import org.ametys.web.repository.page.SitemapElement;
021import org.ametys.web.repository.site.Site;
022
023
024/**
025 * Component responsible for policy of cache invalidation
026 */
027public interface CacheInvalidationPolicy
028{
029    /** Avalon Role */
030    public static final String ROLE = CacheInvalidationPolicy.class.getName();
031    
032    /**
033     * Invalidate cache when a page is modified.
034     * The page modification can have triggered the modification of other pages (ex: page addition, content zone item deletion).
035     * @param page the modified page
036     * @throws Exception if an error occurs
037     */
038    public void invalidateCacheOnPageModification(Page page) throws Exception;
039    
040    /**
041     * Invalidate cache on a minor page change.
042     * The change cannot have triggered the modification of other pages (ex: service modification).
043     * @param page the modified page
044     * @throws Exception if an error occurs
045     */
046    public void invalidateCacheOnPageMinorChange(Page page) throws Exception;
047    
048    /**
049     * Invalidate cache on a page deletion
050     * @param site the site
051     * @param parent the parent page or sitemap
052     * @param pageId the page id
053     * @param pathInSitemap path of the page in sitemap
054     * @throws Exception if an error occurs
055     */
056    public void invalidateCacheOnPageDeletion(Site site, SitemapElement parent, String pageId, String pathInSitemap) throws Exception;
057    
058    /**
059     * Invalidate cache on a page move
060     * @param page the page moved
061     * @param oldParent the old parent
062     * @param oldPathInSitemap the old path in sitemap
063     * @throws Exception if an error occurs
064     */
065    public void invalidateCacheOnPageMove(Page page, SitemapElement oldParent, String oldPathInSitemap) throws Exception;
066    
067    /**
068     * Invalidate cache on a content commented
069     * @param page the page 
070     * @param content the commented content
071     * @throws Exception if an error occurs
072     */
073    public void invalidateCacheOnContentCommented (Page page, Content content) throws Exception;
074    
075    /**
076     * Invalidate cache when a content reaction changed
077     * @param page the page 
078     * @param content the commented content
079     * @throws Exception if an error occurs
080     */
081    public void invalidateCacheOnContentReactionChanged (Page page, Content content) throws Exception;
082    
083    /**
084     * Invalidate cache on a content deleted
085     * @param site the site
086     * @param contentId the content id
087     * @throws Exception if an error occurs
088     */
089    public void invalidateCacheOnContentDeletion (Site site, String contentId) throws Exception;
090    
091    /**
092     * Invalidate cache on a content modfication
093     * @param site the site
094     * @param content the content
095     * @throws Exception if an error occurs
096     */
097    public void invalidateCacheOnContentModification (Site site, Content content) throws Exception;
098}