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

Allow plugging in additional jcr-descriptors

    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

        1. OAK-3145.patch
          10 kB
          Stefan Egli
        2. OAK-3145.v2.patch
          10 kB
          Stefan Egli

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: