-
Feature Request
-
Resolution: Unresolved
-
Major
-
None
-
None
-
None
I'd like propose to add e.g the following methods to the API:
// gets clazz and classed directly used by this clazz
addClass(boolean recursive, Class<?> clazz)
// gets clazz and recursivly classes in given depth
// addClass(boolean recursive, Class<?> clazz) runs addClass(boolean recursive, 1, Class<?> clazz)
addClass(boolean recursive, int depth, Class<?> clazz)
They would add to the archive, given clazz, and all other classes mentioned in clazz, e.g
For the following class strcture
public class DummyDependentA { private DummyDependentB dummyDependentB; } public class DummyDependentB { private DummyDependentC dummyDependentC ; } public class DummyDependentC { }
operation .addClass(true, DummyDependentA .class) would result in adding both DummyDependentA and DummyDependentB to the archive (but not DummyDependentC ). In order to add also DummyDependentC user would have to use at least .addClass(true, 2, DummyDependentA .class).
It is possible to achieve, e.g. using ASM library - as described in answer of the following topic http://stackoverflow.com/questions/3734825/find-out-which-classes-of-a-given-api-are-used
I've locally prepared proof of concept, after some refactorings I will present the pull request.
It's worth to discuss what API methods would be the most useful. Recursion might get really big number of classes. Obligatory is filtering out "java.*" classes. Maybe it would be useful to apply additional package filtering for this, so that recursion would work only on current project classes.