ClassCastException for prime nodes extending prime nodes
Let node type BNode
with prime reference extend node type ANode
with prime reference.
node ANode {
prime this::SomeGraphGraphModel as refModel
...
}
node BNode extends ANode {
prime this::ANode as refNode
...
}
At runtime, accessing getRefModel()
on a BNode
causes a ClassCastException
:
java.lang.ClassCastException: class info.scce.cinco.product.somegraph.mglid.editor.graphiti.api.CANode cannot be cast to class info.scce.cinco.product.somegraph.mglid.somegraph.SomeGraphGraphModel
at info.scce.cinco.product.somegraph.mglid.somegraph.impl.ANodeImpl.getRefModel(ANodeImpl.java:247)
...
The reason for this is that BNodeImpl
does not have its own getRefModel()
method but instead falls back on ANodeImpl.getRefModel()
which casts whatever object is retrieved for getLibraryComponentUID()
.
public SomeGraphGraphModel getRefModel() {
String uid = ((info.scce.cinco.product.somegraph.mglid.somegraph.internal.InternalANode)getInternalElement()).getLibraryComponentUID();
return (info.scce.cinco.product.somegraph.mglid.somegraph.SomeGraphGraphModel) de.jabc.cinco.meta.core.referenceregistry.ReferenceRegistry.getInstance().getEObject(uid);
}
Example project: i325-example-project.zip
Edited by Steve Boßelmann