Bugfix release, plus one behavioral change to do with "strict whitelist" / "external classes".
Behavioral change:
This behavioral change brings the behavior of FCS much closer to the expectations of the vast majority of users with respect to "external classes" (classes that are not in a whitelisted package, but that are referred to by a whitelisted class, as a superclass, implemented interface, or annotation) -- specifically that external classes should be able to be used to query a ScanResult
, but should not themselves show up in a ScanResult
.
- Made "strict mode" the default, such that "external classes" are not returned by any
ScanResult
methods (and are not passed toMatchProcessor
s). - Got rid of exceptions for cases where you pass an external class into a
ScanResult
method as a parameter in strict mode - Deprecated
FastClasspathScanner#strictWhitelist()
- Added
FastClasspathScanner#enableExternalClasses()
, which will causeScanResult
methods to return external classes if any are found
Bugfixes:
- Properly resolve layer order using topological sort (JDK does not do this yet, it uses a broken DFS order, but I have reported the bug, so hopefully this gets fixed soon in JDK)
- Improve detection of system modules, packages and classes
- Speed up unit tests by providing scan spec wherever possible