Clement Escoffier wrote:
and thank you for the feedback.
Definitely, thanks for taking the time to play with this. It is nice to
get feedback from outsiders, since they tend to find issues that we do
not, since we are too close to the work.
Let us know if the latest changes resolve your remaining issues with
Config Admin support and I will try to get the source into Felix' svn
repo ASAP.
-> richard
<iPOJO>
<component
className="com.verticon.experiment.ipojo.configuration.ConfiguribleEventHandler"
name="com.verticon.experiment.ipojo.configuration" architecture="true">
<Provides interface="org.osgi.service.event.EventHandler">
<DynamicProperty name="event.topics"
field="topics"
value="com/verticon/rfid/MOVEMENT"/>
</Provides>
<ConfigurableProperty field="topics"
name="event.topics" />
<callback final="VALID" initial="INVALID"
method="starting"/>
<callback final="INVALID" initial="VALID"
method="stopping"/>
</component>
</iPOJO>
These metadata mean that only the field "topics" is configurable. Then
all other field's name are rejected. Nevertheless, your field is a
dynamic property too, so it should propagate your value to the service
registration. The version that you used does not handle property's
name but only property's field. I change this to support property name
too (if no name, I use the property field). So with the new deployed
version (always 2.6), your metadata should be correct.
1. The first issue (problem?) that I see is that the iPOJO container
(org.apache.felix.ipojo.handlers.configuration.ConfigurationHandler)
registers, unregisters, and registers a second time as a ManagedService
with the framework. Note the ConfiguationAdmin
(org.apache.configuration.impl) implementation uses a separate thread
for callbacks to invoke the updated method on the service.
It was a small bugs when the handler start and when the component
state changes. So I correct it. I test it and it seems to work.
(reinstall the 2.6 version, at the same location).
2. The second issue I have seen is that the container
(ConfigurationHandler) is rejecting all configuration properties.
(Would have expected at least that the event.topics would be accepted
and propagated as it is specified in the metadata. Or did I setup the
metadata wrong?)
Don't think the container can be so picky with the configs. As specified
in the OSGi Compendium Spec R4 p 70-432 All Configuration Properties
should be accepted and propagated to the service registration by the
ManagedService (in this case the iPOJO container). Here is a log output:
The new pushed values are propagated to the service registration if
the provided services contains a dynamic property with the same field
name than the configurable property.
My configuration handler does not do anything with all other
configuration, I changed the log level of the message form SEVERE to
WARNING. It means that you push a non consistent configuration to the
component (there is no configurable property with this name).
Clement