Changes (agreed on by Knut + Achim)
- Move SymbolExpander to xml module (remove expandSymbols from RegistryInfrastructure and Module)
- Move ServiceInterceptorFactory to xml module
LoggingInterceptorFactory should remain in framework and be called by an adapter implementation in the xml module.
More changes in discussion
registry definition API - interfaces vs. beans
extension to extension point references - by id vs. by reference
This is all about how extensions are added to an extension point. Extensions are implementations, interceptors and contributions. If extension and extension point exists in different modules then there is no other option but a reference by fully qualified id which is resolved on construction time. If both exist in the same module the extension can be added directly to the extension point.
Example by id:
ModuleDefinition module = new ModuleDefinition("module1"); ServicePointDefinition service = new ServicePointDefinition("service1", ...) ServiceImplementationDefinition impl = new ServiceImplementationDefinition(...) module.addService(service); module.addServiceImplementation("module1.service1", impl);
Example by reference:
ModuleDefinition module = new ModuleDefinition("module1"); ServicePointDefinition service = new ServicePointDefinition("service1", ...) ServiceImplementationDefinition impl = new ServiceImplementationDefinition(...) module.addService(service); service.addImplementation(impl);