Class AbstractImportControl
java.lang.Object
com.puppycrawl.tools.checkstyle.checks.imports.AbstractImportControl
- Direct Known Subclasses:
FileImportControl
,PkgImportControl
Represents a tree of import rules for controlling whether packages or
classes are allowed to be used. Each instance must have a single parent or
be the root node.
-
Field Summary
Modifier and TypeFieldDescriptionprivate final AbstractImportControl
The parent.private final Deque<AbstractImportRule>
List ofAbstractImportRule
objects to check.private final MismatchStrategy
Strategy in a case if matching allow/disallow rule was not found. -
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractImportControl
(AbstractImportControl parent, MismatchStrategy strategyOnMismatch) Construct a child node. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Adds anAbstractImportRule
to the node.checkAccess
(String inPkg, String inFileName, String forImport) Returns whether a package or class is allowed to be imported.private AccessResult
localCheckAccess
(String inPkg, String inFileName, String forImport) Checks whether any of the rules for this node control access to a specified package or file.abstract AbstractImportControl
locateFinest
(String forPkg, String forFileName) Search down the tree to locate the finest match for a supplied package.protected abstract boolean
matchesExactly
(String pkg, String fileName) Check for equality of this with pkg.
-
Field Details
-
rules
List ofAbstractImportRule
objects to check. -
parent
The parent. Null indicates we are the root node. -
strategyOnMismatch
Strategy in a case if matching allow/disallow rule was not found.
-
-
Constructor Details
-
AbstractImportControl
Construct a child node.- Parameters:
parent
- the parent node.strategyOnMismatch
- strategy in a case if matching allow/disallow rule was not found.
-
-
Method Details
-
locateFinest
Search down the tree to locate the finest match for a supplied package.- Parameters:
forPkg
- the package to search for.forFileName
- the file name to search for.- Returns:
- the finest match, or null if no match at all.
-
matchesExactly
Check for equality of this with pkg.- Parameters:
pkg
- the package to compare with.fileName
- the file name to compare with.- Returns:
- if it matches.
-
addImportRule
Adds anAbstractImportRule
to the node.- Parameters:
rule
- the rule to be added.
-
checkAccess
Returns whether a package or class is allowed to be imported. The algorithm checks with the current node for a result, and if none is found then calls its parent looking for a match. This will recurse looking for match. If there is no clear result thenAccessResult.UNKNOWN
is returned.- Parameters:
inPkg
- the package doing the import.inFileName
- the file name doing the import.forImport
- the import to check on.- Returns:
- an
AccessResult
.
-
localCheckAccess
Checks whether any of the rules for this node control access to a specified package or file.- Parameters:
inPkg
- the package doing the import.inFileName
- the file name doing the import.forImport
- the import to check on.- Returns:
- an
AccessResult
.
-