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
FieldsModifier and TypeFieldDescriptionprivate final AbstractImportControlThe parent.private final Deque<AbstractImportRule>List ofAbstractImportRuleobjects to check.private final MismatchStrategyStrategy in a case if matching allow/disallow rule was not found. - 
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractImportControl(AbstractImportControl parent, MismatchStrategy strategyOnMismatch) Construct a child node. - 
Method Summary
Modifier and TypeMethodDescriptionprotected voidAdds anAbstractImportRuleto the node.checkAccess(String inPkg, String inFileName, String forImport) Returns whether a package or class is allowed to be imported.private AccessResultlocalCheckAccess(String inPkg, String inFileName, String forImport) Checks whether any of the rules for this node control access to a specified package or file.abstract AbstractImportControllocateFinest(String forPkg, String forFileName) Search down the tree to locate the finest match for a supplied package.protected abstract booleanmatchesExactly(String pkg, String fileName) Check for equality of this with pkg. 
- 
Field Details
- 
rules
List ofAbstractImportRuleobjects 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 anAbstractImportRuleto 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.UNKNOWNis 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. 
 
 -