[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Fw: [equinox-dev] Is there a "bug" in the DS specification?

Hello John,

This is a bit confusing but I don't think this is a "bug" in the DS specification.  Unfortunately DS isn't set up to do exactly what you want, but I think it can come pretty close.  The DS runtime behaves as follows:

1) A Component is enabled - DS checks to see if ConfigurationAdmin has a Configuration (factory or not) for it's PID.
2) The Component does not have a Configuration - an instance of the Component is resolved with the properties from the XML and activated.  (There is now 1 active instance)

... some time later

3) A Factory Configuration appears for the Component.  DS deactivates and disposes of the XML-properties instance of the Component, and creates and activates a new instance with the properties from the Configuration. (There is now 1 active instance)
4) Another Configuration appears for the Component.  DS creates and activates a new instance with the properties from the second Configuration. (There are now 2 active instances)

... some time later

5) All of the Configurations for the Component's component.id are deleted in CM.  DS deactivates both of the active instances, and then creates and activates a new instance with the properties from the XML file.  (There is now 1 active instance).

So basically it looks like DS does what you want, except it creates a vestigial instance even if there are no configurations.  You might want to look at the ComponentFactory option, which behaves similarly but doesn't automatically create new instances due to Configurations in ConfigAdmin.  However once you programmatically create the instances they can still be configured by ConfigAdmin.

Roy Paterson

Roy Paterson
IBM Pervasive Computing
Austin, TX
Phone: (512) 838-8898

----- Forwarded by Roy Paterson/Austin/IBM on 01/03/2006 01:30 PM -----
Thomas Watson/Austin/IBM

01/03/2006 09:51 AM

Roy Paterson/Austin/IBM@IBMUS
Fw: [equinox-dev] Is there a "bug" in the DS specification?

Here is a message you may be able to answer.

Thomas Watson
Pervasive Development
Phone: 512-838-4533 Tie: 678-4533

----- Forwarded by Thomas Watson/Austin/IBM on 01/03/2006 09:50 AM -----
John Wells <jwells131313@xxxxxxxxx>
Sent by: equinox-dev-bounces@xxxxxxxxxxx

12/31/2005 10:33 AM

Please respond to
Equinox development mailing list

[equinox-dev] Is there a "bug" in the DS specification?

In section 117.2 of the specification it says (I paraphrase):
A.  If there is no Configuration with a PID or FactoryPID then the component is deployed with properties from the xml file
B.  If there is a Configuration with a PID with the same name as the component then the properties are overridden with the properties from the Configuration
C.  (This one I am copying directly from the specification)
Factory Configuration – If a factory PID exists, with zero or more Configurations,
that is equal to the component name, then for each Configuration,
a component configuration must be created that will obtain
additional component properties from Configuration Admin. This is the
ManagedServiceFactory situation.
What I don't understand is how to have a "factoryPID" configuration with zero Configurations.  In order to create a ManagedFactory cofiguration one must use ConfigurationAdmin.createFactoryConfiguration("component-name") which will then create a configuration with a factoryPID and a generated PID.  This is a Configuration with a factoryPID, but there is one of them.  Not zero.  Which is unfortunate, because I actually want the situation where the components are created due to dynamic additions and subtractions from factory Configuration objects (Configuration objects with the factoryPID set).
However, it is impossible for DS to determine the difference between two cases then.
1.  There is no Configuration object but I want a component to be created with the properties from the XML file
2.  There is no Configuration object but I wanted to create a Configuration with a matching FactoryPID later.
Since there is no way to tell the component which of the two situations I wanted, it seems like there is a problem.  There seems to only be two ways to fix this:
1.  Somehow change the ConfigurationAdmin specification to allow for a Factory Configuration with zero subordinate configurations (doesn't seem possible, given the mechanichs of the ConfigurationAdmin specification).
2.  Some sort of property on the component that tells it that it should be tied to the FactoryPID of a Configuration.  (Obviously "factory" is out.  Perhaps something like "deployment-policy").
Am I misreading the specification?  Is there some other way to read this section?  Can you DS experts help me out here?  (What I actually want is behavior #2 up above - components that are tied to a Factory Configuration and which are created and destroyed dynamically).
John Wells (Aziz)
(From my yahoo account, since I am on "vacation" reading specifications!!!)

Yahoo! Shopping
Find Great Deals on Holiday Gifts at
Yahoo! Shopping _______________________________________________
equinox-dev mailing list