1 /////////////////////////////////////////////////////////////////////////////////////////////// 2 // checkstyle: Checks Java source code and other text files for adherence to a set of rules. 3 // Copyright (C) 2001-2024 the original author or authors. 4 // 5 // This library is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU Lesser General Public 7 // License as published by the Free Software Foundation; either 8 // version 2.1 of the License, or (at your option) any later version. 9 // 10 // This library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public 16 // License along with this library; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 /////////////////////////////////////////////////////////////////////////////////////////////// 19 20 package com.puppycrawl.tools.checkstyle.api; 21 22 import java.util.Set; 23 24 import com.puppycrawl.tools.checkstyle.Checker; 25 26 /** 27 * The following interface should be implemented by each module (inheritor of 28 * {@link AbstractCheck}, implementor of {@link FileSetCheck}, or {@link Filter}) which uses 29 * external resources of any kind for its configuration. Such modules must declare external 30 * resource locations as a set of {@link String} which will be returned from 31 * {@link #getExternalResourceLocations}. This allows Checkstyle to invalidate (clear) cache 32 * when the content of at least one external configuration resource of the module is changed. 33 * 34 */ 35 @FunctionalInterface 36 public interface ExternalResourceHolder { 37 38 /** 39 * Returns a set of external configuration resource locations which are used by the module. 40 * ATTENTION! 41 * If 'getExternalResourceLocations()' return null, there will be 42 * {@link NullPointerException} in {@link Checker}. 43 * Such behaviour will signal that your module (check or filter) is designed incorrectly. 44 * It makes sense to return an empty set from 'getExternalResourceLocations()' 45 * only for composite modules like {@link com.puppycrawl.tools.checkstyle.TreeWalker}. 46 * 47 * @return a set of external configuration resource locations which are used by the module. 48 */ 49 Set<String> getExternalResourceLocations(); 50 51 }