...
- List all dependents of existing module interfaces
- Identify and remove unused modules and classes with module dependencies.
- Remove ReportServlet
- Remove ThreadMonitor
- Identify and address circular module dependencies. Refactor if possible; otherwise prepare to use setter injection in these cases.
- Decouple module impls from Module abstract class (as is already done with ResourceIndexImpl/Module and others)
...
- Decide on DI framework
- Convert fcfg to DI configuration
- Trigger initialization of module singletons via DI framework in context initialization
- Avoid Use injected dependencies only, avoiding use of Module and Server at runtime
Phase III - Cleanup
- Get rid of Module and Server classes, Server, and subclasses
- Get rid of everything else that parses/looks at fcfg