-
Key: CORBA34-16
-
Legacy Issue Number: 6671
-
Status: closed
-
Source: Humboldt-Universitaet ( Bertram Neubauer)
-
Summary:
According to the IDL language it is allowed to define a facet/receptacle on a component with type of Object. The text says:
A facet is declared with the following syntax:
(120) <provides_dcl> ::= “provides” <interface_type> <identifier>
(121) <interface_type> ::= <scoped_name>“Object”
The interface type shall be either the keyword Object, or a scoped name that denotes
a previously-declared interface type which is not a component interface, ...In contradiction to that the Interface Repository element for a component, the ComponentDef, does only allow the creation of facets/receptacles with type of InterfaceDef. The according operations are:
// write interface
ProvidesDef create_provides (
in RepositoryId id,
in Identifier name,
in VersionSpec version,
in InterfaceDef interface_type
);
UsesDef create_uses (
in RepositoryId id,
in Identifier name,
in VersionSpec version,
in InterfaceDef interface_type,
in boolean is_multiple
);Thus the ComponentDef can not be used to create a facet/receptacle that is of type Object, since Object is no InterfaceDef but a PrimitiveDef.
One solution would be to use IDLType instead of InterfaceDef since PrimitiveDef and InterfaceDef inherit from that interface. My proposal is to change the Interface Repository IDL in the following way.1) replace in ComponentDef:
// write interface
ProvidesDef create_provides (
in RepositoryId id,
in Identifier name,
in VersionSpec version,
in IDLType interface_type
);
UsesDef create_uses (
in RepositoryId id,
in Identifier name,
in VersionSpec version,
in IDLType interface_type,
in boolean is_multiple
);2) replace ProvidesDef, ProvidesDecsription, UsesDef, UsesDescription with
interface ProvidesDef : Contained
{ // read interface readonly attribute IDLType interface_type; };
struct ProvidesDescription
{ Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; IDLType interface_type; };
interface UsesDef : Contained
{ // read interface readonly attribute IDLType interface_type; readonly attribute boolean is_multiple; };
struct UsesDescription
{ Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; IDLType interface_type; boolean is_multiple; };
-
Reported: CORBA 3.0.2 — Wed, 3 Dec 2003 05:00 GMT
-
Disposition: Deferred — CORBA 3.4
-
Disposition Summary:
Deferred
This proposal was generated automatically by request of the Task Force Chair Adam Mitz.
-
Updated: Wed, 1 Feb 2023 21:58 GMT
CORBA34 — [Components] Contradiction between IDL and Interface Repository concerning
- Key: CORBA34-16
- OMG Task Force: CORBA 3.4 RTF