Bug 489569 - Session not openable when specifier has set same id for 2 RepresentationDescriptions
Summary: Session not openable when specifier has set same id for 2 RepresentationDescr...
Status: NEW
Alias: None
Product: Sirius
Classification: Modeling
Component: Core (show other bugs)
Version: 3.1.0   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: triaged
Depends on:
Blocks:
 
Reported: 2016-03-14 12:46 EDT by Esteban DUGUEPEROUX CLA
Modified: 2016-03-14 12:51 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Esteban DUGUEPEROUX CLA 2016-03-14 12:46:22 EDT
I get a ClassCastException at session reopening, after odesign change or having 2 representation descriptions with same id :

java.lang.ClassCastException: org.eclipse.sirius.diagram.business.internal.metamodel.description.spec.DiagramDescriptionSpec cannot be cast to org.eclipse.sirius.table.metamodel.table.description.TableDescription
	at org.eclipse.sirius.table.metamodel.table.impl.DTableImpl.getDescription(DTableImpl.java:218)
	at org.eclipse.sirius.table.metamodel.table.impl.DTableImpl.eGet(DTableImpl.java:329)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1011)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1003)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:998)
	at org.eclipse.sirius.ecore.extender.tool.internal.ReferencesResolver.resolveCrossReferences(ReferencesResolver.java:100)
	at org.eclipse.sirius.ecore.extender.tool.internal.ReferencesResolver.doResolveAll(ReferencesResolver.java:93)
	at org.eclipse.sirius.ecore.extender.tool.internal.ReferencesResolver.resolve(ReferencesResolver.java:74)
	at org.eclipse.sirius.ecore.extender.tool.api.ModelUtils.resolveAll(ModelUtils.java:453)
	at org.eclipse.sirius.business.internal.session.danalysis.SessionResourcesTracker.forceLoadingOfEveryLinkedResource(SessionResourcesTracker.java:173)
	at org.eclipse.sirius.business.internal.session.danalysis.SessionResourcesTracker.initialize(SessionResourcesTracker.java:95)
	at org.eclipse.sirius.business.internal.session.danalysis.DAnalysisSessionImpl.open(DAnalysisSessionImpl.java:1136)
	at org.eclipse.sirius.ui.tools.internal.views.common.modelingproject.OpenRepresentationsFileJob.performOpenSession(OpenRepresentationsFileJob.java:311)
	at org.eclipse.sirius.ui.tools.internal.views.common.modelingproject.OpenRepresentationsFileJob.runInWorkspace(OpenRepresentationsFileJob.java:208)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)


Scenario to reproduce:
1. Create a simple project
2. Add My.odesign VSM with a Viewpoint on .ecore file
3. Add My.ecore, My.aird and select the Viewpoint of My.odesign
4. In My.odesign add a DiagramDescription with id="Metamodel", reference ecore metametamodel from Metamodels tab and set ecore.EPackage as domainClass
5. Create a Diagram from this DiagramDescription
6. In My.odesign add a TableDescription with id="Metamodel", reference ecore metametamodel from Metamodels tab and set ecore.EPackage as domainClass
7. Create a Table from this TableDescription
8. Save, close and try to reopen the session => KO we get the previous ClassCastException
Odesign validation detects that there is a conflict in id of RepresentationDescriptions but should not crash like that at session opening.
In addition the validation message about id collision is not very user-friendly : 

The feature 'ownedRepresentations' has key [name='Metamodel'] for 'Metamodel' which collides with that of 'Metamodel'

"ownedRepresentations" is a internal Sirius reference, the message talks about key while in odesign editor it is about id, and the error marker is displayed on Viewpoint and not on RepresentationDescription in fault. The message is not explicit about which RepresentationDescriptions are in collision which don't help when we have a big odesign.

At first Sirius specifier experience, we can encounter easily this kind of exception even with a valid odesign :


