...
- List all dependents of existing module interfaces
Identify and remove unused modules and classes with module dependencies.
Remove ReportServlet - FCREPO-646
Remove ThreadMonitor - FCREPO-647
Identify and address circular module dependencies . Refactor to avoid circular dependency, else prepare to use setter injection.
- DefaultAccess <--> DynamicAccessModule
- DefaultDOManager <--> FieldSearchSQLModule
- DefaultDOManager <--> ManagementModule
- ManagementModule <--> DefaultExternalContentManager
- BasicServer <--> DefaultDOManager
- DatastreamManagedContent <--> DefaultManagement
- DisseminationService <--> DefaultAccess
- Server <--> DefaultAuthorization
- Modify all classes to accept module dependencies and fcfg-configured values at construction time.
- Decouple module interface impl from Module abstract class where needed
- For those with circular dependencies that can't be refactored out, provide setters.
Phase II - Swap
- Decide on DI framework
- Convert fcfg to DI configuration
- Trigger initialization of module singletons via DI framework in context initialization
- Use injected dependencies only, avoiding use of Module and Server at runtime
...