001/*
002 *  Copyright 2019 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.cms.indexing.solr;
017
018import static java.lang.annotation.ElementType.TYPE_USE;
019import static java.lang.annotation.RetentionPolicy.RUNTIME;
020
021import java.lang.annotation.Inherited;
022import java.lang.annotation.Retention;
023import java.lang.annotation.Target;
024
025import org.ametys.cms.content.indexing.solr.SolrIndexer;
026import org.ametys.core.right.AccessController;
027import org.ametys.core.right.RightContextConvertor;
028import org.ametys.core.right.RightManager;
029
030/**
031 * This annotation (on Class or Interface) is a marker for context objects on which any change of
032 * profile assignment ensures that there is no indexed object (neither the given object nor any other object in the whole application)
033 * that is affected in its own {@link RightManager#getReadAccessAllowedUsers read access} computing.
034 * 
035 * <br><b>Be careful.</b> Being an object not indexed in Solr does <b>not</b> mean that
036 * it is uninfluential on any other indexed object (it can have influence through
037 * {@link RightContextConvertor} or {@link AccessController}).
038 * 
039 * <br>This is a way to avoid an expensive and useless {@link SolrIndexer#reloadAclCache Solr AclCache reload}
040 * in some cases.
041 */
042@Retention(RUNTIME)
043@Target(TYPE_USE)
044@Inherited
045public @interface SolrAclCacheUninfluentialObject
046{
047    // Empty
048}
049