1. Create a simple project
2. Add My.odesign VSM with a Viewpoint on .ecore file
3. Add My.ecore, My.aird and select the Viewpoint of My.odesign
4. In My.odesign add a DiagramDescription with id="Metamodel", reference ecore metametamodel from Metamodels tab and set ecore.EPackage as domainClass
5. Create a Diagram from this DiagramDescription
6. In My.odesign, delete previous DiagramDescription, add a TableDescription with id="Metamodel", reference ecore metametamodel from Metamodels tab and set ecore.EPackage as domainClass
7. Save the odesign => KO we get the following exceptions : 

!ENTRY org.eclipse.ui.navigator 4 0 2016-03-14 17:44:42.315
!MESSAGE An exception occurred invoking extension: org.eclipse.sirius.ui.resource.content.session for object org.eclipse.jface.viewers.TreePath@a955713d
!STACK 0
java.lang.ClassCastException: org.eclipse.sirius.table.business.internal.metamodel.description.spec.EditionTableDescriptionSpec cannot be cast to org.eclipse.sirius.diagram.description.DiagramDescription
	at org.eclipse.sirius.diagram.impl.DDiagramImpl.getDescription(DDiagramImpl.java:316)
	at org.eclipse.sirius.diagram.business.internal.dialect.DiagramDialectServices.getDescription(DiagramDialectServices.java:306)
	at org.eclipse.sirius.business.internal.dialect.DialectManagerImpl.getDescription(DialectManagerImpl.java:387)
	at org.eclipse.sirius.ui.tools.internal.views.common.SessionWrapperContentProvider$InViewpointPredicate.apply(SessionWrapperContentProvider.java:342)
	at org.eclipse.sirius.ui.tools.internal.views.common.SessionWrapperContentProvider$InViewpointPredicate.apply(SessionWrapperContentProvider.java:1)
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
	at com.google.common.collect.Iterators.addAll(Iterators.java:356)
	at com.google.common.collect.Lists.newArrayList(Lists.java:146)
	at com.google.common.collect.Lists.newArrayList(Lists.java:128)
	at org.eclipse.sirius.ui.tools.internal.views.common.SessionWrapperContentProvider.getRepresentationsAssociatedToEObject(SessionWrapperContentProvider.java:198)
	at org.eclipse.sirius.ui.tools.internal.views.common.SessionWrapperContentProvider.doGetChildren(SessionWrapperContentProvider.java:140)
	at org.eclipse.sirius.ui.tools.internal.views.common.SessionWrapperContentProvider.getChildren(SessionWrapperContentProvider.java:88)
	at org.eclipse.sirius.common.ui.tools.api.navigator.GroupingContentProvider.getChildren(GroupingContentProvider.java:165)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider.getChildren(SiriusCommonContentProvider.java:183)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider.hasChildren(SiriusCommonContentProvider.java:412)
	at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.hasChildren(SafeDelegateTreeContentProvider.java:112)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.callNormalHasChildren(NavigatorContentServiceContentProvider.java:444)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.access$4(NavigatorContentServiceContentProvider.java:439)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$3.run(NavigatorContentServiceContentProvider.java:407)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.hasChildren(NavigatorContentServiceContentProvider.java:392)
	at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.hasChildren(NavigatorContentServiceContentProvider.java:436)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2128)
	at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:538)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2166)
	at org.eclipse.jface.viewers.AbstractTreeViewer.optionallyPruneChildren(AbstractTreeViewer.java:2798)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2598)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1913)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:669)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1920)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:669)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1920)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:669)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1920)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:669)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1888)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1845)
	at org.eclipse.ui.navigator.CommonViewer.internalRefresh(CommonViewer.java:527)
	at org.eclipse.jface.viewers.StructuredViewer.lambda$1(StructuredViewer.java:1542)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1458)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:354)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1419)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1542)
	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:535)
	at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:344)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.filter.FilteredCommonTree$NotifyingCommonViewer.refresh(FilteredCommonTree.java:1216)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider$3.run(SiriusCommonContentProvider.java:620)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider.runUpdates(SiriusCommonContentProvider.java:782)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider.runPendingUpdates(SiriusCommonContentProvider.java:774)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider.access$9(SiriusCommonContentProvider.java:765)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.SiriusCommonContentProvider$4.runInUIThread(SiriusCommonContentProvider.java:751)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:97)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3807)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3446)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:169)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:384)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:481)
	at org.eclipse.sirius.editor.tools.internal.presentation.CustomSiriusEditor.doSave(CustomSiriusEditor.java:438)
	at org.eclipse.ui.internal.SaveableHelper$2.run(SaveableHelper.java:156)
	at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:285)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:460)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368)
	at org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2181)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2177)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:293)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:271)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:161)
	at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3901)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3915)
	at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:54)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
	at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:54)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:282)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:264)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:494)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:491)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:286)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:507)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:558)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:378)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:324)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:86)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1550)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1338)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1363)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1348)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1375)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:763)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:3358)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:811)
	at org.eclipse.swt.widgets.Tree.gtk_key_press_event(Tree.java:1922)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1990)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:5740)
	at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:3663)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4730)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:9485)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1225)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2477)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3441)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1118)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1019)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:157)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:691)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:609)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1516)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1489)

