Versions Compared

Key

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

...

Modify existing modules to accept

...

injected dependencies and config values

  • Decouple module interface impl from Module abstract class where needed
  • Push param validation responsibility down to each impl (not in Module)
  • Use constructor injection if possible. For those with circular dependencies that can't be refactored easily, provide setters.

Original Module Class

Refactoring Needed

org.fcrepo.server.access.DefaultAccess

Add DefaultAccessModule: Construct and delegate calls to DefaultAccess
Modify DefaultAccess: Do not extend Module; use constructor injection
Modify fedora-base.fcfg: Points to DefaultAccessModule instead

..

 

Phase II - Swap

  • Decide on DI framework
  • Design and implement a way to deal with non-module configuration currently in fedora.fcfg (global configuration and datastores)
  • Convert fcfg to DI configuration and update installer to populate it instead
  • Trigger initialization of module singletons via DI framework in context initialization
  • Use injected module dependencies wherever possible, avoiding use of Module and Server at runtime

...