I am having trouble figuring out how to implement the following using the
whiteboard pattern.

There are several services registered with OSGi.
- All services provide status.
- One service (call it GET_ONE) also registers to get the status of one
specific service.
- Another service (call it GET_ALL) also registers to get the status of all
the services.

So far, I have only been about to
- have both GET_ONE and GET_ALL get all the status
- have GET_ONE get its desired status and GET_ALL get no status

I know that I must have made a mistake in the filtering but I can't figure
out where.

This is what I've tried.

Scenario 1
- All services are registered according to their function
- GET_ALL also registered as a StatusListener with *no* service properties
- GET_ONE also registered as a StatusListener with "name=foo" service
property
- When sending status, all the services use *no* filter in the query
Results
- GET_ALL gets all the status (good)
- GET_ONE gets all the status (bad)

Scenario 2
- All services are registered according to their function
- GET_ALL also registered as a StatusListener with *no* service properties
- GET_ONE also registered as a StatusListener with "name=foo" service
property
- When sending status, all the services use *"name=<name>"* filter in the
query
Results
- GET_ALL gets no status (bad)
- GET_ONE gets its desired status (good)

Scenario 3
- All services are registered according to their function
- GET_ALL also registered as a StatusListener with *"name=*"* service
properties
- GET_ONE also registered as a StatusListener with "name=foo" service
property
- When sending status, all the services use *"name=<name>"* filter in the
query
Results
- GET_ALL gets no status (bad)
- GET_ONE gets its desired status (good)

Can someone point out the problem?  Thanks.

Tim

Reply via email to