DEPL 1.0 MAILINGLIST Avatar
  1. OMG Issue

DEPL — Misuse of XMI Proxy Links

  • Key: DEPL-65
  • Legacy Issue Number: 7164
  • Status: closed  
  • Source: Zuehlke Engineering ( Frank Pilhofer)
  • Summary:

    Section 9.5.8, "Transformation Exceptions and Extensions" in the
    "PSM for CCM to PSM for CCM for XML Transformation" chapter, contains
    the text:

    If the link attribute of a ComponentPackageDescription proxy that
    is part of a SubcomponentInstantiationDescription element does not
    contain a fragment identifier, then the referenced file can be
    either a Component Package Descriptor or a package (i.e. a ZIP
    file with the ".cpk" extension containing the package).

    This was added for better modularity, to allow a package to "import"
    another package, maybe from some external location. On second thought,
    considering the implementation impact, this does not seem like such
    a good idea, because it overloads an XMI proxy object with a second
    meaning: either do what XMI says, or import a package.

    It is also self-contradictory with the preceding sentence, which gives
    clear semantics to linking to an XML document without a fragment
    identifier.

    I suggest to replace this with an explicit importing mechanism: add a
    new class to the Component Data Model called "ComponentPackageImport",
    and use it in the SubcomponentInstantiationDescription. This resolution
    clarifies how to reuse packages.

    Proposed resolution:

    Add a new class "ComponentPackageImport" to the Component Data Model.

    6.4.x ComponentPackageImport

    6.4.x.1 Description

    Imports a package via an URL.

    6.4.x.2 Attributes

    location: String [1..*]
    Alternative locations of the package that is to be imported.

    6.4.x.3 Associations

    None.

    6.4.x.4 Semantics

    A ComponentPackageImport can be used instead of a
    PackageConfiguration
    to import a package, rather than providing the package "inline."

    In 6.4.7.1 (SubcomponentInstantiationDescription description), replace
    the
    second paragraph,

    The SubcomponentInstantiationDescription links to a package that
    provides
    implementations for the sub-component that is to be instantiatiated.
    There
    is either a link to a ComponentPackageDescription in case a package
    recursively contains packages for its sub-components, or there is a
    link
    to a ComponentPackageReference that contains the requiredType of a
    component
    interface. Users of the Component Data Model will have to contact a
    Repository (possibly via a search path) in order to find a package
    that
    implements this interface.

    with

    The SubcomponentInstantiationDescription specifies a package to
    instantiate
    a subcomponent from, and configures this subcomponent instance. The
    package
    can be provided in one of three ways:

    • The package can be provided inline, as part of the same package,
      using a
      PackageConfiguration.
    • A package can be imported, using a ComponentPackageImport. The
      imported
      package may be part of the enveloping package, or it may be
      referenced
      from an external location. This allows reusing packages.
    • A package can be referenced indirectly, using a
      ComponentPackageReference.
      Users of the Component Data Model will have to contact a
      Repository
      (possibly via a search path) in order to find an appropriate
      package.

    In 6.4.7.3 (SubcomponentInstantiationDescription associations), add

    importedPackage: ComponentPackageImport [0..1]
    Imports a package by reference.

    In 6.4.7.4 (SubcomponentInstantiationDescription constraints), replace

    There can be either a package or a reference, but not both.

    with

    A package to supply an implementation for this subcomponent is
    either
    included, imported, or referenced:

    context SubcomponentInstantiationDescription inv:
    Set

    {self.package, self.importedPackage, self.reference}

    ->size() =
    1

    In 6.5.1.5 (RepositoryManager semantics), add

    The installPackage and createPackage operations recursively resolve
    all
    imported packages: in all SubcomponentInstantiationDescription
    elements,
    ComponentPackageImport elements are replaced with
    PackageConfiguration
    elements, containing the data that was loaded from the imported
    package.
    PackageConfiguration elements returned from findConfigurationByName
    or
    findConfigurationByUUID do not contain ComponentPackageImport
    elements.

    In 9.5.8 (Transformation Exceptions and Extensions), delete the second
    sentence of the last paragraph, which reads

    If the link attribute of a ComponentPackageDescription proxy that
    is part of a SubcomponentInstantiationDescription element does not
    contain a fragment identifier, then the referenced file can be
    either a Component Package Descriptor or a package (i.e. a ZIP
    file with the ".cpk" extension containing the package).

  • Reported: DEPL 1.0b1 — Tue, 16 Mar 2004 05:00 GMT
  • Disposition: Resolved — DEPL 1.0
  • Disposition Summary:

    No Data Available

  • Updated: Fri, 6 Mar 2015 20:58 GMT