Issues for Mailing ist of the MOF2 IDL Finalization Task Force

To comment on any of these issues, send email to mof2idl-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.

List of issues (green=resolved, yellow=pending Board vote, red=unresolved)

List options: All ; Open Issues only; or Closed Issues only

Issue 7591: Rule (11) and (12)
Issue 7639: section 7.3, p.44, example IDL
Issue 7640: section 6.3.3, p.31, example IDL
Issue 7653: Section: 8.2.2;8.2.6
Issue 7677: Rule (26):
Issue 7678: Rule (27)
Issue 7679: Section 7.6.3
Issue 7680: Section 7.4;
Issue 7681: Rule (38):
Issue 7682: Rule (35):
Issue 7750: Rule (26) p. 21
Issue 7751: Rule (27) p. 21
Issue 7752: Section 7.6.3 pp. 59,60
Issue 7753: Section 7.4 pp. 49,50
Issue 7754: Rule (38) p. 30
Issue 7755: factory create_<component_name> ();
Issue 8504: Remove FTF comments
Issue 8505: CMOF::Exception class is no longer in MOF2.0
Issue 9148: References to other specification documents are not up to date
Issue 9149: Not all assumptions of MOF2.0 Core do hold
Issue 9150: Subsection 6.2.1 (Mapping of Identifiers) should be independent of MOF1.4
Issue 9151: specification should throughout be discretely divided into EMOF and CMOF
Issue 9152: Align MOFObject to MOF2.0 Core
Issue 9153: Remove the Common suffix from the interface names in the common mapping
Issue 9154: Align Handling of Collections to MOF2.0 Core
Issue 9155: Example 4 is not totally consistent with rules (35) and (36).
Issue 9156: Numbering and references to examples are not consistent
Issue 9157: Some referenced sections do not exist
Issue 9158: Rule (50) is not applied in example (12).
Issue 9159: Clarify the Extents concept in the mapping
Issue 9160: RefCCMBaseObject and RefBaseObject
Issue 9161: names of the factory create operations
Issue 9162: Align CCM Reflection Mapping to MOF2.0 Core
Issue 9163: Align Base-IDL Reflection Mapping to MOF2.0 Core
Issue 9164: RefObject::ref_get (PropertyName) specified on page 67
Issue 9165: Align reflective argument passing in EMOF to CMOF
Issue 9166: Semantic of reflective operations should match MOF2.0 Core
Issue 9167: "set" operation for derived attributes
Issue 9168: Align mapping of tags to MOF2.0
Issue 9169: Mapping of subsetted properties do not need to change name of operation
Issue 9170: Editorial issue(s)
Issue 9175: Resolution of issue 9154 does not work for primitives

Issue 7591: Rule (11) and (12) (mof2idl-ftf)

Click here for this issue's archive.
Source: Humboldt-Universitaet (Mr. Mario Winkler, )
Nature: Uncategorized Issue
Severity:
Summary:
In my opinion it has to be stated in Rule (11) and (12) that getter and setter operations are only generated for non-derived attributes.

Resolution:
Revised Text: This change would imply that no operations are available in IDL for derived attributes. As a consequence a repository client has no chance to retrieve or change the state of the derived attribute. Since the semantic of derived attributes means that its value can be calculated from other elements' state, only a "get" operation seems to be useful. In the same rule, the formulation about the unset operation is misleading. For derived attributes, only the "get" operation shall be generated according to Rule(11) and (12), since the attributes state is implied by other elements in a metamodel. Furthermore, the definition of the unset operation should be made more explicit. Revised Text: Replace Rule(12) on page 17 with the following: For a non-derived attribute with multiplicity [1..1], two operations to set and get the attributes value are declared - taking into account Rule (11). In case of attributes that have the isDerived property set to true only the get operation is generated. For optional attributes with a multiplicity of [0..1], an additional operation to unset the attribute is declared. The operation to get the value of the attribute has the name concatenate ( "get_", format_2 ( <attribute identifier> ) ). The return type is the IDL type generated for the attribute's type in the model. The operation to set the value has the name concatenate ( "set_", format_2 ( <attribute identifier> ) ). The operation has one parameter of the IDL type generated for the attribute's type in the model. For optional attributes the unset operation receives the name concatenate ( "unset_", format_2 ( <attribute identifier> ) ).
Actions taken:
July 15, 2004: received issue
August 1, 2005: closed issue

