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

Carsten Ziegeler updated SLING-646:
-----------------------------------

    Component/s:     (was: OSGi)
                 JCR Install

> jcrinstall - take two
> ---------------------
>
>                 Key: SLING-646
>                 URL: https://issues.apache.org/jira/browse/SLING-646
>             Project: Sling
>          Issue Type: New Feature
>          Components: JCR Install
>            Reporter: Bertrand Delacretaz
>            Assignee: Bertrand Delacretaz
>
> Based on the jcrinstall [1] and jcrbundles [2][SLiNG-587] experiments, and 
> after playing a bit with these modules and talking to (our) Felix, I'll start 
> re-implementing the jcrinstall module under sling/extensions/jcrinstall, 
> based on a mix of both codebases (jcrbundles was based on the existing 
> jcrinstall anyway, so it's a mix already).
> Here's a quick specification.
> The jcrinstall module looks for OSGi resources (bundles in jar files, 
> configurations in text (.cfg) files, deployment packages in .dp files) under 
> a configurable set of paths in the repository.
> Those resources are "installed" in the OSGi framework when detected: bundles, 
> deployment packages and configurations are installed, updated or removed as 
> needed.
> The jcrinstall module is considered as another "user interface" to the OSGi 
> framework, besides the existing OSGi console, and as such aims to play well 
> with the console, and avoid any inconsistencies when both user interfaces are 
> used. That's only a best effort, though, as we'll probably find edge cases 
> when using both can cause problems.
> The module is split in two components:
> = OSGi controller component =
> Receives notifications of new, updated or deleted OSGi resources from the JCR 
> observation component.
> Does not use any JCR interfaces, so as to be reusable independently.
> Manages the required queues and retries to ensure that received bundles, 
> configurations and deployment packages are eventually activated, even if 
> their dependencies are made available later.
> Provides permanent storage (based on BundleContext.getDataFile()) for the JCR 
> component to store Properties for the resources that it detects.
> Uses handlers based on a common interface for the various types of resources 
> (bundles, configs, deployment packages).
> = JCR observation component =
> Observes a number of folders in the JCR repository, based on configurable 
> regular expressions for their paths. The default regexp causes folders named 
> "install" to be observed.
> Limited to a configurable list of root paths, by default /libs and /apps.
> Detects added or modified files in those folders and notifies the OSGi 
> controller of these events, providing the file's InputStream with the event, 
> along with an event type.
> Uses the permanent storage provided by the OSGi controller to store 
> information that allows for detecting updates and deletes of OSGi resources.
> = coda =
> Splitting the module in two well-separated components should also help 
> automated testing - as described above, both components should be readily 
> testable without requiring complicated setups.
> [1] http://svn.apache.org/repos/asf/incubator/sling/whiteboard/jcrinstall/
> [2] http://svn.apache.org/repos/asf/incubator/sling/whiteboard/jcrbundles/

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to