!ENTRY org.eclipse.jface 4 0 2016-03-14 17:44:42.319
!MESSAGE Unhandled event loop exception during blocked modal context.
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.ClassCastException: org.eclipse.sirius.table.business.internal.metamodel.description.spec.EditionTableDescriptionSpec cannot be cast to org.eclipse.sirius.diagram.description.DiagramDescription)
	at org.eclipse.swt.SWT.error(SWT.java:4522)
	at org.eclipse.swt.SWT.error(SWT.java:4437)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3807)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3446)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:169)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:384)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:481)
	at org.eclipse.sirius.editor.tools.internal.presentation.CustomSiriusEditor.doSave(CustomSiriusEditor.java:438)
	at org.eclipse.ui.internal.SaveableHelper$2.run(SaveableHelper.java:156)
	at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:285)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:460)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368)
	at org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2181)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2177)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:293)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:271)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:161)
	at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3901)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3915)
	at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:54)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
	at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:54)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:282)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:264)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:494)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:491)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:286)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:507)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:558)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:378)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:324)
	at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:86)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1550)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1338)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1363)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1348)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1375)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:763)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:3358)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:811)
	at org.eclipse.swt.widgets.Tree.gtk_key_press_event(Tree.java:1922)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1990)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:5740)
	at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:3663)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4730)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:9485)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1225)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2477)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3441)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1118)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1019)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:157)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:691)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:609)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1516)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1489)
Caused by: java.lang.ClassCastException: org.eclipse.sirius.table.business.internal.metamodel.description.spec.EditionTableDescriptionSpec cannot be cast to org.eclipse.sirius.diagram.description.DiagramDescription
	at org.eclipse.sirius.diagram.impl.DDiagramImpl.getDescription(DDiagramImpl.java:316)
	at org.eclipse.sirius.diagram.ui.tools.internal.palette.PaletteManagerImpl.updatePalette(PaletteManagerImpl.java:247)
	at org.eclipse.sirius.diagram.ui.tools.internal.palette.PaletteManagerImpl.updatePalette(PaletteManagerImpl.java:219)
	at org.eclipse.sirius.diagram.ui.tools.internal.palette.PaletteManagerImpl.update(PaletteManagerImpl.java:180)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorSessionListenerDelegate.reloadPalette(DDiagramEditorSessionListenerDelegate.java:214)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorSessionListenerDelegate.run(DDiagramEditorSessionListenerDelegate.java:119)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
	... 80 more
Comment 1 Esteban DUGUEPEROUX CLA 2016-03-14 12:51:05 EDT
For the second scenario, a Repair of the aird don't help then we loose all representations.

Technically this is due to the use of IdentifiedElement.name attribute as EKeys for element having EReference typed to subtype of IdentifiedElement.
For example Viewpoint.ownedRepresentations:RepresentationDescription.