Breaking Changes
JavaClass.get{All}Interfaces()
is nowJavaClass.get{All}RawInterfaces()
to be consistent with regards to the genericJavaClass.getInterfaces()
. We decided that this is still a less painful way than deprecatinggetInterfaces()
, introducting a newgetGenericInterfaces()
, then deprecategetGenericInterfaces()
in favor ofgetInterfaces()
in a later release. To be consistent with other places in ArchUnitJavaClass.getInterfaces()
needs to provide the generic version of the interfaces (compare e.g.JavaClass.getSuperclass()
).
Enhancements
Core
- Support for Java Records (see #295; thanks a lot to @rweisleder)
JavaClass
now knows its generic interfaces (retrievable viaJavaClass.getInterfaces()
). Furthermore type arguments of generic interfaces are now part of the JavaClass.directDependencies{From/To}Self (see #551)
Lang
- New syntax methods
classes().that().containAny{Members,Fields,Methods,...}That(..)
(see #553; thanks a lot to @nils-christian)
Library
- Added an API to calculate Software Architecture Metrics inspired by John Lakos, Robert C. Martin and Herbert Dowalil. For further details check the user guide (see #572; thanks a lot to @hankem and @stefanhechtltng and to @hdowalil for the inspiration and support)
Further Acknowledgement
- Thanks a lot to @rweisleder and @Strohgelaender for improving the documentation