Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • List all dependents of existing module interfaces
  • (tick) Identify and remove unused modules and classes with module dependencies. (lightbulb)
  • (tick) 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
    (noted with on above page).
  • 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.
    Decouple module impls from Module abstract class (as is already done with ResourceIndexImpl/Module and others)

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

...