Issue 7639: section 7.3, p.44, example IDL (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
 forward declared exception (MofError)
        
        For now I have instead forward declared MOFObject so I can
        fully define MofError before the full definition of MOFObject.


                abstract valuetype (MOFState) has a state member
        
        For now I have removed the 'abstract' qualifier.



Resolution:
Revised Text: Resolution: The abstract modifier of MOFState is in principle wrong and should be removed. This change also resolves issue 7653, since then all derived valuetypes can be declared as "truncatable". Revised Text: This issue is resolved by changing the definition of valuetype MOFState to: valuetype MOFState supports MOFObject { private MOFObject origin; }; This change effects the following section in the specification document: · Section 6.2.2. IDL excerpt must be as described above · Section 7.3: the definition must be changed as described above. This resolution also resolves issue 7653
Actions taken:
August 19, 2004: received issue
August 1, 2005: closed issue

Issue 7640: section 6.3.3, p.31, example IDL (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
section 6.3.3, p.31, example IDL
        The operations shown in the example for mapping of
        associations don't seem to gibe with the operations
        described section 7.6.3, pp.59-61.




The CCM version of the mapping has components supporting abstract
interfaces. There is some discussion where I work about whether
or not this will have dire consequences. Such a case was throwing
an error in our IDL compiler - someone must have thought it was
a no-no. For the record, it seems ok to me for components to do
this, but I wanted to get some more input on the matter. I guess
it boils down to the question of whether it would ever be 
necessary to narrow to a component's supported interface, or to
pass one over the wire as a CORBA::Object.


Resolution:
Revised Text: Resolution: This issue addresses a "forgot-to-change" bug in the final submission document. Revised Text: Change the example IDL to: module MyPackage { abstract interface ACommon : MOFObject {}; abstract interface BCommon : MOFObject {}; struct ABLink { ACommon the_a; BCommon the_b; }; typedef sequence < ABLink > ABLinkSet; abstract interface ABCommon : MOFObject { ABLinkSetIterator all_ab_links() raises (MofError); void create_link_in_ab( in ABLink new_link ) raises (MofError); boolean link_exists( in ABLink link ) raises (MofError); void remove_link( in ABLink link ) raises (MofError, NotFound); BCommon linked_objects_the_a( in A the_a ) raises (MofError); ACommon linked_objects_the_b( in B the_b ) raises (MofError); }; valuetype ABState : truncatable MOFState supports ABCommon { private ABLinkSet ab_links; }; component AB supports ABCommon { attribute ABState ab_state; }; };
Actions taken:
August 19, 2004: received issue
August 1, 2005: closed issue

Issue 7653: Section: 8.2.2;8.2.6 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Humboldt-Universitaet (Mr. Mario Winkler, )
Nature: Clarification
Severity: Critical
Summary:
In Rule (9) it is stated that the created valuetype which inherits from the abstract valuetype MOFState is truncatable. But according to the CORBA Specification it is not allowed to declare a valuetype as truncatable if it is derived from an abstract valuetype. The base type has to be non-abstract.

Resolution:
Revised Text: Resolution: This issue is definitely a bug that was overseen in the specification. In conjunction with issue 7639 the simplest solution is to make the MOFState valuetype non-abstract. The MOFState valuetype is no longer "abstract" as consequence of resolution of issue 7639.
Actions taken:
September 1, 2004: received issue
August 1, 2005: closed issue

Discussion:


Issue 7677: Rule (26): (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
I assume the <association_name>Link struct member
names will be in correspoding format_2, but it
should probably be stated explicitly.

Resolution:
Revised Text: Resolution: This assumption is correct and the specification must be changed accordingly. In conjunction with issue 7750 the specification of the members' types need also to be added. Revised Text: Change Rule(26) on page 21 into: Furthermore, an IDL struct for the link-set is derived for an association with name concatenate ( format_1 ( <association name> ), "Link" ). This struct contains two members of type of the association's ends' derived abstract (common) interfaces with the same name as the association end (in format_2). The type of the members is set to the abstract interfaces derived according to Rule(8). Furthermore, a typedef sequence of type <association-name>Link with name <association-name>LinkSet for the link-set is also generated.
Actions taken:
September 6, 2004: received issue
August 1, 2005: closed issue

Issue 7678: Rule (27) (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
I assume that the identifiers for the members of
the <association_name>State valuetype will be the
type name in format_2, but it should probably be
stated explicitly

Resolution:
Revised Text: Resolution: A valuetype that is derived for an association contains only a single (private) member of type of the associations's link struct as IDL sequence. This sequence is derived in rule 26 and reflects the state of the whole association's link set. However the missing statement in rule 27 is about the format of this member and therefore the issue is justified. Revised Text: Change IDL generation Rule (27) on page 21 to make the member specification clearer as follows. Note that this resolution addresses also issue 7751 (which is actually no bug in the specification). Rule(27) Additionally, a CORBA valuetype is derived with identifier concatenate ( format_1 ( <association name> ), "State" ), inheriting from MOFState (truncatable) and supporting the abstract interface derived for the association according to Rule (25). This valuetype contains one private member of type of the link-set's collection type (cp. Rule (26)), i.e. the sequence of derived link structs <association_name>LinkSet. The name for this member is concatenate( format_2 (<association_name> ), "_links" ).
Actions taken:
September 6, 2004: received issue
August 1, 2005: closed issue

Issue 7679: Section 7.6.3 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
The wording causes confusion about what the exception
behavior is if the association ends are not derived
unions

Resolution:
Revised Text: Resolution: The "create_link_in" and "remove_link"operations make explicit statements only in case if the association end are derived unions. Section 7.6.3. should also make a statement about the other cases (for non-unions). Revised Text: We need to add more details on the exceptional cases for non-derived unions, i.e. the DUPLICATE_VIOLATION error_kind constant should be raised in MofError in case the link already exists. · For the "create_link_in" operation on page 59 we need to change the exception subsection to: If the link new_link passed as parameter does already exists in the link set the operation raises a MofError with DUPLICATE_VIOLATION indicating the error. If the association specifies an end as derived union (isDerivedUnion = true), the create_link operation raises a MofError exception with ADD_LINK_TO_UNION_VIOLATION. · For the "remove_link" operation on page 60, the text for the exceptions must be altered to: If link does not exists, the operation raises a NotFound exception. In case of a union end, the operation raises the MofError exception with REMOVE_LINK_FROM_UNION_VIOLATION.
Actions taken:
September 6, 2004: received issue
August 1, 2005: closed issue

Issue 7680: Section 7.4; (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
MofError's error_kind and error_description
members are wstrings, yet the string constants
defined in this section (and which are I
assume intended for use as values for one or
both of these members) are strings.

Resolution:
Revised Text: Resolution: This was a bug that originates from the MOF1.4 specification where the same problem persists through several versions of the MOF-to-IDL specification. The solution to this issue is to simply re-type the member error_kind in MofError from wstring to a normal CORBA string. Apply the same to the error_description member. Revised Text: Change section 7.4 (page 50) from: exception MofError { wstring error_kind; MOFObject element_in_error; NamedValueList extra_info; wstring error_description; }; to: exception MofError { string error_kind; MOFObject element_in_error; NamedValueList extra_info; string error_description; }; Change section 6.2.10 (page 20/21) accordingly into: exception MofError { string error_kind; MOFObject element_in_error; NamedValueList extra_info; string error_description; };
Actions taken:
September 6, 2004: received issue
August 1, 2005: closed issue

Issue 7681: Rule (38): (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
The CCM mapping for an Association specifies the
suffix "Component" for the derived component.
None of the other derived components in the CCM
mapping have this suffix, and it also disagrees
with some example IDL in the document.



Resolution:
Revised Text: Resolution: This observation is correct and Rule (38) should be changed accordingly. Moreover, the specification deliberately omits the definition of a home interface, since all components representing associations are reachable over the package interface. However, there remains still a conflict in rule (40) (package interface), which states that the package's (abstract) interface has an operation to navigate to the (non-existing) Home interface of a contained association. This must be changed accordingly to be able to navigate from the package directly to the association's derived component. The same applies to nested packages, which also have no home interface (they are created together with the root package). Revised Text: Change rule (38) on page 30 into: If an association is mapped to IDL, a component declaration with the name format_1 ( <association identifier> ) is being generated, which declares to support the abstract interface produced by Rule (25). Change rule (40) on page 33 into: A package definition in a MOF model is mapped to an IDL abstract interface definition with the name concatenate ( format_1 ( < package identifier> ), "Package" ) . For each contained class an operation is defined within this abstract interface named format_2 ( <class identifier> ) with the return type concatenate ( format_1 ( <class identifier> ), "Home" ). The operations have no parameters and return the corresponding home interfaces for the classes. Furthermore, the package's abstract interface contains operations for each owned package or association with name format_2( <package or association identifier> ). The return type of these operations is the corresponding abstract interface derived for a package or association (see rule (25)). Change rule (41) on page 33 into: Furthermore, a component with the name format_1 ( < package identifier> ) is generated supporting the produced abstract interface. If the package is the outermost package (in case of package merge this is the result of the merge), a home definition is produced named concatenate ( format_1 ( < package identifier> ), "Home" ) that manages the component.
Actions taken:
September 6, 2004: received issue
August 1, 2005: closed issue

Issue 7682: Rule (35): (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
The home factory operation 'create_<class identifier>'
has the same signature as the 'create' operation
defined by the CCM spec in the implied-IDL
<class identifier>HomeImplicit interface, and for
this reason it seems redundant.


Resolution:
Revised Text: Resolution: Indeed, the default create operation is redundant with the CCM specification's implicit create operation (except that it has a different name). We can omit the generation of the default create operation since it exists implicitly. Revised Text: Change the specification document as follows: Adapt rule (35) in section 6.3.1 on page 26 to: If the class in the model is not abstract, a home interface declaration for the component with the name concatenate ( format_1 ( <class identifier> ), "Home" ) is being generated, managing the component generated following Rule (33). Change the example (3) IDL accordingly (also page 26): module MyPackage { // Common Mapping: abstract interface MyClassCommon : MOFObject { }; valuetype MyClassState : truncatable MOFState supports MyClassCommon { }; // CCM Mapping: component MyClass supports MyClassCommon { attribute MyClassState my_class_state; }; home MyClassHome manages MyClass { }; };
Actions taken:
September 6, 2004: received issue
August 1, 2005: closed issue

Issue 7750: Rule (26) p. 21 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
Although I see the member types for the *Link struct 
specified, I don't see anything about the member names.
Are they specified somewhere else? How are they to be
derived?

Resolution:
Revised Text: Resolution: The members of the link struct should be of type of the abstract interfaces derived for the associated classes. This issue is resolved together with the resolution of issue 7677.
Actions taken:
August 27, 2004: received issue
August 1, 2005: closed issue

Issue 7751: Rule (27) p. 21 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
Same as above, for members of the valuetype *State,
mapped from an Association

Resolution:
Revised Text: Resolution: The type of the member in the valuetype of an association is the sequence of link structs derived according to rule (26). This is already described by the specification but has been made more explicit in conjunction with the change for issue 7678. Resolution: The specification of rule 27 was rewritten for issue 7678 to point out more explicitly the type of the member
Actions taken:
August 27, 2004: received issue
August 1, 2005: closed issue

Issue 7752: Section 7.6.3 pp. 59,60 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
With regard to the operations 'create_link_in_<association_name>'
and 'remove_link', the Exception paragraphs contain information
only about the case where association ends are defined as
derived unions. It's not clear what the behavior is otherwise.


Resolution:
Revised Text: Resolution: This is a duplicate of issue 7679. Already resolved as issue 7679.
Actions taken:
August 27, 2004: received issue
August 1, 2005: closed issue

Issue 7753: Section 7.4 pp. 49,50 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
The type of MofError::error_kind and MofERror::error_description
(section 6.2.10 p. 20 & section 7.4 p. 50) are both wstring,
but there is also a list of IDL string constants (section 7.4
p. 49). How are the constants to be used? Are they to be passed 
as one of MofError's wstring members? If so, how come the type
mismatch?

Resolution:
Revised Text: Resolution: This is a duplicate of issue 7680 See issue #7680
Actions taken:
August 27, 2004: receiuved issue
August 1, 2005: closed issue

Issue 7754: Rule (38) p. 30 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
The CCM component mapping for an Association has the suffix
"Component", unlike any of the the other component mappings
in the document. That's a little puzzling. Also, no details
are given about the corresponding home mapping. How is its
type name derived? Does it have the same factory operations as
the other CCM home mappings in the document?

Resolution:
Revised Text: Resolution: This issue was a follow up of issue #7681 and is discussed and resolved in conjunction with that issue. Resolution of issue #7681 also resolves this issue.
Actions taken:
August 27, 2004: received issue
August 1, 2005: closed issue

Issue 7755: factory create_<component_name> (); (mof2idl-ftf)

Click
here for this issue's archive.
Source: Vanderbilt University (Mr. Jeffrey Parsons, j.parsons(at)vanderbilt.edu)
Nature: Uncategorized Issue
Severity:
Summary:
The first factory operation described for homes


factory create_<component_name> ();


has the same signature as the create() method generated from
the 'implied IDL' *HomeImplicit interface. The implied IDL
*Home interface inherits from *HomeImplicit, so it seems
we already have an operation in the equivalent home interface
that is doing the same thing as the declared factory operation.

Resolution:
Revised Text: Resolution: This is a duplicate of issue 7682 See issue #7682
Actions taken:
August 31, 2004: received issue
August 1, 2005: closed issue

Issue 8504: Remove FTF comments (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The current specification document ptc/04-07-01 still contains the
submission notes for the FTF provided as guidance by the submitters. We need
to remove them from the specification document.

Resolution:
Revised Text: Resolution: This issue just cleans up the document and removes irrelevant and out-dated comments of the submitters. Revised Text: Remove FTF notes 1 to 23 and other review comments from the specification document. The changes that must be performed on the document are: · Remove comment in section 5.4 on page 9: Review comment from Pete Rivett: "This integration/service strategy is exactly the point of the Facility Spec." - Yes, we totally agree. Our point here is to remind that in many cases a version change in general could lead to changes in the technology mapping and that the technology mappings should be prepared to "react" on these changes. · Remove FTF Note 1 in section 6.2.8 on page 18 · Remove FTF Note 2 in section 6.2.8 on page 19 · Remove FTF Note 3 in section 6.2.8 on page 19 · Remove FTF Note 4 in section 6.2.10 on page 21 · Remove FTF Note 5 in section 6.2.10 on page 21 · Remove FTF Note 6 in section 6.2.12 on page 23 · Remove FTF Note 7 in section 6.2.12 on page 24 · Remove FTF Note 8 in section 6.2.14 on page 25 · Remove FTF Note 9 in section 6.2.15 on page 25 and change the reference to this note in the line before to: § Extents and URIExtents are not mapped to IDL. · Remove FTF Note 10 in section 6.3.3 on page 32/33 · Remove FTF Note 11 in section 6.3.5 on page 34 · Remove FTF Note 12 in section 6.3.8 on page 36 · Remove FTF Note 13 in section 6.4.1 on page 38 · Remove FTF Note 14 in section 6.4.2 on page 38 · Rename FTF Note 15 in section 7.1 on page 42/43 into a "normal" textual note: Note: Note for clarification of the notion of Extents in the MOF-IDL mapping. […] · Remove FTF Note 16 in section 7.2 on page 44 · Remove FTF Note 17 in section 7.5.1.1 on page 50 · Remove FTF Note 18 in section 7.7 on page 63 · Remove FTF Note 19 in section 8 on page 65 · Remove FTF Note 20 in section 8.1.1 on page 69 · Remove FTF Note 21 in section 8.1.1 on page 69 · Remove FTF Note 22 in section 8.2 on page 76 · Remove FTF Note 23 in section 8.3.2 on page 78
Actions taken:
March 7, 2005: received issue
August 1, 2005: closed issue

Issue 8505: CMOF::Exception class is no longer in MOF2.0 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The current specification assumes the existence of a CMOF::Exception class
which was in the MOF2.0 Core submission document but removed during
finalization. Rule (23) on page 21 still refers to this class.

Resolution:
Revised Text: Revised Text: Remove rule(23) from the specification and renumber all following rules. Changes to the document (except re-numbering): remove rule(23) in section 6.2.10 on page 21: Rule (23) Every instance of the CMOF::Exception class (defined in CMOFReflection) maps to an IDL exception declaration with identifier format_1 ( <exception name>). If an operation raises this exception (see FTF Note 4), an entry is added to its raises clause
Actions taken:
March 7, 2005: received issue
August 1, 2005: closed issue

Discussion:
Discussion:
The removal of the CMOF::Exception class has only little impact on the IDL mapping. We can easily remove rule (23) from the specification. Moreover, FTF Note 4 (p. 21) has already pointed out the problem in using this class in MOF.


Issue 9148: References to other specification documents are not up to date (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Throughout the current specification ptc/05-03-05, references are made to other specifications which are not up to date. References to submission documents should be updated to their respective adopted documents and the affected sections should be corrected too. The specification should avoid making references directly to UML Specifications but rather to the MOF2.0 Core specification which in turn makes the appropriate references to UML.

Resolution:
Revised Text: Resolution: The reference (cp. 5.1.2) in section 5.3.1 on page 3 was deleted. In section 1 (Scope), page 1, the statement: "The mapping rules basically depend on the state of the MOF2.0 document [6] and the U2P UML Infrastructure [9]" was changed to: "The mapping rules basically depend on the state of the MOF2.0 document [6]" The name of the document [6] on page 85 should then be changed to "MOF2.0 Core Specification, OMG document ptc/04-10-15". In section 2 (Conformance), page 1, the statement: "An implementation that confirms to the MOF 2 IDL specification must conform to one of these compliance points in MOF 2 Core (ptc/03-10-04) …" was changed to: "An implementation that confirms to the MOF 2 IDL specification must conform to one of these compliance points in [6] …" In section 3 (Normative Reference), page 1, the statement: "Object Management Group, MOF 2.0 Core Final Adopted Specification, ptc/03-10-04 should later be changed to the final adopted specification replacing ptc/04-10-15. was changed to: Object Management Group, MOF 2.0 Core Adopted Specification, ptc/04-10-15. In section 3 (Normative Reference), page 1, the statement: "…, there might occur inconsistencies with respect to these documents." was changed to "…, inconsistencies might occur with respect to these documents." In section 6.2.3 (Mapping of the PrimitiveType Package), page 13, the statement: "This is aligned with the constraints of CMOF as described in section 9.4 of [8] (CMOF Constraints) for the primitive types." was changed to: "This is aligned with the constraints of CMOF as described in section 14.3 of [6] (CMOF Constraints) for the primitive types." The name of the document [6] on page 85 had to be changed to "MOF2.0 Core Specification, OMG document ptc/04-10-15".
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9149: Not all assumptions of MOF2.0 Core do hold (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The current specification ptc/05-03-05 makes assumptions of the MOF2.0 Core specification which do not longer holder in ptc/04-10-15. It would be better to refer to the applicable MOF2.0 Core specification and only add text or diagrams that help to clarify some unobvious concepts in MOF2.0 Core.


Resolution:
Revised Text:
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
Resolution:
The first paragraph of chapter 5 (methodology) on page 3 was modified from
This chapter describes the submitters' approach for the MOF 2.0 IDL language mapping and assumptions about the MOF model. Due to the fact that the mapping is strongly dependent on the MOF 2.0 Core and other currently ongoing RFP processes (such as MOF2.0 QVT RFP [4] MOF2.0 Versioning and Development Lifecycle RFP [5]…), this specification follows its own approach for the definition of the language mapping and outlines the vision, how this language mapping will fit in emerging standards and OMG's MDA (for a detailed specification refer to chapters 6 and 7).
to
This chapter describes the submitters' approach for the MOF 2.0 IDL language mapping. Due to the fact that the mapping is strongly dependent on the MOF 2.0 Core and other currently ongoing RFP processes (such as MOF2.0 QVT RFP [4] MOF2.0 Versioning and Development Lifecycle RFP [5] etc), recent results of these specifications could not be reflected in this mapping..
Delete subsection 5.2 (Assumptions of MOF2.0 Core), page 3 and adjust the numbering of the following subsections.
Subsection 5.2 (Assumptions of MOF2.0 Core), page 3 was deleted.
The first paragraph of subsection 5.3.2 on page 3 was altered.
Modify subsection 5.3.2 (MOF Model), page 5 the following way: Instead of explaining what is already explained in ptc/04-10-15, the complete EMOF and CMOF Models' overview class diagrams lacking in ptc/04-10-15 should be shown here, so that the reader must not put this together himself to get the big picture.
Title of subsection 5.3.2 was from "MOF Model" to "The MOF Model", its text modified from
The core-mapping is a revised version of the current IDL mapping introducing abstract interfaces and valuetypes. It is based on the elements imported from UML 2 InfrastructureLibrary (from U2P adopted document [9]) Core packages combined into the EMOF and CMOF packages (cp. [8]).
The EMOF and CMOF packages are constructed by the deep-copy merge algorithm described in [8], section 9 (PackageMerge::define). The resulting modeling elements are listed below. A proposed mapping onto IDL elements is provided later in this specification in chapters 6 and 7.
 To
The MOF Model as described in [6] is devided into EMOF and CMOF packages constructed by means of package merge. The resulting EMOF model is shown below for convenience. For CMOF, refer to [6]. A proposed mapping onto IDL elements is provided later in this specification in chapters 6 and 7.
NOTE: The EMOF class diagrams is included for convenience here. In case of any inconsistencies with the MOF2.0 Core Specification, see chapter 3, page 1 for the valid normative reference.
and the class diagram for EMOF was introduced.


Issue 9150: Subsection 6.2.1 (Mapping of Identifiers) should be independent of MOF1.4 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
In subsection 6.2.1 the current specification ptc/05-03-05 makes references to the MOF1.4 Specification, ptc/01-10-04 forcing the reader to refer to that document. I think the specification should rather just mention that mapping of identifiers has been carried over from MOF1.4 and outline the mapping rules in detail here again.

Resolution:
Revised Text:
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
Resolution:
Outline what format_1, format_2 and format_3 produce.
Format 1 text changed to
identifier format_1 ( <MOF model element identifier> ) returns an identifier for an IDL definition according to 5.7.1.2 of [1]. In format 1, the first letter of each word is converted into upper case, and all other letters remain the same as input. It is used to produce names of modules and interfaces.
Format 2 text changed to
identifier format_2 ( <MOF model element identifier> ) returns an identifier for an IDL definition according to 5.7.1.3 of [1]. In format 2, all letters in each word are converted to lower case and all words are separated by an underscore ("_"). It is used to produce names of attributes, operations and formal parameters and members of structured data types.
Format 3 text changed to
identifier format_3 ( <MOF model element identifier> ) returns an identifier for an IDL definition according to 5.7.1.4 of [1]. In format 3, all letters in each word are converted to upper case and all words are separated by an underscore ("_"). It is used to produce names of constants.
For the resolution of a name in the target IDL, basically the naming conventions of MOF1.4 are reused (interfaces, that are derived for a class, receive an identifier in format 1, operations in format 2 and so on). For details see the following sections.
was changed to
Table 1 on page 13 on page   Error! Bookmark not defined. shows some examples.
an tabular example was introduced.


Issue 9151: specification should throughout be discretely divided into EMOF and CMOF (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Since there are two compliance points, EMOF and CMOF, and the mapping is divided into Common, CCM and Base-IDL mapping, the sections and subsections in the document should discretely reflect this consistently.

Resolution:
Revised Text:
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
Resolution:
Section 6 should therefore have the following structure (starting from subsection 6.2):
Subsection 6.2: General Mapping Rules
		6.2.1 Mapping of Identifiers (same as before)
		6.2.2 Globals (same as before)
		6.2.3 Mapping of the PrimitiveType Package (same as before)
		6.2.4 Mapping of Collections (MultiplicityElement) (same as before)
Subsection 6.3: EMOF Mapping Rules
		6.3.1 EMOF Common Mapping
			subsections for mapping of the various modeling constructs
		6.3.2 EMOF CCM Mapping
			subsections for mapping of the various modeling constructs
		6.3.3 EMOF Base-IDL Mapping
subsections for mapping of the various modeling constructs
Subsection 6.4: CMOF Mapping Rules
		6.4.1 CMOF Common Mapping
			subsections for mapping of the various modeling constructs
		6.4.2 CMOF CCM Mapping
			subsections for mapping of the various modeling constructs
		6.4.3 CMOF Base-IDL Mapping
			subsections for mapping of the various modeling constructs
Section 7 should also be aligned in this manner.
Subsection 8.1: EMOF Reflective
		8.1.1 EMOF Base-IDL Reflective
8.1.2 EMOF CCM Reflective
Subsection 8.2: EMOF Reflective
		8.2.1 EMOF Base-IDL Reflective
8.2.2 EMOF CCM Reflective
Done. References to other appropriate sections were included in sections which do not introduce any new mapping rules
introduced in section 6.2:	
The general mapping rules apply to both EMOF and CMOF mappings. They concerntrate on aspects that are specific to neither EMOF and CMOF such as formatting of identifiers, global interfaces and mapping of primitive types.
In section 6.2.8
We refer to the type of an operation or attribute as the type that is derived for that element (common interface, primitive type, or data types). Moreover, we do not distinguish navigable association ends and attributes of type class (cp. to UML2 Infrastructure and see discussion in 5.2.11 and Navigability and owned Properties).
was modified to
We refer to the type of an operation or attribute as the type that is derived for that element (common interface, primitive type, or data types).
In section 6.4
Apart from the component mapping, this section provides the opportunity of a true Base-IDL mapping to cope with non-component environments and MOF1.4 clients. It must be stressed, that this mapping is an alternative mapping to CCM - since several names and interfaces collide with definitions for the CCM - and we do not believe that the equivalent IDL suffices usability needs. Moreover, the submitters prefer the CCM mapping approach.

modified to

Apart from the component mapping, this section provides the opportunity of a true Base-IDL mapping to cope with non-component environments and MOF1.4 clients. It must be stressed, that this mapping is an alternative mapping to CCM - since several names and interfaces collide with definitions for the CCM.



Issue 9152: Align MOFObject to MOF2.0 Core (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The Object metaclass defines the base for all classes in a MOF metamodel. The same role is played by the MOFObject interface which was introduced to have a common base type in IDL for all kinds of derived interfaces. The is_equals() operation in the MOFObject interface should be renamed to equals() to match the equals operation in MOF2.0.

Resolution:
Revised Text:
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
The MOFObject interface declaration on page 13 should now be:
abstract interface MOFObject{
	boolean equals( in MOFObject other_object)
	//the rest as before
}

done
The IDL for MOFObject in section 7.3 was changed from

abstract interface MOFObject {
     MofId get_mof_id () raises (MofError);
     boolean is_equal ( in MOFObject other_object )
				raises (MofError);
     void delete () raises (MofError);
     MofErrorBagIterator verify( in unsigned long depth )
				raises (MofError);

     void set_value_depth( in unsigned long depth )
				raises (MofError);
     unsigned long get_value_depth ()
				raises (MofError);

     void set_call_semantic( in boolean as_value )
				raises (MofError);
     boolean get_call_semantic ()
				raises (MofError);
  };
to
abstract interface MOFObject {
     MofId get_mof_id () raises (MofError);
     boolean equals ( in MOFObject other_object )
				raises (MofError);
     void delete () raises (MofError);
     boolean verify( in wstring ocl_expr )
				raises (MofError);
     void set_value_depth( in unsigned long depth )
				raises (MofError);
     unsigned long get_value_depth ()
				raises (MofError);
     void set_call_semantic( in boolean as_value )
				raises (MofError);
     boolean get_call_semantic ()
				raises (MofError);
  };


Issue 9153: Remove the Common suffix from the interface names in the common mapping (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Since clients will in most cases deal directly with the abstract interfaces from the common mapping, it is more natural to name these interfaces using format_1(<class name>). As a consequence, we need to rename the Base-IDL and Component identifiers by adding a suffix.

Resolution:
Revised Text: Change the statement "…concatenate(format_1(<class identifier>), "Common")…" in rule 8 to format_1(<class identifier>). Done and example (1) on page 17 changed to module MyPackage { abstract interface A : MOFObject { }; abstract interface B : MOFObject { }; abstract interface C : A, B { }; valuetype AState : truncatable MOFState supports A { }; valuetype BState : truncatable MOFState supports B { }; valuetype CState : truncatable MOFState supports C { }; } ; Apply this to the CMOF association rules. Change the statement "…format_1(<class identifier>)... in rules (32) to "…concatenate(format_1(<class identifier>), "Component")…" Done Change the statement "…format_1(<class identifier>)... in rule (49) to "…concatenate(format_1(<class identifier>), "Concrete")…" Done and example 12 on page 35 changed to module MyPackage { // Common Mapping: abstract interface A : MOFObject { }; abstract interface B : MOFObject { }; abstract interface C : A, B { }; valuetype AState : truncatable MOFState supports A { }; valuetype BState : truncatable MOFState supports B { }; valuetype CState : truncatable MOFState supports C { }; // Base-IDL Mapping: interface MyPackageFactory { /* … */ }; interface MyPackage { A create_a(); B create_b(); C create_c(); }; interface AConcrete : A { }; interface BConcrete : B { }; interface CConcrete : C, AConcrete, BConcrete { }; } ; Apply this to the package and CMOF association rules. Rule (37) on page 28 was changed from If an association is mapped to IDL, a component declaration with the name format_1 ( <association identifier> ) is being generated, which declares to support the abstract interface produced by Rule (24). To If an association is mapped to IDL, a component declaration with the name concatenate(format_1 ( <association identifier> ), "Component") is being generated, which declares to support the abstract interface produced by Rule (46). All examples related to this change should be modified. Example (2) on page 23 was changed to abstract interface A : MOFObject { // the implementation of op can expect // that b_param is of type B A op ( in A b_param ); }; abstract interface B : A { // no operation is defined, but op must // return instances of type B }; Example (3) on page 25 was changed to module MyPackage { // Common Mapping: abstract interface MyClass : MOFObject { }; valuetype MyClassState : truncatable MOFState supports MyClass { }; // CCM Mapping: component MyClassComponent supports MyClass{ attribute MyClassState my_class_state; }; home MyClassHome manages MyClassComponent { }; }; Example (4) on page 26 was changed to module MyPackage { abstract interface A : MOFObject { long get_a_attrib (); void set_a_attrib ( in long a_attrib ); }; valuetype AState : truncatable MOFState supports A { private long a_attrib; }; component AComponent supports A { attribute AState a_state; } ; home AHome manages AComponent { factory create_a (); factory create_and_init_a ( in long a_attrib ); factory copy_from ( in A the_a ); }; abstract interface B : MOFObject { A get_b_attrib (); void set_b_attrib ( in A b_attrib ); }; valuetype BState : truncatable MOFState supports B { private A b_attrib; }; component BComponent supports B { attribute BState b_state; }; home BHome manages BComponent { factory create_b (); factory create_and_init_b ( in A b_attrib ); factory copy_from ( in B the_b ); }; abstract interface C : A, B { C get_c_attrib (); void set_c_attrib ( in C c_attrib ); }; valuetype CState : truncatable MOFState supports C { private long a_attrib; private A b_attrib; private C c_attrib; }; component CComponent supports C { attribute CState c_state; }; home CHome manages CComponent { factory create_c (); factory create_and_init_c ( in long a_attrib, in A b_attrib, in C c_attrib ); factory copy_from ( in C the_c ); }; }; Example (5) on page 27 was changed to module MyPackage { typedef sequence < A > ASet; abstract interface ASetIterator : MOF::IteratorBase { A get_value () raises (MofError); void insert_value ( in A value ) raises (MofError); void modify_value( in A value ) raises (MofError); ASetIterator next_one()raises (MofError); ASetIterator previous_one()raises (MofError); ASetIterator begin() raises (MofError); ASetIterator end() raises (MofError); boolean is_empty() raises (MofError); }; valuetype ASetAsValue supports ASetIterator { private ASet value; }; interface ASetAsReference : ASetIterator { ASetAsValue as_value(); }; abstract interface B { ASetIterator get_b_attrib ( ); // modification is done by iterator operations }; }; Example (6) on page 28 was changed to module MyPackage { valuetype Bstate : truncatable MOFState supports B { public ASetIteratorAsValue b_attrib; }; }; Example (7) on page 28/29 was changed to module MyPackage { abstract interface A : MOFObject {}; abstract interface B : MOFObject {}; struct ABLink { A the_a; B the_b; }; typedef sequence < ABLink > ABLinkSet; abstract interface AB : MOFObject { ABLinkSetIterator all_ab_links() raises (MofError); void create_link_in_ab( in ABLink new_link ) raises (MofError); boolean link_exists( in ABLink link ) raises (MofError); void remove_link( in ABLink link ) raises (MofError, NotFound); B linked_objects_the_a( in AComponent the_a ) raises (MofError); A linked_objects_the_b( in BComponent the_b ) raises (MofError); }; valuetype ABState : truncatable MOFState supports AB { private ABLinkSet ab_links; }; component ABComponent supports AB { attribute ABState ab_state; }; }; Example (9) on page 30 was changed to module MyPackage { component A supports A { /* … */ }; component B supports B { /* … */ }; component C supports C { /* … */ }; home AHome manages AComponent { /* … */ }; home BHome manages BComponent {/* … */ }; home CHome manages CComponent {/* … */ }; abstract interface MyPackagePackage { AHome a(); BHome b(); CHome c(); }; component MyPackage supports MyPackagePackage { }; home MyPackageHome manages MyPackage { }; }; Example 10 on page 31 changed to module MyPackage { component AComponent supports A { attribute AState a_state; provides EMOF::CCMReflective::RefCCMObject reflective; }; home AHome supports EMOF::CCMReflective::RefCCMHome manages AComponent { //… }; abstract interface MyPackagePackage { AHome a(); BHome b(); CHome c(); }; component MyPackage supports MyPackagePackage { provides EMOF::CCMReflective::RefBaseObject reflective; }; home MyPackageHome supports EMOF::CCMReflective::RefCCMHome manages MyPackage { //… }; }; Example (11) on page 32 changed to module MyPackage { /* definitions for class C */ abstract interface C : A, B { C get_c_attrib (); void set_c_attrib ( in C c_attrib ); }; valuetype CState supports C { private long a_attrib; private A b_attrib; private C c_attrib; }; eventtype CChanges : CState {}; component CComponent supports C { attribute CState c_state; provides Reflective::RefObject reflective; publishes CChanges changes_c; }; home CHome manages CComponent { /* … */ }; };
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:


Issue 9154: Align Handling of Collections to MOF2.0 Core (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The handling of collections is not aligned to MOF2.0 Core reflection. Although extensions may be available specific for IDL, the standard operations and interfaces must conform to the MOF2.0 collection handling. Therefore, we introduce corresponding ReflectiveCollection and ReflectiveSequence interfaces with the same operations. In turn all type specific iterators are dropped and replaced by generic reflective interfaces. However, we would like to keep the iterator interfaces as an IDL extension for convenience

Resolution:
Revised Text: Remove Rule(3) and instead introduce a reflective iterator interface one in the MOF package having the same functionality as the one in rule (3), but works with the ReflectiveCollection and ReflectiveSequence interfaces rather than the type specific collections. interface ReflectiveIterator : MOFObject{ // all operations as in rule (3) is_at_end() : boolean //used before calling next() or get_value() to avoid MofError } defined in section 6.2.2 (Globals) and old definition deleted from section 6.2.4 (Mapping of Collections) Declare interfaces for ReflectiveCollection and ReflectiveSequence: interface ReflectiveCollection : MOFObject{ // all the standard operations in MOF2.0 Core get_iterator(): ReflectiveIterator // returns the appropriate iterator } defined in section 6.2.2 (Globals) interface ReflectiveSequence : MOFObject{ // all the standard operations in MOF2.0 Core, suffixing the overloaded add and remove operations with "_at" } defined in section 6.2.2 (Globals) Delete rules (4) and (5) and modify the rules dealing with collection parameters and return values of to indicate that they return either ReflectiveCollection or ReflectiveSequence as prescribed in MOF2.0 Core. The interface IteratorBase is not needed. The client can always narrow the contents of such collections to the expected types or reflective objects (in the case of reflection). Done All examples related to this change should be modified. Example (5) on page 27 was changed to module MyPackage { typedef sequence < A > ASet; abstract interface B { ReflectiveCollection get_b_attrib ( ); // modification is done by iterator operations }; }; Example (6) on page 28 was changed to module MyPackage { valuetype BState : truncatable MOFState supports B { public ReflectiveCollection b_attrib; //holds AState objects }; }; The complete reflective IDL was also changed Rules (15) changed from For an attribute with multiplicity upper>1, two operations to set and get the attribute value are declared - taking into account Rule (2), Rule (3) and Rule (11). The operation to get the value of the attribute has the name concatenate ( "get_", format_2 ( <attribute identifier> ) ). The return type is of the IDL collection type generated for the attribute's type in the model according to Rule (3) (abstract iterator interface). The MOFObject::set_call_semantic operation is used by the client to decide, whether the operation shall return the collection by value (if as_value is true) or as reference (if as_value is false). to For an attribute with multiplicity upper>1, two operations to set and get the attribute value are declared - taking into account Rule (7). The operation to get the value of the attribute has the name concatenate ( "get_", format_2 ( <attribute identifier> ) ). The return type is either ReflectiveCollection or ReflectiveSequence (depending on the orderedness of the property). The operation to set the value has the name concatenate ( "set_", format_2 ( <attribute identifier> ) ). The operation has one in-parameter of type ReflectiveCollection or ReflectiveSequence (depending on the orderedness of the property). Rules (16) changed from The operation to set the value has the name concatenate ( "set_", format_2 ( <attribute identifier> ) ). The operation has one in-parameter of the IDL collection type generated for the attribute's type in the model according to Rule (3). Furthermore, we extend the definition of Rule (13) for the case, that the multiplicity has an upper bound > 1, the IDL valuetype generated according to Rule (9) is extended by a private state member with the name format_2 ( <attribute identifier> ). The type of the member is the IDL collection type generated for the attribute type in the model following Rule (4). to Furthermore, we extend the definition of Rule (9) for the case, that the multiplicity has an upper bound > 1, the IDL valuetype generated according to Rule (5) is extended by a private state member with the name format_2 ( <attribute identifier> ). The type of the member is either ReflectiveCollection or ReflectiveSequence (depending on the orderedness of the property).
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
After having experimented with larger metamodels for the MOF2.0-IDL mapping, it turned out that the generated IDL is by far to large to be manageable. This is an outcome of the type specific iterator interfaces for everything that has a multiplicity upper > 1. In practice, a repository client can live with a generic collection type (he simply needs to narrow to the specific type), since it is the responsibility of the CORBA server to deliver the most specific type inside the Object reference (IOR). Thereby, the narrow would not result in any remote call and hence performance loss.


Issue 9155: Example 4 is not totally consistent with rules (35) and (36). (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Example 4 on page 26 still contains the create_<component_name> factory operation which is no more generated according to issue 7682.
Moreover, the factory operation create_and_init_b(in long a_attrib, in ACommon b_attrib); in the home declaration home BHome manages B, the a_attrib parameter is not needed.


Resolution:
Revised Text: Resolution: Delete the create_<component_name>operations from the home interfaces of this example. factory create_a() deleted factory create_b() deleted factory create_c() deleted Redeclare create_and_init_b(in long a_attrib, in ACommon b_attrib) to create_and_init_b(in ACommon b_attrib). Done
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9156: Numbering and references to examples are not consistent (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Example 8 is missing and example 10 references example 10 rather than example 4.

Resolution:
Revised Text: Example 9 should become example 8 and all following examples should be adjusted too. The statement "If the class C and the package MyPackage of Example (10) shall support Reflection, …" Should be altered to "If the class C and the package MyPackage of Example (4) shall support Reflection, …" After rearranging sections, all examples were renumbered chronologically.
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9157: Some referenced sections do not exist (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Rule (46) on page 33 references section 8.2.5 which does not exist in the document.
Rule (40) on page 30 references section 8.3.6 which does not exist in the document.
The "Semantics" of the MOFObject::get_mof_id operation on page 45 references section 9.1 which does not exist in the document.

Resolution:
Revised Text: Delete the phrases "… -taking into account 8.2.5- …" "… see 8.3.6 as example …" "… cp. 9.1 …" or replace them with the appropriate reference deleted
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9158: Rule (50) is not applied in example (12). (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The interface declarations for A, B and C in example (12) on page 35 do not contain the operations derived according to rule (50).

Resolution:
Revised Text: Resolution: Include the operations generated by rule (50) in the interfaces. Example (12) on page 35 changed FROM module MyPackage { // Common Mapping: abstract interface ACommon : MOFObject { }; abstract interface BCommon : MOFObject { }; abstract interface CCommon : ACommon, BCommon { }; valuetype AState : truncatable MOFState supports ACommon { }; valuetype BState : truncatable MOFState supports BCommon { }; valuetype CState : truncatable MOFState supports CCommon { }; // Base-IDL Mapping: interface MyPackageFactory { /* … */ }; interface MyPackage { A create_a(); B create_b(); C create_c(); }; interface A : ACommon { }; interface B : BCommon { }; interface C : CCommon, A, B { }; } ; to module MyPackage { // Common Mapping: abstract interface A : MOFObject { AState get_a_state(); }; abstract interface B : MOFObject { BState get_b_state(); }; abstract interface C : A, B { CState get_c_state(); }; valuetype AState : truncatable MOFState supports A { }; valuetype BState : truncatable MOFState supports B { }; valuetype CState : truncatable MOFState supports C { }; // Base-IDL Mapping: interface MyPackageFactory { /* … */ }; interface MyPackage { AConcrete create_a(); BConcrete create_b(); CConcrete create_c(); }; interface AConcrete : A { }; interface BConcrete : B { }; interface CConcrete : C, AConcrete, BConcrete { }; } ;
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9159: Clarify the Extents concept in the mapping (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The Note in Section 7.1 on Extents deferred the clarification of the concept and mapping of extents to the FTF of the finalization process. We need some clarifications here.

Resolution:
Revised Text: Resolution: This fact should be clarified and this section modified to reflect the final handling of extents. Extents and URIExtends are not mapped. First part of Note in section 7.1 changed from Note for clarification of the notion of Extents in the MOF-IDL mapping. Since the meaning of Extents changed a lot since MOF1.4, we should clarify our notion of a mapping of extents regarding a realization in a CORBA environment. Basically, we do not define concrete IDL operations/interfaces for extents (initially) for two reasons: (1) A concrete realization heavily depends on the "interference" of extents with the Facility spec concepts. While watching the UML/MOF 2.0 FTF fruitful discussions and issues regarding XMI, we found it best to defer the alignment of extents mapped to IDL to the FTF process for the MOF2.0-IDL according to actual results. This is especially true for URIExtents. (2) Due to the reference/value call-semantic choices. The following picture visualizes the dilemma: to Note for clarification of the notion of Extents in the MOF-IDL mapping. Since the meaning of Extents changed a lot since MOF1.4, we should clarify our notion of a mapping of extents regarding a realization in a CORBA environment. IDL operations/interfaces are not generated for extents for the following reason visualized the diagram below:
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9160: RefCCMBaseObject and RefBaseObject (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
RefCCMBaseObject and RefBaseObject should contain a ref_get_label() operation.
Source:
Michael Soden, soden@ikv.de
Summary:
Unfortunately the MOF2.0 Core like MOF1.4 fails explicitly model a property as the label of an instance of a class. It provides the isID flag but this cannot always be used to display class instances reflectively. For example, when modeling a "Library", a "Book" would have a "bookID" and "title". While the "bookID" may be flagged with isID=true, this may not be user friendly for a reflective client displaying a book.
Therefore I suggest the introduction of a ref_label() operation in the RefCCMBaseObject and RefBaseObject interfaces as well as a standard optional Tag whose value should denote the property to use as a label. The modeler can attach such a tag to a class so that the ref_label() method can be implemented accordingly in the class' derived interface.

Resolution: closed no chage
Revised Text: Introduce the operation string ref_label(); in the RefCCMBaseObject and RefBaseObject interfaces Introduce a standard tag for identifying labels. No changes made.
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
Discussion:
Since this is outside the scope of the MOF2.0 IDL mapping, we do not consider it in the IDL language binding. However, this is a possible extension to MOF2.0 and should be raised as an issue for the MOF2.0 Core specification.


Issue 9161: names of the factory create operations (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The names of the factory create operations for home interfaces in subsection 7.5.2.2 are not consistent with rules (35) and (36).    Rules (35) and (36) state that the name of the factory create operations end with format_2 (<class identifier>).

Resolution:
Revised Text: Change <class_name>Home::create to <class_name>Home::create_<class_name> Change <class_name>Home::create_and_init to <class_name>Home::create_and_init_<class_name> Change <class_name>Home::copy_from to <class_name>Home::copy_from_<class_name> Done
Actions taken:
March 8, 2006: closed issue

Issue 9162: Align CCM Reflection Mapping to MOF2.0 Core (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
I suggest the introduction of a RefCCMPackage for CCMreflection Mapping. It is more natural and intuitive for package components to provide RefCCMPackage facets rather than RefCCMBaseObject. The RefCCMPackage should inherit from the RefCCMBaseObject. This could also ease the migration of reflective clients from CCM to Base-IDL Repository
Moreover rule (42) and example (10) use the word support to describe the relationship between concrete home interfaces and RefCCMHome. A home rather inherits from another home. 
Section 8.3.2 uses a RefComponent type not explained anywhere. This should be RefCCMObject, since this guarantees that the concrete object in it is a component.

Resolution:
Revised Text: Declare the following in the EMOF::CCMReflective and CMOF::CCMReflective modules: abstract interface RefCCMPackage : RefCCMBaseObject{ } Done Adapt example (10) to Home AHome : CMOF::CCMReflective::RefCCMHome manages A{ //… } and Home MyPackageHome : CMOF::CCMReflective::RefCCMHome manages MyPackage{ //… } Done Change RefComponent to RefCCMObject. Done In section 8.3.2 RefCCMObject create ( in RefArgumentSetIterator arguments ); was changed to RefCCMObject create ( in RefArgumentSet arguments ); In section RefCCMBaseObjectBagIterator ref_invoke ( in Operation operation, in ArgumentSetIterator arguments ); was changed to any ref_invoke ( in Operation operation, in RefArgumentSet arguments ); and the statement For this method an iterator is defined as follow: typedef sequence < RefCCMBaseObject > RefCCMBaseObjectSet; interface RefCCMBaseObjectSetIterator : IteratorBase; was deleted.
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9163: Align Base-IDL Reflection Mapping to MOF2.0 Core (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Rule (46) states that a factory interface is created for each package. A factory should be created only for the root package, just as home interfaces are created only for root package components.

Resolution:
Revised Text: Change the beginning of the rule 46 to read: Rule (46) For the root package, an IDL interface definition is being created - … Rule (46) modified from For each package, an IDL interface definition is being generated - taking into account 8.2.5 - with identifier concatenate ( format_1 ( <package identifier> ), "Factory" ). This interface is identical to that from section 5.8.3 of the MOF1.4 specification and contains the same operations. to For the outermost package, an IDL interface definition is being generated with identifier concatenate ( format_1 ( <package identifier> ), "Factory" ). This interface contains one operation named concatenate ( "create_", format_2 ( <package identifier> )) with return type of the package interface created by Rule (35). In Example (9) // Base-IDL Mapping: interface MyPackageFactory { /* … */ }; modified to // Base-IDL Mapping: interface MyPackageFactory { MyPackage create_my_package(); }; In section 8.1.1 RefBaseObject::ref_get_metaclass was changed to RefBaseObject::ref_get_meta_class
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:
This is a bug in the current spec.


Issue 9164: RefObject::ref_get (PropertyName) specified on page 67 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Title:	Arguments to ref_get, ref_set and ref_is_set operations do not match with MOF2.0 Reflection specification.
Source:
Michael Soden, soden@ikv.de
Summary:
The RefObject::ref_get (PropertyName) specified on page 67 does not conform to the get(Property) defined in MOF2.0 Reflection.

Resolution:
Revised Text: Change the parameter PropertyName to Property and introduce an alternative operation RefObject::ref_get_by_name(PropertyName) to substitute RefObject::ref_get (PropertyName). This alternative operation is useful when the client does not wrap the Property's meta-object itself but rather caches only their names. The same applies for ref_set and ref_is_set. Parameter types changed from PropetyName to Property The following operations were introduced: RefObject::ref_get_by_name Parameters PropertyName prop : name of the property to request. Semantics Same as RefObject::ref_get Returns Same as RefObject::ref_get. Exception Same as RefObject::ref_get. RefObject::ref_set_by_name Parameters PropertyName prop : name of the property to request. any value : the new value for the property. Semantics Same as RefObject::ref_set. Returns Same as RefObject::ref_set. Exception Same as RefObject::ref_set. RefObject::ref_is_set_by_name Parameters Property prop : name of the property to request. Semantics Same as RefObject::ref_is_set. Returns Same as RefObject::ref_is_set. Exception Same as RefObject::ref_is_set. RefObject::ref_unset_by_name Parameters PropertyName prop : name of the property to request. Semantics Same as RefObject::ref_unset. Returns Same as RefObject::ref_unset. Exception Same as RefObject::ref_unset. RefFactory::ref_all_of_class Parameters RefBaseObject class : class whose instances are to be retrieved. Semantics This operation has the same behavior as the non reflective all_of_class_* operations. Returns ReflectiveCollection : collection of found instances. Exception A MofError with error_code ILLEGAL_ARGUMENT_VIOLATION is raised, if class is not contained in the package. RefFactory::ref_all_of_type Parameters RefBaseObject class : class whose instances and those of its subclasses are to be retrieved. Semantics This operation has the same behavior as the non reflective all_of_type_* operations. Returns ReflectiveCollection : collection of found instances. Exception A MofError with error_code ILLEGAL_ARGUMENT_VIOLATION is raised, if class is not contained in the package. RefFactory::ref_create_and_init Parameters RefBaseObject class : class to build the new instance from. RefArgumentSet arguments : attribute values used to instantiate new object. Semantics Creates an instance of the class class initialized with the values supplied through arguments. Returns RefBaseObject : the new instance. Exception A MofError with error_code ILLEGAL_ARGUMENT_VIOLATION is raised, if the linked package does not contain such a class or at least one of the supplied arguments does not denote an attribute of the class.
Actions taken:
November 15, 2005: received issue
March 8, 2006: closwed issue

Issue 9165: Align reflective argument passing in EMOF to CMOF (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Just as in CMOF, a RefArgument class should be introduced in EMOF in order to handle reflective argument passing the better way.

Resolution:
Revised Text: Resolution: Place RefArgument in the MOF package an use it for EMOF reflective too. The ReflectiveCollection, ReflectiveSequence and ReflectiveIterator should be used to handle collections of arguments. The statement: This does not conflict with the two <<combine>> dependencies from Reflection over CMOFReflection to CMOF, because through the inheritance the merge characteristic is preserved and all elements are available within CMOF, what is demanded in sense of a <<combine>>. In section 8.2 on page 71 was deleted because such a <<combine>> dependency doesn't exist anymore. The definition of and corresponding text to the RefArgument interface was moved to the section 8. Complete Reflective IDL was changed to module MOF { struct RefArgument { wstring name; any element; }; typedef sequence < RefArgument > RefArgumentSet; module EMOF { module Reflective { typedef wstring PropertyName; interface RefBaseObject; interface RefFactory; interface RefBaseObject : MOFObject { RefBaseObject get_meta_class (); RefBaseObject get_container (); boolean is_instance_of_type ( in RefBaseObject type, in boolean sub_types ); }; interface RefObject : RefBaseObject { any ref_get ( in Property prop ) raises (MofError, NotSet); void ref_set ( in Property prop, in any new_value ) raises (MofError); boolean ref_is_set ( in Property prop ) raises (MofError); void ref_unset ( in Property prop ) raises (MofError); any ref_get_by_name ( in PropertyName prop ) raises (MofError, NotSet); void ref_set_by_name ( in PropertyName prop, in any new_value ) raises (MofError); boolean ref_is_set_by_name ( in PropertyName prop ) raises (MofError); void ref_unset_by_name ( in PropertyName prop ) raises (MofError); }; interface RefPackage : RefBaseObject { RefFactory ref_factory (); ReflectiveCollection ref_all_of_class(in RefBaseObject class); ReflectiveCollection ref_all_of_type(in RefBaseObject class); }; interface RefFactory : RefBaseObject { RefPackage ref_package (); RefBaseObject ref_create_from_string ( in wstring from ) raises (MofError); wstring ref_convert_to_string ( in RefBaseObject element ) raises (MofError); RefBaseObject ref_create ( in RefBaseObject class ) raises (MofError); RefBaseObject ref_create_and_init ( in RefBaseObject class, RefArgumentSet arguments) raises (MofError); }; }; // Reflective module CCMReflective { typedef wstring Property; interface RefCCMBaseObject : MOFObject { RefCCMBaseObject get_meta_class (); RefCCMBaseObject get_container (); boolean is_instance_of_type ( in RefCCMBaseObject type, in boolean sub_types ); }; interface RefCCMObject : RefCCMBaseObject , Components::CCMObject { any ref_get ( in Property prop ) raises (MofError, NotSet); void ref_set ( in Property prop, in any new_value ) raises (MofError); boolean ref_is_set ( in Property prop ) raises (MofError); void ref_unset ( in Property prop ) raises (MofError); any ref_get_by_name ( in Property prop ) raises (MofError, NotSet); void ref_set_by_name ( in Property prop, in any new_value ) raises (MofError); boolean ref_is_set_by_name ( in Property prop ) raises (MofError); void ref_unset_by_name ( in Property prop ) raises (MofError); }; interface RefCCMHome : Components::CCMHome { RefCCMObject ref_create (); }; }; // CCMReflective }; // EMOF module CMOF { module Reflective { typedef wstring Operation; interface RefBaseObject; struct RefLink { RefBaseObject firstObject; RefBaseObject secondObject; }; typedef sequence < RefLink > RefLinkSet; typedef wstring OperationName interface RefBaseObject : MOF::EMOF::Reflective::RefBaseObject { any ref_invoke ( in Operation op, in RefArgumentSet arguments ) raises (MofError); any ref_invoke_by_name ( in OperationName op, in RefArgumentSet arguments ) raises (MofError); }; interface RefAssociation : RefBaseObject { RefLinkSet ref_all_links (); void ref_create_link ( in RefLink new_link ) raises (MofError); boolean ref_link_exists ( in RefLink link ) raises (MofError); boolean ref_remove_link ( in RefLink old_link ) raises (MofError, NotFound); RefCollection ref_linked_objects ( in RefBaseObject end) raises (MofError); }; interface RefFactory : RefBaseObject, ::MOF::EMOF::Reflective::RefFactory { RefBaseObject ref_create_and_init( in RefBaseObject class, in ReflectiveCollection arguments ) raises (MofError); RefBaseObject ref_create ( in RefBaseObject class) raises (MofError); }; }; // Reflective module CCMReflective { interface RefCCMBaseObject; struct RefLink { RefCCMBaseObject firstObject; RefCCMBaseObject secondObject; }; typedef sequence < RefLink > RefLinkSet; interface RefCCMBaseObject : MOF::EMOF::CCMReflective::RefCCMBaseObject { }; interface RefCCMAssociation : RefCCMObject, MOF::EMOF::CCMReflective::RefCCMObject { RefLinkSet ref_all_links (); void ref_create_link ( in RefLink new_link ) raises (MofError); boolean ref_link_exists ( in RefLink link ) raises (MofError); boolean ref_remove_link ( in RefLink old_link ) raises (NotFound); ReflectiveCollection ref_linked_objects ( in RefCCMBaseObject end) raises (MofError); }; interface RefCCMHome : EMOF::CCMReflective::RefCCMHome { RefCCMObject ref_create_and_init ( in RefArgumentSet arguments ) raises (MofError); }; }; // CCMReflective }; // CMOF }; // MOF
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9166: Semantic of reflective operations should match MOF2.0 Core (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
Most of the reflective operations as well as the derived operations in section 7.6 need to refer to the computational semantic defined in MOF2.0 Core.

Resolution:
Revised Text: Resolution: add references to MOF2.0 Core document for each of the described operations in section 7 (see also section 9.1 in [6]) added to Object::equals, Property::set, , Property::get and , Property::unset description (see also section 13.3 in [6]) added to Object::delete description
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9167: "set" operation for derived attributes (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
This issue is a follow up of issue 7591. For UML2 compliance, a "set" operation is needed for derived attributes.

Resolution:
Revised Text: Resolution: For derived attributes, add the "set" operation to Rule(11) . Changes in the document: Rule (15) was changed from For an attribute with multiplicity upper>1, two operations to set and get the attribute value are declared - taking into account Rule (2), Rule (3) and Rule (11). to For an attribute with multiplicity [1..1], two operations to set and get the attributes value are declared - taking into account Rule (11). For optional attributes with a multiplicity of [0..1], an additional operation to unset the attribute is declared..
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9168: Align mapping of tags to MOF2.0 (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The mapping of tags should state explicitly where the information modeled in a tag lands in the mapped IDL

Resolution:
Revised Text: Resolution: Add the role of tags in service in section 5.3.1 "Mapping of MOF and Service Mapping" on page 5 and redefine rule 40. Added to section 5.2.1 This specification separates the mapping of core MOF2.0 concepts from those of services. Although Reflection is available in MOF2.0 Core, it is considered in the mapping as a standard service. Non standard services can be plugged into the mapping through MOF Tags. Added to section 6.3.5 As stated earlier, tags are used to denote services provided by the generated components. Tags for standardized MOF Services such as Reflection need not to be explicitly attached to model elements. Standardized tags for the IDL mapping define standardized service interfaces. These interfaces are supported through facets at the component. If a non-standardized tag is attached to a model element, the component generated for that element is extended to provide a facet of the type denoted by the tag value. The name of the tag is mapped to the name of the facet. It is the responsibility of the modeler to provide valid IDL identifiers in the name and value attributes of the tag. The facet type denoted by the tag value must be fully qualified.
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9169: Mapping of subsetted properties do not need to change name of operation (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The mapping of subsetted properties does not have to change the name of the generated operations for this property. Only the implemented semantic should changed and reflect that of MOF2.0 Core.

Resolution:
Revised Text: Resolution: Modify the {isDerivedUnion=true} clause in rule (17) on page 18. It was changed to: {isDerivedUnion = true} : if a property is a derived union, then the computational semantic of the operation is equivalent to the UML2 abstract semantic of unions (i.e., the returned set of instances depends on the subsets defined in subclasses). {subsettedProperty->size() > 0} : defining a property as subset leads to the computational semantic of the get and set operations being equivalent to the UML2 abstract semantics. Note that this implies that the (sub-) set of instances for this property is included in the returned set of instances of an existing union-operation of superclasses for which this property is a subset.
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Discussion:


Issue 9170: Editorial issue(s) (mof2idl-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Mr. Michael Soden, soden(at)ikv.de)
Nature: Uncategorized Issue
Severity:
Summary:
The grammatical errors in the document should be corrected. Also review comments were taken into account and can now be deleted from the final document.

Resolution:
Revised Text: Resolution: The following were deleted Review comment from Pete Rivett: "Parameters for the factory operation may be optional" - Right, only if the Data Type (or a supertype) contains attributes (that are not derived), then these parameters exist. Review question from Dave Frankel: "IDL for CHome: why don't the last two factory operations have parameters for a_attrib and b_attrib?" Answer: The parameter of copy_from is of type CCommon, which can either be a concrete valuetype of type CState with a_attrib, b_attrib, and c_attrib as members or a reference of (component-) type C, also allowing access to all inherited attributes. Another suggestion for a more advanced query-interface would be to reuse the concept of EJB to define finders. The idea is to supply query-requests as parameters in kind of EJB internal QueryLanguage (EJB QL) like style. Thus, simply one operation is defined that directly supports "words" of a query language (in opposite to EJB, where only predefined queries are possible). An example for OCL would look like: <AbstractSetIterator> ocl_query ( in string query_expression, in boolean result_as_value ); Thus, a client is able to specify OCL expressions for an explicit search via any combination of characteristics of the instances. For example, a query string like self.name = 'HardToImplement' returns an iterator to all instances with an attribute called name set to 'HardToImplement'. For the definition of the mapping rules themselves, we derive one combined model from the MOF 2.0 model and the CCM metamodel. Based on this combined model, we define the mapping rules using OCL. The methodology is covered by section 5. (from section 7) Collections are mapped to abstract iterator interfaces as described in the following subsections. Mapping to abstract interfaces If a type (a data type or a classifier) appears as a property or an operation parameter with the upper value of the multiplicity being greater than 1, for this type is an abstract interface created. If the collection kind is Bag/Set/List/UList, this interface is defined by: abstract interface <type of collection><collection kind>Iterator : MOF::IteratorBase { <type of collection> get_value () raises (MofError); void insert_value ( in <type of collection> value ) raises (MofError); void modify_value ( in <type of collection> value ) raises (MofError); <type of collection><collection kind>Iterator next_one() raises (MofError); <type of collection><collection kind>Iterator previous_one() raises (MofError); <type of collection><collection kind>Iterator begin() raises (MofError); <type of collection><collection kind>Iterator end() raises (MofError); boolean is_empty() raises (MofError); }; <type of collection><collection kind>Iterator::get_value Parameters (none) Semantics Returns the value of the element in the collection pointed to by this iterator. If this iterator is equivalent with the result of <type of collection><collection kind>Iterator::end(), a MofError exception is raised. Returns Value of the element in the collection pointed to by this iterator. Exception MofError is raised if the iterator points to the last element in the list. <type of collection><collection kind>Iterator::insert_value Parameters <type of collection> value Semantics Inserts the value in the parameter value into the collection. If the collection is ordered, the value is being inserted before the element this iterator points to, e.g., a call to next_one after a call to insert shall return the element the iterator points to before the insert_value operation. If the iterator points to the result of <type of collection><collection kind>Iterator::end(), the value is being added at the end of the collection. If the iterator points to <type of collection><collection kind>Iterator::begin(), the value is being inserted at the beginning of the collection. Returns (none) Exception MofError is raised if the collection this iterator points to is read-only or if an insertion of a value will increase the size of the collection to a value greater than upper bound - lower bound of the collection. MofError is also being raised, if the collection is unique and the element that shall be inserted is already existing in the collection. <type of collection><collection kind>Iterator::modify_value Parameters <type of collection> value Semantics Sets the value of the collection to the one given in parameter value. Returns (none) Exception MofError is raised if the collection this iteratator points to is read-only or the iterator points to the end of the collection. MofError is also being raised, if the collection is unique and the element that shall be inserted is already existing in the collection. <type of collection><collection kind>Iterator::next_one Parameters (none) Semantics Returns an iterator to the element following the element pointed to by this iterator. If the element pointed to by this iterator is the last element in a collection, an iterator is being returned equivalent to the result of <type of collection><collection kind>Iterator::end(). The same holds if the operation is called at an iterator equivalent to the result of <type of collection><collection kind>Iterator::end(). Returns <type of collection><collection kind>Iterator Exception (none) <type of collection><collection kind>Iterator::previous_one Parameters (none) Semantics Returns an iterator to the element preceding the element pointed to by this iterator. If the element pointed to by this iterator is the first element in a collection, an iterator is being returned equivalent to the result of <type of collection><collection kind>Iterator::begin(). The same holds if the operation is called at an iterator equivalent to the result of <type of collection><collection kind>Iterator::begin(). Returns <type of collection><collection kind>Iterator Exception (none) <type of collection><collection kind>Iterator::begin Parameters (none) Semantics Returns an iterator pointing to the begin of the collection. If the one is equivalent with the result of <type of collection><collection kind>Iterator::end(), the collection is empty. Returns <type of collection><collection kind>Iterator Exception (none) <type of collection><collection kind>Iterator::end Parameters (none) Semantics Returns an iterator pointing to the end of the collection. If the one is equivalent with the result of <type of collection><collection kind>Iterator::begin(), the collection is empty. Returns <type of collection><collection kind>Iterator Exception (none) <type of collection><collection kind>Iterator::is_empty Parameters (none) Semantics Returns true if the collection the iterator points to is empty, false otherwise. Returns boolean Exception (none) Mapping to concrete valuetypes and interfaces Beside the derivation of an abstract interface for collections, a concrete valuetype is being created to enable the access by value semantics for collections. This valuetype implements all operations specified by the abstract interface it supports and provides a factory operation to construct a value based on a specific collection given as parameter to the factory operation. valuetype <type of collection><collection kind>AsValue supports <type of collection><collection kind>Iterator { private <type of collection><collection kind> value; factory create ( in <type of collection><collection kind> initializer ); }; To allow access to the elements of a collection by reference, an interface is being produced that inherits from the abstract interface created for a collection. This interface inherits all operations defined by the abstract interface and extends them by an operation as_value. This operation returns the iterator as valuetype, pointing to the same element in the collection. interface <type of collection><collection kind>AsReference : <type of collection><collection kind>Iterator { <type of collection><collection kind>AsValue as_value() raises (MofError); }; from section 8.1.1 RefFactory The CMOF RefFactory inherits from CMOF::Reflective::RefBaseObject and EMOF::Reflective::RefFactory. It provides an enhanced operation for object creation. RefFactory::ref_create_object Parameters RefBaseObject class : determinates the type of object that is being created. ArgumentSetIterator arguments : iterator of a name/value pairs list, which represents the properties of the object, identified by the name of the RefArguments that also supply their initial values. Semantics Creates an instance of the supplied object like the operation EMOF::Reflective::RefFactory::ref_create. But with the difference, that it is possible to supply initial values for the properties of the instance. If there is no argument supplied for one of the objects properties, the property is set according to the operation EMOF::Reflective::RefFactory::ref_create_from_string. Returns RefBaseObject : the new instance with the initialized properties. Exception Raises a MofError with error_code ILLEGAL_ARGUMENT_VIOLATION, if the one of the supplied arguments is not member of the object or the object to create the instance of is not contained in the linked package. RefFactory::objects_of_type Parameters RefBaseObject class : type of objects to search for. boolean include_subtypes : whether to perform a search over all subtypes of the supplied type, or not. Semantics This operation provides the opportunity to request all existing instances of a specified type. And if the flag include_subtype is set to true, all existing subtypes are included in the returned collection. If the supplied type has the abstract flag set to true and include_subtypes = false, an empty collection will be returned. Returns RefBaseObjectSetIterator : iterator of a RefBaseObjectSet, which contains the requested objects. Exception Raises a MofError exception with error_code ILLEGAL_ARGUMENT_VIOLATION, if the supplied type is not contained within the linked package. Section 7.5.7 was deleted From section 7.6.3, <association_name>::linked_objects_<end_name> The linked_objects operation replaces the former add_*-operations of MOF1.4 with the comfortable iterator interface. From section 7.6.3, <association_name>::create_link_in_<association_name> Another way of inserting links is to use the iterator returned by the linked_objects_* operations. From section 6.3.1.4 Mapping of Attributes and Operations Moreover, we do not distinguish navigable association ends and attributes of type class (cp. to UML2 Infrastructure and see discussion in 5.2.11 and Navigability and owned Properties) From 6.3.3 Moreover, the submitters prefer the CCM mapping approach From 6.4.1.9 Since the Reflective API overloads thin model interfaces with in most cases unneeded functionality, the proposed mapping drops the Reflective interface inheritance of MOF1.4. Instead, From section 7.1 However, we truly believe that an FTF is able to align and refine the mapping for extents/ URIExtents with upcoming issues within the finalization process. From section 6.3.3.2 It should be noted, that inheritance of classes is realized by the inheritance of the derived abstract interfaces (cp. 8.2.7) and additionally via the instance interfaces. In section 7.4, from exceptions idl const string NOT_CHANGEABLE_VIOLATION = "org.omg.mof:reflective.not_changeable"; const string NOT_PUBLIC_VIOLATION = "org.omg.mof:reflective.not_public"; const string WRONG_SCOPE_VIOLATION = "org.omg.mof:reflective.wrong_scope"; The following were added: (in Section Separation of MOF and services) This specification separates the mapping of core MOF2.0 concepts from those of services. Although Reflection is available in MOF2.0 Core, it is considered in the mapping as a standard service. Non standard services can be plugged into the mapping through MOF Tags. In section 6.3.1.8 In this mapping, a verify operation has been provided in the MOFObject interface, to which OCL expresssions can be passed (see Section , "Globals," on page13, " Error! Reference source not found.," on page Error! Bookmark not defined.13). In section 6.2.2 Furthermore, the repository needs to provide the means of obtaining an empty reflective collection or sequence to use when creating new objects that have attributes with multiplicity upper bound > 1. This may be provided in an initial interface to the repository. interface MofRepositoryRoot { ReflectiveCollection create_collection(boolean is_ordered); // Possibly further "root" operations for // accessing repository capabilities }; The is_ordered boolean parameter indicates whether a ReflectiveCollection (FALSE) or ReflectiveSequence (TRUE) should be created. In section 6.4 Due to the fact that CMOF is constructed through package merge of the EMOF package, EMOF mapping rules are also applicable for CMOF. Thus, this section will mostly refer to these mapping rules and only introduce those specific to CMOF. In section 7.3 MOFObject::verify Parameters wstring ocl_expr: an OCL expression defining the constraint. Semantics Check the constraint defined by the passed OCL expression. Returns true, if the check was successfull, false otherwise. Exception MofError with code OCL_EXPRESSION_VIOLATION is raised if the OCL expression cannot be evaluated. In section 7.4, exceptions idl const string CLASS_CAST_VIOLATION = "org.omg.mof:structural.class_cast"; const string OCL_EXPRESSION_VIOLATION = "org.omg.mof:structural.ocl_expression"; in section 7.5.2.2 <class_name>Home::all_of_type_<class name> Parameters in <boolean> : flag stating whether to return objects as value (TRUE) or as reference (FALSE). Semantics Operation to query all component instances managed by this home. It includes all subcomponent instances. Corresponds to the all_of_type_* operation in MOF 1.4. Returns Component instances managed by this home, including all subcomponents. Exception (none). <class_name>Home::all_of_class_<class name> Parameters in <boolean> : flag stating whether to return objects as value (TRUE) or as reference (FALSE). Semantics Operation to query all component instances managed by this home. It does not includes subcomponent instances. Corresponds to the all_of_class_* operation in MOF 1.4. Returns Component instances managed by this home. Exception (none). In section 8.2.1.1 RefBaseObject::ref_invoke_by_name Parameters OperationName operation : name of the operation to invoke. RefArgumentSet arguments : a collection of name/value pairs of type RefArgument, which represents the arguments of the operation through the name of the RefArguments and their value. Semantics Same as for ref_invoke. Returns Same as for ref_invoke. Exception Same as for ref_invoke. In section 8.3.1.2 RefPackage The CMOF RefPackage inherits from CMOF::Reflective::RefBaseObject and EMOF::Reflective::RefPackage and provides an operation to retrieves associations in the package. RefPackage::ref_association Parameters RefBaseObject association : the association type to retrieve. Semantics This operation provides the opportunity to request the association object designated by association. Returns RefAssociation : the found association. Exception Raises a MofError exception with error_code ILLEGAL_ARGUMENT_VIOLATION, if the supplied association type is not contained within the package. RefAssociation::ref_linked_objects Parameters RefBaseObject end : the object, whose linked object are to be returned. Semantics Retrieves the objects that are linked with end in this association. The semantic is the same as the corresponding operation derived for the non reflective interfaces. Returns ReflectiveCollection : the collection of objects linked to end. Exception Raises MofError with code ILLEGAL_ARGUMENT_VIOLATION if end is not an object that can take part in the association. The following were modified: In section 8.1.1 RefFactory::ref_create_from_string wstring from : name of the class to create an instance of. The format of the string is according to the ref_convert_to_string operation. modified o wstring from : name of the class to create an instance of. The format of the string is defined in section 9.2 of [6]. in section 7.3 MOFObject::delete Note, that references to the object are not removed automatically. This may result in so called dangling-references which still refer to this object. It is up to a client to restore the repository into a valid state. modified to Note that references to the object are only removed automatically if the object participates in an association. In all other cases, this may result in so called dangling-references which still refer to this object. It is up to a client to restore the repository into a valid state. In Rule (34) This interface is identical to that from section 5.8.3 of the MOF1.4 specification and contains the same operations. modified to This interface contains one operation named concatenate ( "create_", format_2 ( <package identifier> )) with return type of the package interface created by Rule (35). in section 7.1 , paragraph on services and repository root reference As in MOF1.4, the specification of an initial interface for a repository implementing derived IDL may be included in the specification for the purposes of accessing configuration information of service support. modified to This specification defines an initial interface for a repository implementing derived IDL for the purposes of accessing configuration information of service support. In section 8.3.2 modified In CMOF this interface is enhanced with the create method that provides simultaneous initialization of the component's properties as defined in the CMOF::Reflective::RefFactory. RefComponent create ( in ArgumentSetIterator arguments ); Through the selected return type of RefComponent it is ensured that the reflective API conforms to the CCM domain by using homes to create instances of a component type. to In EMOF this interface is enhanced with the create method that provides simultaneous initialization of the component's properties as defined in the EMOF::Reflective::RefFactory. RefCCMObject ref_create_and_init ( in RefArgumentSet arguments ); In section 8.3.1 Modified The CCM reflective framework defines the RefCCMBaseObject as image of RefBaseObject in the EMOF Base-IDL mapping. To The CMOF::Reflective::RefBaseObject is a specialization of EMOF::Reflective::RefBaseObject. and modified As in the Base-IDL mapping the CMOF reflective framework extends this interface with the opportunity for reflective invocation of methods. RefCCMBaseObjectBagIterator ref_invoke ( in Operation operation, in ArgumentSetIterator arguments ); For this method an iterator is defined as follow: typedef sequence < RefCCMBaseObject > RefCCMBaseObjectSet; interface RefCCMBaseObjectSetIterator : IteratorBase; to In IDL an operation name is expressed is expressed with the following typedef: typedef wstring OperationName; RefBaseObject::ref_invoke Parameters Operation operation : name of the operation to invoke. RefArgumentSet arguments : a collection of name/value pairs of type RefArgument, which represents the arguments of the operation through the name of the RefArguments and their value. Semantics Calls the method specified by its name. This RefArgumentSet includes parameters of the operation identified with their name and providing their value within RefArgument. If an argument of the operation is not passed within the list, the default value is taken - if not present a nil reference is supplied instead. If the invoked operation raises any exception, it will also be listed in the returned collection, but not raised. Returns any : an Any value which contains all return values of the invoked method. Exception A MofError with error_code ILLEGAL_ARGUMENT_VIOLATION is raised, if the argument list contains at least one argument that does not fit to the arguments of the method to invoke. The same error is thrown, when the element contains no such operation. In section 7.5.3, operation <class name>::set_<prop_name> modified If an error occurs on update, MofError is raised. This may result due to a constraint violation or in terms of merging. to If an error occurs on update, MofError is raised. This may result due to a constraint violation or in terms of merging. WRONG_TYPE_VIOLATION is set if prop_type is not the expected one according to redefinition. In section 7.5.3, operation <class_name>::<operation_name> modified MofError is included in the raise clause. If the Operation specifies raisedExceptions, the elements thrown are included using the element_in_error member of the MofError exception. to In addition to the elements specified in raisedExceptions, MofError is included in the raise clause. The user implementation will set the MofError code appropriately. In section 7.5.3, operation <association_name>::all_<association_name>_links modified LinkSetIterator to iterate over all links of the association. to <association_name>LinkSet containing all links of the association. and modified MofError is raised if an error occurs. To MofError with an appropriate code is raised if an error occurred. In section 7.5.3, operation <data_type_name>::equals modified MofError is raised if compare fails or parameter is a nil reference. to MofError is raised with code NIL_OBJECT_VIOLATION if parameter is a nil reference. In section 8.1.1, operation RefObject::ref_get, sematinc modified When the property's multiplicity has an upper bound = 1, then the value of the property is returned. When the upper bound is > 1 an iterator (see Rule (3)) to a collection is returned, which is typed with the type of the property. The returned collection is a Bag, if the prop is neither unique nor ordered. Set, if the prop is unique but not ordered. List, if the prop is ordered but not unique. UList, if the prop is ordered and unique. to When the property's multiplicity has an upper bound = 1, then the value of the property is returned. When the upper bound is > 1 a ReflectiveCollection or ReflectiveSequence is returned (depending on orderedness, see also section 9.1 in [6]). and modified A MofError with the error_code ILLEGAL_ARGUMENT_VIOLATION is thrown, if there is no property within the element, which has the same name as the supplied one. To A MofError with the error_code ILLEGAL_ARGUMENT_VIOLATION is thrown, if the supplied property is not within the element. In section 7.5.4 modified An instance of the Operation class is mapped into the abstract interface that is derived for its owning class (see also CMOF::Operation for exceptional cases to the following): to An instance of the Operation class is mapped into the abstract interface that is derived for its owning class: Section 7.5 EMOF compliance is achieved by using only instances of classes of the MOF::EMOF package. The following subsections provide the CCM mapping for these elements specified (for a discussion and explanations refer to chapter 8). For a more formal specification refer to the OCL constraints in the convenience document [13]. modified to EMOF compliance is achieved by using only instances of classes of the MOF::EMOF package. The following subsections provide the CCM mapping for these elements specified. Section 1 (Scope) modified to This specification defines the MOF 2.0 to CORBA IDL mapping. The mapping rules are based on the MOF2.0 Core document ptc/04-10-15 [6]. The set of mapping rules is outlined in section 6 and defined in detail in section 7. This mapping reuses the concepts of CCM as much as possible aiming at the generation of highly performant, highly scalable, and reliable repositories, which are automatically deployable. The submitters believe that this specification benefits from the gained experiences during several years in developing and using metadata repositories and CORBA technology. In section 6.2.13, Since the Reflective API overloads thin model interfaces with in most cases unneeded functionality, the proposed mapping drops the Reflective interface inheritance of MOF1.4. Instead, Reflection is regarded as MOF Service (orthogonal to any meta-model) and thus mapped as described in Section 6.3.6 , "Support for the Reflection Service," on page30. was changed to Reflection is regarded as MOF Service (orthogonal to any meta-model) and thus mapped as described in Section .10, " Error! Reference source not found. and Section .10, " Error! Reference source not found.," . Section 6.2.4 was modified to All operations to get access to attributes with multiplicity upper > 1, will use either the ReflectiveCollection or ReflectiveSequence interfaces as return type (depending on orderedness). Internally the ReflectiveCollections or ReflectiveSequences hold a collection of objects (by reference or value). It is intended to reuse this collection pattern every time an instance of class MultiplicityElement is derived, so that clients simply can get an iterator instance and iterate over the collection. Although the word "Reflective" appears in the collection and iterator interface names, they are not used used only together with the reflection service. An example is given in Section .3, " Error! Reference source not found.," on page Error! Bookmark not defined.22. In section 6.1 The approach targets at an improvement of the current mapping… was modified to The approach targets an improvement of the MOF1.4 mapping… Because MOF2 is adopted, but not yet finalized, this specification refers to the MOF2.0 Core submission document (ad/ 03-04-07) [8] and to issues discussed in the FTF. became Because MOF2 is adopted, but not yet finalized, this specification refers to [6] and issues discussed in the FTF. Because the Core submission defines… became Because the Core submission defines… …profile for the normal; (Base-) IDL. became profile for the normal (Base-) IDL. …style of the present MOF1.4 mapping became style of the MOF1.4 mapping In section 6.2.2 To provide a common base interface for every derived MOF model element, we introduce an (abstract) base interface for having fundamental operations such as delete and is_equal available. became To provide a common base interface for every derived MOF model element, we introduce an (abstract) base interface equivalent to Object in MOF2.0 Core. Rule (30) modified from Furthermore, every derived home interface also supports the reflective interface CCMReflective::RefCCMHome (contained in the EMOF or CMOF modules respectively). to Furthermore, every derived home interface is a specialization of the reflective interface EMOF::CCMReflective::RefCCMHome. Rule (36) modified from Furthermore, an interface with name concatenate ( format_1 ( <package identifier> ), "Query" ) is derived (referred to as the package's Query Interface). This interface contains operations for querying a model's elements contained by the package. Additionally, the package instance interface is enhanced with a readonly attribute with type of the query interface. To Furthermore, an interface with name concatenate ( format_1 ( <package identifier> ), "Query" ) is derived (referred to as the package's Query Interface). This interface contains operations for querying a model's elements contained by the package. Additionally, the package instance interface is enhanced with a readonly attribute with type of the query interface and name concatenate ( format_2 ( <package identifier> ), "_query" ). In section 6.3.3.2 In the MOF 1.4 IDL mapping, class proxy interfaces are generated, that are used to create class's instances. In this specification, we drop the class proxy interface and generate the creation operation(s) for instances into the package interface that is derived according to Rule (47). Rule(34) If the class in the model is not abstract, a factory operation to create instances without parameters with the name concatenate ( "create_", format_2 ( <class identifier> ) ) is generated. Additionally, a copy_from and a create_and_init is operation is derived analogous to Rule (35) and Rule (36). was changed to In the MOF 1.4 IDL mapping, class proxy interfaces are generated, that are used to create and query class's instances. In this specification, we drop the class proxy interface and generate the creation operation(s) for instances into the package interface that is derived according to Rule (35). The query operations are located in the package query interface. Rule (23) If the class in the model is not abstract, a factory operation to create instances without parameters with the name concatenate ( "create_", format_2 ( <class identifier> ) ) is generated. Additionally, a copy_from and a create_and_init operation is derived analogous to Rule (24) and Rule (25). Moreover, the package query interface generated by rule Rule (36) has two operations named concatenate ( "all_of_type_", format_2 ( <class identifier> ) ) and concatenate ( "all_of_class_", format_2 ( <class identifier> ) ) analogous to those of Rule (33). in section 6.4.5, rule 54 was changed from If an association is mapped to IDL, an interface with identifier format_1 ( <assocation_name> ) is generated inheriting from the abstract interface derived in Rule (24). to If an association is mapped to IDL, an interface with identifier concatenate (format_1 ( <assocation_name> ), "Concrete" ) is generated inheriting from the abstract interface derived in Rule (46). Moreover, the query interface generated for this association's package according to Rule (35) is extended to contain an operation named format_2 ( <assocation_name> ). The return type is the abstract interface derived for the association according to Rule (46). In section 7.3, MOFObject::ref_get_mof_id MofError is raised if the object in the repository is not available. was modified to MofError with code INVALID_OBJECT_VIOLATION is raised if the object in the repository is not available. In section 7.3, MOFObject::equals MofError is raised if the object in the repository is not available. was modified to MofError with code INVALID_OBJECT_VIOLATION is raised if the object in the repository is not available. In section 7.3, MOFObject::set_value_depth MofError is raised if the object is not available. was modified to MofError with code INVALID_OBJECT_VIOLATION is raised if the object in the repository is not available. In section 7.3, MOFObject::get_value_depth MofError is raised if the object is not available. was modified to MofError with code INVALID_OBJECT_VIOLATION is raised if the object in the repository is not available. In section 7.3, MOFObject::set_call_semantic MofError is raised if the object is not available. was modified to MofError with code INVALID_OBJECT_VIOLATION is raised if the object in the repository is not available. In section 7.3, MOFObject::get_call_semantic MofError is raised if the object is not available. was modified to MofError with code INVALID_OBJECT_VIOLATION is raised if the object in the repository is not available. In section 7.6.3, <association_name>::linked_objects_<end_name> Filters the link-set along the parameter instance and returns an iterator to all linked elements of this instance. The linked_objects operation replaces the former add_*-operations of MOF1.4 with the comfortable iterator interface. Changed to Filters the link-set along the parameter instance and returns the linked object (if this end has multiplicity of 1) or collection of all linked objects (if this end has multiplicity upper bound > 1) to the passed object. In section 5.3.1 (separation of mof and service mapp
Actions taken:
November 15, 2005: received issue
March 8, 2006: closed issue

Issue 9175: Resolution of issue 9154 does not work for primitives (mof2idl-ftf)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary:
The resolution of issue 9154 cannot work for primitive types, since all of
the operations in the reflective interfaces are typed to MOFObject (and
primitive types are no MOFObjects).
 
Discussion:
This problem was already known and mentioned by Pete Rivett during the
ballot 2 vote. However - unfortunately - the wrong text went into the
resolution due to a misunderstanding. This resolution resolves this bug,
which otherwise would definitely restrict the implementability of the spec.

Resolution:
Revised Text: Resolution: Changed text in section 6.2.2 from To support a more convenient access to collections, we propose the use of a reflective iterator defined in the MOF IDL module. The iterator interface declares the following operations: to To support a more convenient access to collections, we propose to use a generic MOFIterator defined in the MOF IDL module. The iterator interface declares the following operations: The IDL definition and text was changed from: interface ReflectiveIterator { MOFObject get_value () raises (MofError); void insert_value ( in MOFObject value ) raises (MofError); void modify_value ( in MOFObject value ) raises (MofError); MOFObject remove_value () raises (MofError); ReflectiveIterator next_one() raises (MofError); ReflectiveIterator previous_one() raises (MofError); ReflectiveIterator begin() raises (MofError); ReflectiveIterator end() raises (MofError); boolean is_empty(); boolean is_at_end(); }; to Since the only common base type in IDL is CORBA::Any (which might not be very manageable for clients in querying collections), the type of the iterator interface is further distinguished between object types and primitive types. Furthermore, valuetypes are introduced to retrieve the collection in a convenient way in cases clients want to operate in pure local manner. For all objects (i.e. MOFObjects), the iterator interface is: abstract interface MOFIterator : MOFObject { boolean is_empty(); boolean is_at_end(); }; abstract interface MOFObjectIterator : MOFIterator { MOFObject get_value () raises (MofError); void insert_value ( in MOFObject value ) raises (MofError); void modify_value ( in MOFObject value ) raises (MofError); MOFObject remove_value () raises (MofError); MOFObjectIterator next_one() raises (MofError); MOFObjectIterator previous_one() raises (MofError); MOFObjectIterator begin() raises (MofError); MOFObjectIterator end() raises (MofError); }; typedef sequence < MOFObject > MOFObjectCollection; valuetype MOFObjectIteratorAsValue : MOFState supports MOFObjectIterator { private MOFObjectCollection objects; factory create( in MOFObjectCollection initializer ); }; interface MOFObjectIteratorAsRef : MOFObjectIterator { MOFObjectIteratorAsValue as_value() raises (MOFError); }; For the primitive types Integer, String, Boolean and UnlimitedNatural the following iterators are provided: abstract interface <primitive_type>Iterator : MOFIterator { <primitive_type> get_value () raises (MofError); void insert_value ( in <primitive_type> value ) raises (MofError); void modify_value ( in <primitive_type> value ) raises (MofError); <primitive_type> remove_value () raises (MofError); <primitive_type>Iterator next_one() raises (MofError); <primitive_type>Iterator previous_one() raises (MofError); <primitive_type>Iterator begin() raises (MofError); <primitive_type>Iterator end() raises (MofError); }; typedef sequence < <primitive_type_as_idl_type> > <primitive_type_name>Collection; valuetype <primitive_type>IteratorAsValue : MOFState supports <primitive_type>Iterator { private <primitive_type>Collection values; factory create( in <primitive_type>Collection initializer ); }; interface <primitive_type>IteratorAsRef : <primitive_type>Iterator { <primitive_type>IteratorAsValue as_value() raises (MOFError); }; Further: The interfaces of the collections themselves, ReflectiveCollection and ReflectiveSequence provided by MOF2.0 Core are extended by the get_iterator() operation which returns a ReflectiveIterator. interface ReflectiveCollection { ReflectiveIterator get_iterator() raises (MofError); // other MOF2 core operations. }; was changed to: The interfaces of the collections themselves, ReflectiveCollection and ReflectiveSequence provided by MOF2.0 Core are extended by the get_iterator() operation which returns a MOFIterator. Thereby, clients can simply get an iterator instance (by reference or by value) and iterate over the collection: interface ReflectiveCollection { MOFIterator get_iterator() raises (MofError); // other MOF2 core operations. }; The returned MOFIterator reference is then of a more specific type MOFObjectIterator or primitive iterator type. And finally: ReflectiveCollection create_collection(boolean is_ordered); changed to: ReflectiveCollection create_collection( in boolean is_ordered );
Actions taken:
November 24, 2005: received issue
March 8, 2006: closed issue

Discussion:
Discussion:
Basically, the types of the iterator interface need to be changed from MOFObject to CORBA::Any. Instead of this generic solution which enforces clients to always use the any type, we introduce separate iterators for MOFObject and the primitive types, such that clients do not need to work with CORBA::Any all the time.