Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 469114

Summary: Unable to open a Papyrus diagram under Mars RC2
Product: [Modeling] Papyrus Reporter: Pierre-Charles David <pierre-charles.david>
Component: DiagramAssignee: Project Inbox <mdt-papyrus-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: cletavernier, give.a.damus, laurent.fasani
Version: 1.1.0   
Target Milestone: M4   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 469188    
Attachments:
Description Flags
The features and plug-ins installed when experiencing the issue
none
error_log_win64 none

Description Pierre-Charles David CLA 2015-06-02 07:43:24 EDT
Created attachment 254019 [details]
The features and plug-ins installed when experiencing the issue

While trying to check if Sirius and Papyrus play well with each other in Mars, I stumbled upon a major issue: I'm completely unable to open an actual Papyrus diagram under Mars RC2. I checked with "Eclipse IDE for Eclipse Committers" to make sure it was not some unintended interaction between us (Sirius) and Papyrus, but I can indeed reproduce it with "Eclipse IDE for Eclipse Committers", which does not contain Sirius.

Steps to reproduce:
1. Install Eclipse for Commiters RC2 (eclipse-committers-mars-RC2-linux-gtk-x86_64.tar.gz in my case, I'm under Ubuntu 15.04 64bits, OpenJDK 1.7.0_79-b14).
2. Select Help > Install New Software...
3. Choose Mars as a source, and in the "Modeling" category, check only "Papyrus UML"
4. Validate the install and restart.
5. Go the the "Papyrus" perspective. In the "Project Explorer" select "New > Papyrus Project". Select "UML", Next, give the project a name and finish.
6. A new project is created and a diagram editor named "model.di" is opened, but it is blank (grey actually), with not even a palette.
7. Open the error log. Apparently something went wrong:

eclipse.buildId=4.5.0.I20150522-2000
java.version=1.7.0_79
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR
Framework arguments:  -product org.eclipse.epp.package.committers.product
Command-line arguments:  -data file:/home/pcdavid/Downloads/eclipse/workspace/ -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.committers.product

org.eclipse.ui
Error
Tue Jun 02 13:13:16 CEST 2015
Unhandled event loop exception

org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:252)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:234)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.setEnabled(HandlerServiceHandler.java:80)
	at org.eclipse.core.commands.Command.setEnabled(Command.java:875)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.canExecute(HandlerServiceImpl.java:179)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.canExecute(HandlerServiceImpl.java:165)
	at org.eclipse.ui.internal.quickaccess.CommandProvider.getElements(CommandProvider.java:77)
	at org.eclipse.ui.internal.quickaccess.QuickAccessProvider.getElementsSorted(QuickAccessProvider.java:56)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents.computeMatchingEntries(QuickAccessContents.java:324)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents.refresh(QuickAccessContents.java:128)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents$2.modifyText(QuickAccessContents.java:524)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4481)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1327)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3819)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3430)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
	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:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
Caused by: java.lang.NullPointerException
	at org.eclipse.emf.transaction.util.TransactionUtil.getEditingDomain(TransactionUtil.java:61)
	at org.eclipse.papyrus.infra.services.validation.commands.ValidateSubtreeCommand.<init>(ValidateSubtreeCommand.java:41)
	at org.eclipse.papyrus.infra.services.validation.handler.ValidateSubtreeHandler.getCommand(ValidateSubtreeHandler.java:30)
	at org.eclipse.papyrus.infra.services.validation.handler.AbstractCommandHandler.setEnabled(AbstractCommandHandler.java:162)
	at org.eclipse.ui.internal.handlers.HandlerProxy.setEnabled(HandlerProxy.java:234)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.setEnabled(E4HandlerProxy.java:132)
	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
	... 40 more


It seems so big an issue that I'm not sure I'm not missing something obvious, but the steps I followed seem completely legitimate. It might also be a transient issue due to the fact that the "mars" repo is still a moving target and contains versions from several Milestones/RCs. In that case, feel free to ignore.

I've attached the exact versions of all the features & plug-ins installed, extracted from Help > About Eclipse > Installation Details > Configuration
Comment 1 Camille Letavernier CLA 2015-06-02 08:45:23 EDT
Hi Pierre-Charles,

When creating an empty project like that, Papyrus doesn't automatically create any diagram. Only the model explorer (Semantic model) is expected to be initialized at this point, so Step. 6 is expected (Although, admittedly, it can be confusing)

After Step 6., I would expect you to have a "RootElement" in the ModelExplorer, and to be able to select it an create a new diagram on it (Either with Right Click > New Diagram, or from the corresponding Toolbar menu)

The exception seems unrelated (And I can't actually reproduce it)
Comment 2 Christian Damus CLA 2015-06-02 08:47:56 EDT
The diagram editor really needs to have a "welcome" page that has links to diagrams that can be opened and a button that creates a new diagram.  This page would always be present when there are no other pages open and could optionally be present when there are other editors.

I would volunteer to implement such a beast.  :-)
Comment 3 Laurent Fasani CLA 2015-06-02 09:03:23 EDT
Created attachment 254024 [details]
error_log_win64

I can reproduce the issue but with a different stack trace
Comment 4 Camille Letavernier CLA 2015-06-02 09:08:27 EDT
> I would volunteer to implement such a beast. :-)

Definitely; we were hoping to include this in Mars but other priorities showed up... :)

Maybe in SR1
Comment 5 Camille Letavernier CLA 2015-06-02 09:09:10 EDT
> I can reproduce the issue but with a different stack trace

This one has been fixed this morning :)
Comment 6 Pierre-Charles David CLA 2015-06-02 09:24:44 EDT
(In reply to Camille Letavernier from comment #1)
> Hi Pierre-Charles,
> 
> When creating an empty project like that, Papyrus doesn't automatically
> create any diagram. Only the model explorer (Semantic model) is expected to
> be initialized at this point, so Step. 6 is expected (Although, admittedly,
> it can be confusing)
> 
> After Step 6., I would expect you to have a "RootElement" in the
> ModelExplorer, and to be able to select it an create a new diagram on it
> (Either with Right Click > New Diagram, or from the corresponding Toolbar
> menu)

OK, I confirm: after step 6 I can indeed create a new diagram from the RootElement's context menu (although the context menu takes 2 good seconds to show up). I've reduced the priority to "Normal", but as it is not really a bug, feel free to close it. It seems the real issue would be more of a feature request to show some guidance to new users.

Sorry for the false alarm!
Comment 7 Christian Damus CLA 2016-03-10 09:50:02 EST
This was fixed in Neon M4 with bug 469188: the editor now shows a welcome page if it has no diagrams to present.