-
Key: CORBA35-120
-
Legacy Issue Number: 9140
-
Status: open
-
Source: Progress Software ( Steve Vinoski)
-
Summary:
Regarding the base_interfaces attribute of the Interface Repository
(IFR) InterfaceDef and the ExtInterfaceDef interfaces, the CORBA spec
has only this to say:"The base_interfaces attribute lists all the interfaces from which
this interface inherits."Does that sentence mean that the base_interfaces attribute lists only
immediate base interfaces, or does it list all base interfaces,
i.e., the transitive closure of the inheritance graph (minus the
implied Object interface at the root)? I believe it is supposed to be
a list of only immediate interfaces, as one can make further calls on
the IFR to obtain more information about those bases, including
their bases.However, both the FullInterfaceDescription and the
ExtFullInterfaceDescription structures also have a base_interfaces
member, which is specified as a sequence of repository IDs.
Unfortunately, the specification contains no description whatsoever
for this member. I argue that unlike the base_interfaces attribute
described above, this member can't list only the immediate base
interfaces.I believe that the base_interfaces member of the
FullInterfaceDescription and the ExtFullInterfaceDescription
structures should contain the transitive closure of all base
interfaces. These structures are intended to supply full interface
descriptions, after all. Specifying the base_interfaces as I suggest
would match the operations and attributes fields of the same structs,
which are already explicitly specified to contain all operations and
attributes respectively from the transitive closure of the
inheritance graph. Note also that if base_interfaces does not contain
the transitive closure of all base interfaces, there's no way to
obtain the information from TypeCodes, since names do not appear in
TypeCodes in minimum CORBA.I therefore propose that the third paragraph of section 10.5.24.1 of
CORBA 3.0.2 be changed from this:"The describe_interface operation returns a FullInterfaceDescription
describing the interface, including its operations and attributes.
The operations and attributes fields of the FullInterfaceDescription
structure include descriptions of all of the operations and
attributes in the transitive closure of the inheritance graph of the
interface being described."to add a sentence defining the base_interfaces member, like this:
"The describe_interface operation returns a FullInterfaceDescription
describing the interface, including its operations and attributes.
The operations and attributes fields of the FullInterfaceDescription
structure include descriptions of all of the operations and
attributes in the transitive closure of the inheritance graph of the
interface being described. The base_interfaces field of the
FullInterfaceDescription structure includes the repository IDs of all
the base interfaces in the transitive closure of the inheritance
graph of the interface being described, except for the repository ID
of the implied Object base interface."Note that even if this change is made, the base_interfaces attribute
of InterfaceDef and ExtInterfaceDef can (and should) remain as
listing only immediate bases, assuming that's what the spec's
original intent was. -
Reported: CORBA 3.0.3 — Mon, 7 Nov 2005 05:00 GMT
-
Updated: Wed, 1 Feb 2023 21:59 GMT
CORBA35 — FullInterfaceDescription and base_interfaces question
- Key: CORBA35-120
- OMG Task Force: CORBA 3.5 RTF