MOF 2.4 RTF Avatar
  1. OMG Issue

MOF24 — Problems in MOF operations delete(), invoke() and isInstanceOfType() operations

  • Key: MOF24-56
  • Legacy Issue Number: 15859
  • Status: closed  
  • Source: NASA ( Nicolas Rouquette)
  • Summary:

    13.3 describes an operation Object::delete() that does not appear in figure 13.2.
    The operation isInstanceOfType() makes sense for an Element but not for an Object where it is misspelled.
    The operation invoke() should be defined only on Object and should return set of Objects instead of a set of Elements.

    Resolution:

    in 13.3, delete the following operations:
    delete()
    isInstanceOfType(type : Class, includeSubtypes : Boolean) : Boolean

    replace:
    invoke(op:Operation, arguments : Argument[0..*]) : Element[0..*]
    with:
    invoke(op:Operation, arguments : Argument[0..*]) : Object[0..*]

    in the metamodel, add:
    MOF::CMOFReflection::Object::invoke(op:Operation, arguments : Argument[0..*]) : Object[0..*]

    in 13.4, delete the operation:
    invoke(op:Operation, arguments : Argument[0..*]) : Element[0..*]

    in 13.4, rename the operation:
    instanceOfType(type: Class, includeSubtypes: Boolean): Boolean
    to:
    isInstanceOfType(type : Class, includeSubtypes : Boolean) : Boolean

    Update the diagrams & metamodel accordingly

  • Reported: MOF 2.0 — Thu, 2 Dec 2010 05:00 GMT
  • Disposition: Resolved — MOF 2.4
  • Disposition Summary:

    It is unclear from the MOF2.0 Core specification where the Object::delete() operation is to be defined; it could be in MOF::Reflection::Object or in MOF::CMOFReflection::Object. It is also unclear whether each specialization of Object should have a delete operation – e.g., there is no delete() for MOF::Common::ReflectiveCollection. With so many important details under-specified, it is better to remove this operation than to leave it.
    Since the resolution to issue 15825 for Object::getType() is deferred, it does not make sense to have Object::isInstanceOfType() either, this operation should be deleted and only defined for Element as described in the summary.
    In 13.3, invoke() returns a collection of Elements but in 13.4, it returns a collection of Objects. Clearly an operation could return any kind of Object; the return type should be Object, not Element. Since MOF::Common::ReflectiveCollection provides the capability for representing a collection of Objects, it is not necessary for invoke() to return yet another collection of Objects, a single Object suffice; if the actual return is in fact a collection of Objects, then the return can be a single ReflectiveCollection object. Therefore, the multiplicity on the return parameter should be changed from 0..* to 0..1

  • Updated: Fri, 6 Mar 2015 23:15 GMT