Description
A UML Package can have only 1 value for 'nestingPackage' (singular attribute) yet when we use MagicDraw to make a common package sharable, then use it in another package so we can easily reference its contents, e.g. classifiers, we get the below XMI example.
For the second artifact graph to be correct, the package href (href='common.mdxml#_16_0_1_1707042b_1306852862751_314490_803'), needs to be DE-referenced just like any other href, and the result linked into the element graph. But again
Package can have only 1 value for 'nestingPackage'.
One possible 'fix' might be to change fUML.Syntax.Classes.Kernel.Package implementation as below.
...
public class fUML.Syntax.Classes.Kernel.Package ...
...
if (packagedElement instanceof Package) {
this.nestedPackage.addValue((Package) packagedElement);
// prevents overwrite in the case where package is linked into
// another package hierarchy by means of href
if (((Package) packagedElement).nestingPackage == null)
((Package) packagedElement).nestingPackage = this;
}
...
}
//artifact 1
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1306852051135_154213_364' name='org' visibility='public'>
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1306852058245_627192_365' name='foo' visibility='public'>
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1307362731083_734976_1893' name='test' visibility='public'>
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1306852862751_314490_803' name='common' visibility='public'>
<packagedElement xmi:type='uml:Class' xmi:id='_16_0_1_1707042b_1306853514519_194257_909' name='PessimisticConcurrent' visibility='public' isAbstract='true'>
</packagedElement>
</packagedElement>
</packagedElement>
</packagedElement>
</packagedElement>
//artifact 2
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1319633687467_756099_368' name='org1' visibility='public'>
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1319633687482_30259_369' name='foo1' visibility='public'>
<packagedElement xmi:type='uml:Package' xmi:id='_16_0_1_1707042b_1319633687482_444742_370' name='test1' visibility='public'>
// this package can't have 2 parents
<packagedElement xmi:type='uml:Package' href='common.mdxml#_16_0_1_1707042b_1306852862751_314490_803'>
</packagedElement>
</packagedElement>
</packagedElement>
</packagedElement>