Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-3145

Allow plugging in additional jcr-descriptors

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.3.3
    • 1.3.4, 1.4
    • core
    • None
    • Patch

    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

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            stefanegli Stefan Egli
            stefanegli Stefan Egli
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment