Community
Participate
Working Groups
Build Identifier: Build id: 20100617-1415 Hi all, i am experiencing problems with the edition of diagrams. I use PapyrusMDT 0.7.0.v201007251735 I have two diagrams in witch the same interface is referenced, an operation in the interface and the operation is displayed on the diagrams. If I have only one diagram opened and I delete (completely, not only hide from the diagram) the operation, the second diagram is corrupted. Here is the satck trace: java.lang.ClassCastException: org.eclipse.uml2.uml.internal.impl.InterfaceImpl cannot be cast to org.eclipse.uml2.uml.Operation at org.eclipse.papyrus.diagram.common.helper.OperationLabelHelper.getUMLElement(OperationLabelHelper.java:129) at org.eclipse.papyrus.diagram.common.helper.OperationLabelHelper.getUMLElement(OperationLabelHelper.java:1) at org.eclipse.papyrus.diagram.common.helper.StereotypedElementLabelHelper.stereotypesToDisplay(StereotypedElementLabelHelper.java:232) at org.eclipse.papyrus.diagram.common.helper.StereotypedElementLabelHelper.labelToDisplay(StereotypedElementLabelHelper.java:361) at org.eclipse.papyrus.diagram.common.helper.StereotypedElementLabelHelper.refreshEditPartDisplay(StereotypedElementLabelHelper.java:351) at org.eclipse.papyrus.diagram.clazz.custom.policies.OperationLabelEditPolicy.refreshDisplay(OperationLabelEditPolicy.java:397) at org.eclipse.papyrus.diagram.common.editpolicies.AbstractMaskManagedEditPolicy.refresh(AbstractMaskManagedEditPolicy.java:90) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$3.run(GraphicalEditPart.java:858) at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.refresh(GraphicalEditPart.java:851) at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:252) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223) at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:211) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.addChild(GraphicalEditPart.java:1319) at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:771) at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:718) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:633) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$3(GraphicalEditPart.java:1) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$3.run(GraphicalEditPart.java:861) at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.refresh(GraphicalEditPart.java:851) at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:252) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223) at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:211) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.addChild(GraphicalEditPart.java:1319) at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:771) at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:718) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:633) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$3(GraphicalEditPart.java:1) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$3.run(GraphicalEditPart.java:861) at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.refresh(GraphicalEditPart.java:851) at org.eclipse.papyrus.diagram.common.editparts.UMLNodeEditPart.refresh(UMLNodeEditPart.java:79) at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:252) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223) at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:211) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.addChild(GraphicalEditPart.java:1319) at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:771) at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:718) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:633) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.access$3(GraphicalEditPart.java:1) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart$3.run(GraphicalEditPart.java:861) at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328) at org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart.refresh(GraphicalEditPart.java:851) at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:252) at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223) at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:211) at org.eclipse.gef.editparts.SimpleRootEditPart.setContents(SimpleRootEditPart.java:105) at org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(AbstractEditPartViewer.java:617) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer.setContents(DiagramGraphicalViewer.java:378) at org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(AbstractEditPartViewer.java:626) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.initializeGraphicalViewerContents(DiagramEditor.java:872) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.initializeGraphicalViewer(DiagramEditor.java:865) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorWithFlyOutPalette.initializeGraphicalViewer(DiagramEditorWithFlyOutPalette.java:116) at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.initializeGraphicalViewer(DiagramDocumentEditor.java:175) at org.eclipse.papyrus.diagram.clazz.part.UMLDiagramEditor.initializeGraphicalViewer(UMLDiagramEditor.java:500) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.createGraphicalViewer(DiagramEditor.java:807) at org.eclipse.papyrus.diagram.clazz.UmlClassDiagramForMultiEditor.createGraphicalViewer(UmlClassDiagramForMultiEditor.java:97) at org.eclipse.gef.ui.parts.GraphicalEditor.createPartControl(GraphicalEditor.java:171) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.createPartControl(DiagramEditor.java:1580) at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorWithFlyOutPalette.createPartControl(DiagramEditorWithFlyOutPalette.java:328) at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.createPartControl(DiagramDocumentEditor.java:1511) at org.eclipse.papyrus.sasheditor.internal.EditorPart.createEditorPartControl(EditorPart.java:263) at org.eclipse.papyrus.sasheditor.internal.EditorPart.createPartControl(EditorPart.java:169) at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.createChildPart(TabFolderPart.java:903) at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.createTabItem(TabFolderPart.java:828) at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.synchronize2(TabFolderPart.java:743) at org.eclipse.papyrus.sasheditor.internal.RootPart.synchronize2(RootPart.java:139) at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.refreshTabsInternal(SashWindowsContainer.java:386) at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.refreshTabs(SashWindowsContainer.java:339) at org.eclipse.papyrus.sasheditor.editor.AbstractMultiPageSashEditor.refreshTabs(AbstractMultiPageSashEditor.java:171) at org.eclipse.papyrus.core.editor.CoreMultiDiagramEditor.access$5(CoreMultiDiagramEditor.java:1) at org.eclipse.papyrus.core.editor.CoreMultiDiagramEditor$3.contentChanged(CoreMultiDiagramEditor.java:187) at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.ContentChangedEventProvider.fireContentChanged(ContentChangedEventProvider.java:162) at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.ContentChangedEventProvider$EMFAdapter.notifyChanged(ContentChangedEventProvider.java:194) at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:380) at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:255) at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:300) at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:307) at org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl.addPage(TabFolderImpl.java:91) at org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl.addPage(SashModelImpl.java:145) at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.PageMngrImpl.openPage(PageMngrImpl.java:141) at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.TransactionalPageMngrImpl$5.doExecute(TransactionalPageMngrImpl.java:164) at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135) at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119) at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150) at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511) at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208) at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165) at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219) at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.TransactionalPageMngrImpl.openPage(TransactionalPageMngrImpl.java:169) at org.eclipse.papyrus.modelexplorer.actions.OpenDiagramAction.run(OpenDiagramAction.java:62) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) I have experienced this bug also with deletion of attributes (and I think it's not the only elements on witch it can be seen). I join a sample example witch is not my diagram because they are confidential but the behavior is exactly the same. Reproducible: Always Steps to Reproduce: 1.Import the SampleBasic.zip file containing a sample diagram 2.Open the Main diagram and the Module1 diagram (two Class diagrams) and no others 3.In the Module1 diagram, delete an operation of the Interface0Module1 interface (complete delete) 4.Open the Module3Dependencies diagram and the error comes.
Created attachment 181270 [details] The sample diagram before being corrupted
Created attachment 181271 [details] The sample diagram corrupted
Since the diagrams are corrupted it should be good for Papyrus to be able to reopen those corrupted diagrams.
Now this bug is solved by using a service edit. I have tested your example, now there is not corruption of diagram.