1 ///////////////////////////////////////////////////////////////////////////////////////////////
2 // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3 // Copyright (C) 2001-2025 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 }