Pierre De Rop created FELIX-4955:
------------------------------------

             Summary: DS based on Dependency Manager
                 Key: FELIX-4955
                 URL: https://issues.apache.org/jira/browse/FELIX-4955
             Project: Felix
          Issue Type: New Feature
          Components: Dependency Manager
            Reporter: Pierre De Rop
            Assignee: Pierre De Rop


(this is an experimental issue)

Whilst Apache Felix Dependency Manager is a powerful tool that allows to manage 
OSGi service components, it is not standard. On the other hand, at Felix we 
have SCR which is an implementation of the standard OSGi Declarative Service 
(DS) specification.

The intent of this experimental issue is to unify and align both DS and DM in 
order to provide a Declarative Service library based on Dependency Manager.

This new DS library will bring the following benefits:

- For those who love DM, this new library will provide a unified solution that 
align both DM and DS, where each DS component would be actually implemented as 
a DM component, browsable from the DM shell.
- provide some DM extension to DS component: for example, the ability to add 
some extra dependencies dynamically from DS component's "init" method.

This experimentation can be split in the following steps:

h5. STEP 1: build current SCR in a DM submodule using bndtools

Create a new DM dependencymanager/org.apache.felix.dependencymanager.ds module 
that includes the current Apache SCR implementation. As DM is based on 
bndtools, the current SCR implementation will have to be de-mavenified and 
built using bndtools. The new module will also include the current SCR junit 
tests, but not integration tests because current released bndtools requires to 
have separate modules
for integration tests (if I'm correct).

h5. STEP 2: create a new DM submodule for SCR integration tests.

Create a new DM dependencymanager/org.apache.felix.dependencymanager.ds.itest 
sub module that includes the current Apache SCR integration tests.

Pax-exam seems to not work well within bndtools. So, it has to be replaced by a 
simpler tool that allows to dynamically build a "tiny" bundle under bndtools. 
That tool will be simply based on bndlib.

All tests will also have to be reworked in order to cleanup possibly created 
test configurations because in bndtools, the framework is not restarted between 
tests.

h5. STEP 3: update the dependency manager load test suite

Add a new loadtest suite based on current Apache Felix SCR
Add a new loadtest suite based on the new org.apache.felix.dependencymanager.ds 
bundle.

This will allow to compare and make sure that the new DS library will be at 
minimum as fast as the current SCR implementation. It will also be used to 
observe the gain of using the actor thread model of DM with DS components.

h5. STEP 4: rework SCR with DM

That will be of course the most difficult part to do: rework
dependencymanager/org.apache.felix.dependencymanager.ds in order to map each DS 
components to DM components (internally).

After a quick look over the current implementation, the following things could 
be done:

- modify the classes derived from 
org.apache.felix.scr.impl.manager.AbstractComponentManager and transform them 
into DM component.
- Rework the org.apache.felix.scr.impl.manager.DependencyManager and implements 
it as a DM dependency (by extending the 
org.apache.felix.dm.context.AbstractDependency class).

h5. STEP 5: build everything in java8

Java7 is in end of life and the DM loadtest suite requires java8.
So, for consistency reasons, build every DM submodules using java8.




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

Reply via email to