Description
The current way oak compiles the JCR descriptors is somewhat hard-coded and does not allow an easy way to extend it. Currently oak-jcr's RepositoryImpl.determineDescriptors() uses oak-core's ContentRepositoryImpl.createDescriptors() ones and overwrites a few (in JCRDescriptorsImpl). The result of this is then put into the RepositoryImpl.descriptors field - which is subsequently used.
While these descriptors can explicitly be overwritten via put, that all has to happen within overwriting code of the RepositoryImpl hierarchy. There's no plug-in mechanism.
Using the whiteboard pattern there should be a mechanism that allows to provide services that implement Descriptors.class which could then be woven into the GeneralDescriptors in use by ContentRepositorImpl for example. The plugin mechanism would thus allow hook in Descriptors as 'the base' which are still overwritten by oak-core/oak-jcr's own defaults (to ensure the final say is with oak-core/oak-jcr) - as opening up such a Descriptors-plugin mechanism could potentially be used by 3rd party code too.
PS: this is a spin-off of OAK-2844
Attachments
Attachments
Issue Links
- blocks
-
OAK-2844 Introducing a simple document-based discovery-light service (to circumvent documentMk's eventual consistency delays)
- Closed