Skip to content

ClassCastException with ImageNodeStyleDescription

Try to reproduce this bug after the next update of Sirius-Web in Papyrus-Web

You need to be on the commit 0e80e9ee on Papyrus-Web:

  • Create a Papyrus-Studio Project
  • Go into the Component Diagram
  • Create a Sub-Node in the SHARED_DESCRIPTIONS folder
  • Go into this new subNode (don't edit it)
    • Delete the created RectangularNodeStyleDescription
    • Create a new ImageStyle (ImageNodeStyleDescription) instead (don't define the associate Shape)
  • Reference the SubNode as a new Compartment of Interface (rootNode and SubNode)
  • Create a new UML Model
    • Create a Component Diagram
    • Create Interface
      • all works fine, but the interface only have 3 Compartments and not yet 4
  • Return into the Studio, and edit the SubNode like this:
    • domainType : uml::Element
    • semanticCandidateExpression: aql:self
  • Now return in your model
    • If I remember well, the existing diagram with Interfaces will be broken with an exception
    • Create a new Component Diagram and create an Interface inside it:
      • The interface will be semantically created, but won't appear in the diagram

      • You terminal will display an exception like this:

        2024-10-01T15:18:59.577+02:00 WARN 13180 --- [47-84f7fd762f5c] o.e.s.c.c.e.EditingContextEventProcessor : class org.eclipse.sirius.components.view.diagram.impl.ImageNodeStyleDescriptionImpl cannot be cast to class org.eclipse.sirius.components.view.diagram.RectangularNodeStyleDescription (org.eclipse.sirius.components.view.diagram.impl.ImageNodeStyleDescriptionImpl and org.eclipse.sirius.components.view.diagram.RectangularNodeStyleDescription are in unnamed module of loader 'app')

         

        java.lang.ClassCastException: class org.eclipse.sirius.components.view.diagram.impl.ImageNodeStyleDescriptionImpl cannot be cast to class org.eclipse.sirius.components.view.diagram.RectangularNodeStyleDescription (org.eclipse.sirius.components.view.diagram.impl.ImageNodeStyleDescriptionImpl and org.eclipse.sirius.components.view.diagram.RectangularNodeStyleDescription are in unnamed module of loader 'app')

        at org.eclipse.sirius.components.view.emf.diagram.StylesFactory.createNodeStyle(StylesFactory.java:124) ~[sirius-components-view-emf-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.view.emf.diagram.ViewDiagramDescriptionConverter.lambda$convert$12(ViewDiagramDescriptionConverter.java:240) ~[sirius-components-view-emf-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.diagrams.components.NodeComponent.doRender(NodeComponent.java:173) ~[sirius-components-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.diagrams.components.NodeComponent.render(NodeComponent.java:103) ~[sirius-components-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderComponent(BaseRenderer.java:200) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:121) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderChildren(BaseRenderer.java:170) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderFragment(BaseRenderer.java:163) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:115) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderComponent(BaseRenderer.java:202) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:121) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderChildren(BaseRenderer.java:170) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderInstance(BaseRenderer.java:143) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:117) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderChildren(BaseRenderer.java:170) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderFragment(BaseRenderer.java:163) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:115) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderComponent(BaseRenderer.java:202) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:121) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderChildren(BaseRenderer.java:170) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderInstance(BaseRenderer.java:143) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:117) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderComponent(BaseRenderer.java:202) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.representations.BaseRenderer.renderElement(BaseRenderer.java:121) ~[sirius-components-representations-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.diagrams.renderer.DiagramRenderer.render(DiagramRenderer.java:42) ~[sirius-components-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.diagrams.DiagramCreationService.doRender(DiagramCreationService.java:151) ~[sirius-components-collaborative-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.diagrams.DiagramCreationService.refresh(DiagramCreationService.java:114) ~[sirius-components-collaborative-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.diagrams.DiagramEventProcessor.refresh(DiagramEventProcessor.java:184) ~[sirius-components-collaborative-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.editingcontext.EditingContextEventProcessor.lambda$setupChangeDescriptionSinkConsumer$0(EditingContextEventProcessor.java:165) ~[sirius-components-collaborative-2024.7.5.jar:2024.7.5]

        at reactor.core.publisher.LambdaSubscriber.onNext(LambdaSubscriber.java:160) ~[reactor-core-3.6.7.jar:3.6.7]

        at reactor.core.publisher.SinkManyUnicast.drainRegular(SinkManyUnicast.java:284) ~[reactor-core-3.6.7.jar:3.6.7]

        at reactor.core.publisher.SinkManyUnicast.drain(SinkManyUnicast.java:365) ~[reactor-core-3.6.7.jar:3.6.7]

        at reactor.core.publisher.SinkManyUnicast.tryEmitNext(SinkManyUnicast.java:239) ~[reactor-core-3.6.7.jar:3.6.7]

        at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100) ~[reactor-core-3.6.7.jar:3.6.7]

        at org.eclipse.sirius.components.collaborative.diagrams.handlers.InvokeSingleClickOnDiagramElementToolEventHandler.handle(InvokeSingleClickOnDiagramElementToolEventHandler.java:128) ~[sirius-components-collaborative-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.diagrams.DiagramEventProcessor.handle(DiagramEventProcessor.java:174) ~[sirius-components-collaborative-diagrams-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.editingcontext.EditingContextEventProcessor.handleRepresentationInput(EditingContextEventProcessor.java:347) ~[sirius-components-collaborative-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.editingcontext.EditingContextEventProcessor.doHandle(EditingContextEventProcessor.java:275) ~[sirius-components-collaborative-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.collaborative.editingcontext.EditingContextEventProcessor.lambda$handle$2(EditingContextEventProcessor.java:241) ~[sirius-components-collaborative-2024.7.5.jar:2024.7.5]

        at org.eclipse.sirius.components.web.concurrent.DelegatingRequestContextRunnable.run(DelegatingRequestContextRunnable.java:40) ~[sirius-components-web-2024.7.5.jar:2024.7.5]

        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]

        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]

        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]

        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]

        at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]