This is an automated email from the ASF dual-hosted git repository.
pnoltes pushed a commit to branch
feature/update_component_and_pattern_documentation
in repository https://gitbox.apache.org/repos/asf/celix.git
The following commit(s) were added to
refs/heads/feature/update_component_and_pattern_documentation by this push:
new 51ec14e1 Updates some sentences for patterns documentation
51ec14e1 is described below
commit 51ec14e195ed2f413e30dc1602d6f24c89ffe542
Author: Pepijn Noltes <[email protected]>
AuthorDate: Tue Jun 7 19:56:51 2022 +0200
Updates some sentences for patterns documentation
---
documents/patterns.md | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/documents/patterns.md b/documents/patterns.md
index b57ce68c..04bcdab0 100644
--- a/documents/patterns.md
+++ b/documents/patterns.md
@@ -28,6 +28,8 @@ an existing functionality.
A typical aspect of the whiteboard pattern is that an application should
still resolve and startup even if the bundle or bundles that pick up the
whiteboard pattern services are absent.
+
+
Many Apache Celix services are whiteboard services. For example:
- `celix_shell_command_t` and `celix::IShellCommand` services. These services
can be
picked up by the `Celix::shell` bundle, but applications should still work
if there is no `Celix::shell` installed
@@ -52,12 +54,10 @@ For example: A `log_collector` bundle which provides a
`celix_log_sink_t` servic
so that logging can be collected at in a central log database.
But no logging is added to the central log database. Initially it could seem
that the `log_collector` bundle
does not work, especially because the application will not print any warnings
or errors.
-But if the `Celix::log_admin` bundle is not installed and started the
`log_collector` bundle provided
+But if the `Celix::log_admin` bundle is not installed and started, the
`log_collector` bundle provided
`celix_log_sink_t` service will never be called, so installing and starting
the `Celix::log_admin` is the issue
in this example.
-
-
## Extender Pattern
The extender pattern is a design pattern which leverages the concept of
resource containing bundles.
@@ -111,27 +111,29 @@ should show the content of the `index.html`
## Service on Demand (SOD) Pattern
A less known Apache Celix / OSGi pattern is the service on demand (SOD)
pattern. With the SOD pattern,
-service are adhoc registered at the moment they are requested.
+services are ad hoc registered at the moment they are requested.
Where the whiteboard pattern can be used to extend functionality in modular
and service oriented fashion, the SOD
pattern can be used to use to provide more functional cohesive services to
users in a service oriented fashion.
-For the SOD pattern, the service filter to request services is used to extract
information about if and how
-a service on demand needs to be created.
+For the SOD pattern, the service filter to request services can be used to
extract information about if and how
+a service on demand needs to be created.
+
+
Some Apache Celix bundles use the SOD pattern. For example:
- - The `Celix::log_admin` creates `celix_log_service` services already
preconfigured for a requested logger name.
- - The Apache Celix / OSGi remote services uses SOD, by adhoc imported
services only when they are discovered and
+ - The `Celix::log_admin` bundle creates and registers `celix_log_service_t`
services already preconfigured for
+ a requested logger name.
+ - The Apache Celix / OSGi remote services uses SOD, by ad hoc imported
services only when they are discovered and
requested.
- - The Celix PubSub bundles uses SOD to create `pubsub_publisher` services
when these are requested with a valid
- "topic.name" and "topic.scope".
+ - The Celix PubSub bundles uses SOD to create and register
`pubsub_publisher_t` services when these are requested
+ with a valid "topic.name" and "topic.scope" filter attribute.
-SOD pattern services are always [provider
types](https://docs.osgi.org/javadoc/osgi.annotation/8.0.0/org/osgi/annotation/versioning/ProviderType.html),
although for Apache Celix interfaces cannot be annotated as
+SOD services are always [provider
types](https://docs.osgi.org/javadoc/osgi.annotation/8.0.0/org/osgi/annotation/versioning/ProviderType.html),
although for Apache Celix interfaces cannot be annotated as
consumer or provider type.
For OSGi the
[FindHook](https://docs.osgi.org/javadoc/osgi.core/8.0.0/org/osgi/framework/hooks/service/FindHook.html)
service can be used to further fine tune which services are visible for bundle
requesting a SOD service.
Apache Celix does not yet support the FindHook service.
-