Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-222

iPOJO should automatically propagate configuration properties as service properties, per CM spec.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • None
    • iPOJO
    • None
    • Not relevant.

    Description

      The Configuration Admin Service Specification advises in Section 104.4.3, Property Propagation, that:

      An implementation of a Managed Service should copy all the properties of the Dictionary object
      argument in updated(Dictionary), known or unknown, into its service registration properties
      using ServiceRegistration.setProperties.

      It looks like iPOJO does some of this propagation for a ManagedService in ConfigurationHandler.updated() around line 256, apparently only propagating the properties not known as "configurable properties". However, I think this reading of the specification may be too literal, in that iPOJO does not do the same propagation of the initial properties provided to a ManagedServiceFactory.

      ComponentManager implements ManagedServiceFactory. In its updated(String, Dictionary) method, it calls on createComponentInstance(), which then calls on InstanceManager.configure(), which lets each Handler take its turn configuring the new instance. Of particular interest here is ProvidedServiceHandler.configure(). It only exposes properties defined in <property> elements inside the <provides> element of a component metadata specification. Any properties provided in the initial configuration not defined beforehand in the metadata are ignored and not published as service properties.

      The CM specification does note:

      A configuration target service may ignore any configuration properties it
      does not recognize, or it may change the values of the configuration properties
      before these properties are registered. Configuration properties in the
      Framework service registry are not strictly related to the configuration
      information.

      This seems to contradict the advice in the first paragraph, perhaps just clarifying that compliance is not mandatory. What would be useful is some directive on the <provides> element that would allow all unknown configuration properties to be propagated as service properties. At present, this propagation must be done manually by defining each service property under the <provides> element, which makes it impossible to ever propagate an unknown configuration property.

      Finally, though the CM specification does talk about "a Managed Service" and mentions the single-argument updated(Dictionary) method, the rest of the text in Section 104.4.3 sounds as though it's describing how both ManagedService and ManagedServiceFactory should work.

      Attachments

        1. reconfiguration.patch
          115 kB
          Clement Escoffier

        Activity

          People

            rickhall Richard S. Hall
            seh Steven E. Harris
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: