-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major
-
None
-
Affects Version/s: CSD05
-
Component/s: None
-
None
The ImplementationArtifact element has an OPTIONAL attribute called operationName. According to the specification (Line 968), if this attribute is not specified, the implementation artifact is assumed to provide the implementation for all operations defined within the containing interface. Here is a scenario that current overriding rules can not cover.
Consider a Node Type "A1" defining two operations within one interface. The Node Type "A1" also defines an implementation artifact "X" in the interface with no operation name specified (for example, the implementation artifact "X" is a war and operations are REST operations). This means both operations take "X" as their implementation artifacts. Developers define the Node Type "B" derived from Node Type "A1" and they want to use a new implementation artifact "Y" for both operations to substitute the implementation artifact "X". According to the current overriding rules, if an implementation artifact defined by the Node Type under definition has the same operation name and type as an implementation artifact of the Node Type derived from, the former implementation artifact substitutes the latter one. In this case, the implementation artifact "X" cannot be substituted because it has no operation name specified.