Bombe 0.3.0 continues the Bombe mission, further working towards making a cleaner codebase that can be used further afield than Lorenz or Survey.

Changes

  • The bombe-core module has been renamed to simply bombe, becoming more inline with the Lorenz modules.
  • Type#isInstanceof has been renamed to Type#isAssignableFrom.

Inheritance providers

InheritanceProvider has been reworked to expose inheritance access levels (represented by InheritanceType) and to improve performance.

  • InheritanceProvider.ClassInfo#getFields and getMethods now return a Map<*Signature, InheritanceType> that allows checking if a child class actually inherits a member from its parent class based on its access level.
  • InheritanceProvider.ClassInfo#provideParents is a shortcut to provide ClassInfos for all parent classes/interfaces for a class, recursively. (Replaces the getParentsOf method)
  • There is a new CachingInheritanceProvider that wraps an existing InheritanceProvider and caches the request. This replaces the duplicated functionality in all other InheritanceProvider implementations.
  • ReflectionInheritanceProvider was added as a reference implementation based on Java’s reflection API.

Jar Transformation Framework

Bombe now contains a so-called ‘jar-file transformation framework’, that facilitates the reading and manipulating of Jar files. The javadocs will be the best reference for it :)

Going forward, this may be moved into a separate library.