[
https://issues.apache.org/jira/browse/SLING-2624?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Carsten Ziegeler resolved SLING-2624.
-------------------------------------
Resolution: Won't Fix
> Improving Jackrabbit integration with OSGi Service Registry
> -----------------------------------------------------------
>
> Key: SLING-2624
> URL: https://issues.apache.org/jira/browse/SLING-2624
> Project: Sling
> Issue Type: New Feature
> Components: JCR
> Reporter: Chetan Mehrotra
> Priority: Major
> Attachments: SLING-2624-3-no-jaas.diff,
> SLING-2624-initial-proposal.diff, SLING-2624-svn-compat.diff,
> org.apache.sling.jcr.jackrabbit.base-0.0.1-SNAPSHOT-src.tar.gz
>
>
> Current Sling integration with Jackrabbit (JR) allows for simpler access to
> Repository services from other bundles via the OSGi Service Registry (SR).
> However to make use of OSGi services within JR is tricky. Some integration is
> done wrt security but for other areas one needs to use fragments.
> To simplify such integration recently a new feature was added to JR
> (JCR-3420) [1] which allows for registering a custom BeanFactory with JR.
> This would allow usage of services from service registry within JR. Refer to
> Mail thread [5] for relevant discussion
> Feature Details
> ===============
> This feature builds up on the new module org.apache.sling.jcr.jackrabbit.base
> proposed with SLING-2623.
> OsgiBeanFactory
> ---------------
> This is an implementation for the JR BeanFactory extension and acts as a
> bridge between OSGi and JR. It uses a custom BeanConfigVisitor to collect all
> the dependency information i.e. details about services which need to be
> pulled from SR. Then it uses a ServiceTracker to track avialability of all
> such services. Once all the required dependencies are found it registers
> itself with SR.
> Once it is registered the SlingServerRepository can start
> * Note - This feature has not much dependency on SLING-2623. Just that git
> fork is based on the base of SLING-2623
> SlingServerRepository Integration
> ---------------------------------
> OsgiBeanFactory needs to know the repository configuration which would be
> used to create the repository. Current fork impl uses one way to determine
> the config (which would need to be revisited). Further SlingServerRepository
> now has a reference for BeanFactory and would only be activated upon
> registration of BeanFactory
> Note - The current SlingServerRepository is configured as component factory
> which would require a 1..1 mapping to BeanFactory. Such mapping is bit tricky
> to achieve. However in most cases a Sling server has only one
> SlingServerRepository. So the proposed approach *assumes* that there is a
> single repository instance configured
> Sample Usage
> ============
> To demonstrate the use of such a feature I took the usecase of externalizing
> the AuthorizableAction [2] in Sling env. So it should be possible to use an
> OSGi service which implements the AuthorizableAction within JR. An
> implementation of that is available at [4]. In the JR repository.xml we would
> have an entry like show below
> <AuthorizableAction
> class="org.apache.jackrabbit.core.security.user.action.AuthorizableAction" />
> Then the OSGiBeanFactory would obtain the instance of AuthorizableAction from
> Service Registry and provide that to JR. Now any bundle can register an
> instance of AuthorizableAction with SR and it would be invoked for various
> callbacks from JR UserManager!!
> Note about patch
> ===============
> The patch builds up on the SLING-2623 fork. Once we have consensus upon the
> approach I can extract relevant parts and propose a new patch
> [1] https://issues.apache.org/jira/browse/JCR-3420
> [2]
> http://jackrabbit.apache.org/api/2.4/org/apache/jackrabbit/core/security/user/action/AuthorizableAction.html
> [3] https://github.com/chetanmeh/sling/compare/osgi-factory4
> [4]
> https://github.com/chetanmeh/sling/compare/chetanmeh:jaas-osgi-adv...chetanmeh:osgi-factory4
> [5] http://markmail.org/thread/3nnkygzef5dvzxod
--
This message was sent by Atlassian Jira
(v8.20.10#820010)