Uploaded image for project: 'ShrinkWrap'
  1. ShrinkWrap
  2. SHRINKWRAP-436

Support recursive Class addition

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • api, impl-base
    • 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.

              mmatloka Michal Matloka (Inactive)
              mmatloka Michal Matloka (Inactive)
              Votes:
              2 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: