...
- 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.
- Where existing modules look at configuration of other modules, get the configuration value from a getter in the interface, not the configuration.
- Where existing modules look at global fcfg values, make those available via bean-style class, GlobalConfig.
- Where existing modules look at datastore fcfg values, inject the connectionpool or config values directly.
- Constructors for impls should do as much arg validation/setup as they can. If they can't do it all, it should be done in a @PostConstruct void init() method. In either case, if validation or setup fails, an unchecked exception should be thrown, as per JSR-250.
- Where de-initialization is needed, a @PreDestroy void destroy() method should be used. Errors encountered during de-initialization should be logged by this method, and an unchecked exception should be thrown, as per JSR-250.
Tasklist Modifications Needed Modifications Needed || Completed || Priority || Locked || CreatedDate || CompletedDate || Assignee || Name || |F|M|F|1268080202735| F | M | F | 1268080202735 | | cwilper | Add and populate GlobalConfig | |F|M|F|1268080236272| F | M | F | 1268080236272 | | cwilper | Update org.fcrepo.server.access.DefaultAccess | | F | M | F | 1268080257979 | | cwilper | F|M|F|1268080257979| |cwilper|Update org.fcrepo.server.access.DynamicAccessModule | | F | M | F | 1268080268001 | | cwilper | F|M|F|1268080268001| |cwilper|Update org.fcrepo.server.journal.Journaler | |F|M|F|1268080276055| F | M | F | 1268080276055 | | cwilper | Update org.fcrepo.server.management.BasicPIDGenerator | | F | M | F | 1268080285519 | | cwilper | F|M|F|1268080285519| |cwilper|Update org.fcrepo.server.management.ManagementModule | | F | M | F | 1268080327906 | | cwilper | F|M|F|1268080327906| |cwilper|Update org.fcrepo.server.messaging.MessagingModule | |F|M|F|1268080339553| F | M | F | 1268080339553 | | cwilper | Update org.fcrepo.server.oai.FedoraOAIProviderModule | |F|M|F|1268080350944| F | M | F | 1268080350944 | | cwilper | Update org.fcrepo.server.resourceIndex.ResourceIndexModule | |F|M|F|1268080374403| F | M | F | 1268080374403 | | cwilper | Update org.fcrepo.server.search.FieldSearchSQLModule | |F|M|F|1268080381223| F | M | F | 1268080381223 | | cwilper | Update org.fcrepo.server.security.DefaultAuthorization | |F|M|F|1268080399963| F | M | F | 1268080399963 | | cwilper | Update org.fcrepo.server.security.DefaultBackendSecurity | |F|M|F|1268080425721| F | M | F | 1268080425721 | | cwilper | Update org.fcrepo.server.storage.ConnectionPoolManagerImpl | | F | M | F | 1268080433280 | | cwilper | F|M|F|1268080433280| |cwilper|Update org.fcrepo.server.storage.DefaultDOManager | | F | M | F | 1268080461067 | | cwilper | F|M|F|1268080461067| |cwilper|Update org.fcrepo.server.storage.DefaultExternalContentManager | |F|M|F|1268082094738| F | M | F | 1268082094738 | | cwilper | Update org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorageModule | | F T| M | F | 1268082154104 | 1346508992367|nigel cwilper thomas| Update org.fcrepo.server.storage.lowlevel.DefaultLowlevelStorageModule | |F|M|F|1268082165864| F | M | F | 1268082165864 | | cwilper | Update org.fcrepo.server.storage.translation.DOTranslationModule | | F | M | F | 1268082180490 | | cwilper | F|M|F|1268082180490| |cwilper|Update org.fcrepo.server.validation.DOValidatorModule |
Phase II - Swap
Decide on DI framework: Spring 3
- 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
...