tree cdb16c0c207378c91cec258a3fdd5ce0d64f3824
parent 661e0d1599220da7a5ed34d6f67ec8603e9d6a3e
author Laurent Redor <laurent.redor@obeo.fr> 1570107707 +0200
committer Laurent Redor <laurent.redor@obeo.fr> 1570107707 +0200

[fix] Avoid a potential NPE

The test org.eclipse.sirius.tests.swtbot.SessionEditorProjectRemovalTest
sometimes fails in NPE (see stack tract at the end of the comment).
It is possible if the DASI is closed before the
org.eclipse.sirius.business.internal.session.danalysis.DViewOperations.getSelectedViewpoints(boolean)
is called. In this case, session.getMainAnalysis() return null.

Corresponding stack trace:
java.lang.NullPointerException
	at org.eclipse.sirius.business.internal.session.danalysis.DViewOperations.getSelectedViews(DViewOperations.java:83)
	at org.eclipse.sirius.business.internal.session.danalysis.DViewOperations.getSelectedViewpoints(DViewOperations.java:71)
	at org.eclipse.sirius.business.internal.session.danalysis.DAnalysisSessionImpl.getSelectedViewpoints(DAnalysisSessionImpl.java:1298)
	at org.eclipse.sirius.ui.tools.internal.viewpoint.ViewpointHelper.isViewpointEnabledInSession(ViewpointHelper.java:113)
	at org.eclipse.sirius.ui.tools.internal.wizards.pages.SiriusRepresentationWithInactiveStatusLabelProvider.getText(SiriusRepresentationWithInactiveStatusLabelProvider.java:62)
	at org.eclipse.ui.internal.navigator.NavigatorDecoratingLabelProvider$StyledLabelProviderAdapter.getStyledText(NavigatorDecoratingLabelProvider.java:71)
...
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3919)
...

Change-Id: I8a2290c53edd4ef1282885d06ebb2fdcdc91a7ca
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
