-
Key: CORBA26-64
-
Legacy Issue Number: 4136
-
Status: closed
-
Source: Zuehlke Engineering ( Frank Pilhofer)
-
Summary:
While reviewing the ComponentIR interfaces in 00-11-01, I have found
some problems with it. (These are unrelated to the current discussion
about the Interface Repository itself.)Many interfaces inherit Contained::describe(), which is supposed to
return information about the element. In the basic IFR, this data is
designed to contain all possible information about that type. This
is very convenient, since then a map mapping RepositoryIds to
Contained::Description contains all of the IFR's information.By referring to InterfaceDefs rather than RepositoryIds, the client
will need to store that association elsewhere, or repeatedly invoke
the Interface Repository.Suggested resolution:
- In ProvidesDescription, replace
InterfaceDef interface_type
with
RepositoryId interface_type
- Ditto for UsesDescription
- In EventDescription, replace
ValueDef event
with
RepositoryId event
- In ComponentDescription, replace
ProvidesDefSeq provides_interfaces
UsesDefSeq uses_interfaces
EmitsDefSeq emits_events
PublishesDefSeq publishes_events
ConsumesDefSeq consumes_events
with
ProvidesDescriptionSeq provides_interfaces
UsesDescriptionSeq uses_interfaces
EmitsDescriptionSeq emits_events
PublishesDescriptionSeq publishes_events
ConsumesDescriptionSeq consumes_events
- In PrimaryKeyDescription, replace
ValueDef primary_key
with
RepositoryId primary_key
- In HomeDescription, replace
PrimaryKeyDef primary_key_def
FactoryDefSeq factories
FinderDefSeq finders
with
PrimaryKeyDescription primary_key
OpDescriptionSeq factories
OpDescriptionSeq finders
Next, all parts of the "basic" Interface Repository are mutable, but
most attributes of the Components interfaces are declared as readonly.
I propose to remove the readonly modifier from- ProvidesDef::interface_type
- UsesDef::interface_type
- UsesDef::is_multiple
- EventDef::event
- ComponentDef::supported_interfaces
- ComponentDef::base_component
- ComponentDef::provides_interfaces
- ComponentDef::uses_interfaces
- ComponentDef::emits_events
- ComponentDef::publishes_events
- ComponentDef::consumes_events
- PrimaryKeyDef::primary_key
- HomeDef::base_home
- HomeDef::managed_component
- HomeDef::primary_key
- HomeDef::factories
- HomeDef::finders
Last but not least, there seems to be some confusion about Primary Keys.
When a Home is created with Repository::create_home, a ValueDef should
be passed, while the terminology seems to dictate a PrimaryKeyDef instead.
You can get a PrimaryKeyDef using HomeDef::create_primary_key, but that
would be a chicken-egg scenario.Proposed resolution:
- Change the ValueDef in Repository::create_home to PrimaryKeyDef
- Move the create_primary_key() operation from HomeDef to Repository
- In ProvidesDescription, replace
-
Reported: CORBA 2.4.1 — Fri, 5 Jan 2001 05:00 GMT
-
Disposition: Resolved — CORBA 2.6.1
-
Disposition Summary:
see below
-
Updated: Fri, 6 Mar 2015 20:58 GMT