apache / apache/celix

Requirement-Capability Model Library

Open
#511 5 comments 0 reactions 1 assignee Claimed by @pnoltes View on GitHub
Dominant language
C
Stars
193
Forks
99
Avg merge
1m
Merged PRs (30d)
1

Description

Add a Requirement-Capability-Model (RCM) library that can replace the current requirement-capability model in the framework lib.

The current (2.3.0) requirement-capability model works on globals and is not reentrant. A new requirement-capability model can be made as a separate (Apache Celix specific) library, which can be used in the framework lib.

The goal of the RCM library should be to provide functionality for:
- [x] Basic Resource dependency model (chapter 3.3, OSGi 8 spec)
- [ ] (Bundle) Wiring of the capability requirement model (Chapter 6 & 7, OSGi 8 spec)
- [ ] Req-Cap resolving, to resolve per resource the requirement based on capabilities from other resources

Note that the functionality can be implemented with multiple pull request (base, wiring, resolving)

The RCM library will then be used in helping to resolve bundle modules and this includes handling Export-Library / Import-Library statements in the bundle manifests.
The RCM resolving does not replace "dlopen" / linking, but will provide the framework library with information (wiring) which Export-Library satisfies which Import-Library (if any).

The RCM library can also be used to resolve "generic" requirement / capability manifest statements, for example:
```
Provide-Capability: osgi.extender;
osgi.extender="celix.http";
uses:="celix.http_admin_service";
version:Version="1.0.0"
```

```
Require-Capability: osgi.extender;
filter:="(&(osgi.extender=celix.http)(version>=1.0)(!(version>=2.0)))"
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.