jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig (JIRA) <j...@apache.org>
Subject [jira] [Updated] (OAK-2828) Jcr builder class does not allow overriding most of its dependencies
Date Wed, 22 Jul 2015 10:01:06 GMT

     [ https://issues.apache.org/jira/browse/OAK-2828?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Michael Dürig updated OAK-2828:
-------------------------------
    Fix Version/s:     (was: 1.3.4)
                   1.3.5

> Jcr builder class does not allow overriding most of its dependencies
> --------------------------------------------------------------------
>
>                 Key: OAK-2828
>                 URL: https://issues.apache.org/jira/browse/OAK-2828
>             Project: Jackrabbit Oak
>          Issue Type: Sub-task
>          Components: jcr
>    Affects Versions: 1.2.2
>            Reporter: Robert Munteanu
>              Labels: modularization, technical_debt
>             Fix For: 1.3.5
>
>         Attachments: 0001-OAK-2828-Jcr-builder-class-does-not-allow-overriding.patch
>
>
> The {{Jcr}} class is the entry point for configuring a JCR repository using an Oak backend.
However, it always use a hardcoded set of dependencies ( IndexEditorProvider, SecurityProvider,
etc )  which cannot be reset, as they are defined in the constructor and the builder {{with}}
methods eagerly configure the backing {{Oak}} instance with those dependencies.
> As an example
> {code:java|title=Jcr.java}
>     @Nonnull
>     public final Jcr with(@Nonnull SecurityProvider securityProvider) {
>         oak.with(checkNotNull(securityProvider));
>         this.securityProvider = securityProvider;
>         return this;
>     }
> {code}
> injects the security provider which in turn starts configuring the Oak repository provider
> {code:java|title=Oak.java}
>     @Nonnull
>     public Oak with(@Nonnull SecurityProvider securityProvider) {
>         this.securityProvider = checkNotNull(securityProvider);
>         if (securityProvider instanceof WhiteboardAware) {
>             ((WhiteboardAware) securityProvider).setWhiteboard(whiteboard);
>         }
>         for (SecurityConfiguration sc : securityProvider.getConfigurations()) {
>             RepositoryInitializer ri = sc.getRepositoryInitializer();
>             if (ri != RepositoryInitializer.DEFAULT) {
>                 initializers.add(ri);
>             }
>         }
>         return this;
>     }
> {code}
> Instead, the {{Jcr}} class should store the configured dependencies and only configure
the {{Oak}} instance when {{createRepository}} is invoked.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message