Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Barbin2016-05-18 15:49:32 +0000
committerFlorian Barbin2016-05-19 09:34:29 +0000
commit894ff9a8368e5e55bb4e4f3487c5ffcf1d705703 (patch)
treececaac63a18122209575a1c0650e4f160c816d77
parent048bd6be27cac84df93c21ef3c85bbb5cbb90077 (diff)
downloadorg.eclipse.sirius-894ff9a8368e5e55bb4e4f3487c5ffcf1d705703.tar.gz
org.eclipse.sirius-894ff9a8368e5e55bb4e4f3487c5ffcf1d705703.tar.xz
org.eclipse.sirius-894ff9a8368e5e55bb4e4f3487c5ffcf1d705703.zip
[493918] Make sure runNonUIValidation method disposes the new Shell.
* Also adds a new testCase in the existing DiagramValidationTest. Bug: 493918 Change-Id: I9758b7965449323fb7fef324d03604fc03db7db5 Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/ValidateAction.java14
-rw-r--r--plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/validation/DiagramValidationTest.java21
2 files changed, 32 insertions, 3 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/ValidateAction.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/ValidateAction.java
index a421bbe505..53a983dd15 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/ValidateAction.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/part/ValidateAction.java
@@ -36,7 +36,6 @@ import org.eclipse.emf.validation.service.ModelValidationService;
import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gmf.runtime.common.ui.util.IWorkbenchPartDescriptor;
-import org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;
import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil;
@@ -56,12 +55,14 @@ import org.eclipse.sirius.diagram.ui.edit.api.part.IDDiagramEditPart;
import org.eclipse.sirius.diagram.ui.internal.providers.SiriusMarkerNavigationProvider;
import org.eclipse.sirius.diagram.ui.internal.providers.SiriusValidationProvider;
import org.eclipse.sirius.diagram.ui.tools.internal.marker.SiriusMarkerNavigationProviderSpec;
+import org.eclipse.sirius.diagram.ui.tools.internal.part.OffscreenEditPartFactory;
import org.eclipse.sirius.ext.base.Option;
import org.eclipse.sirius.ext.emf.AllContents;
import org.eclipse.sirius.tools.api.validation.constraint.RuleWrappingStatus;
import org.eclipse.sirius.viewpoint.DRepresentationElement;
import org.eclipse.sirius.viewpoint.DSemanticDecorator;
import org.eclipse.sirius.viewpoint.ViewpointPackage;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation;
@@ -136,8 +137,10 @@ public class ValidateAction extends Action {
* @was-generated
*/
public static void runNonUIValidation(View view) {
- DiagramEditPart diagramEditPart = OffscreenEditPartFactory.getInstance().createDiagramEditPart(view.getDiagram());
+ Shell shell = new Shell();
+ DiagramEditPart diagramEditPart = OffscreenEditPartFactory.getInstance().createDiagramEditPart(view.getDiagram(), shell);
runValidation(diagramEditPart, view);
+ shell.dispose();
}
/**
@@ -235,6 +238,7 @@ public class ValidateAction extends Action {
/**
* @was-generated-NOT
*/
+ @SuppressWarnings("rawtypes")
private static void createMarkers(IFile target, IStatus validationStatus, DiagramEditPart diagramEditPart) {
if (validationStatus.isOK()) {
return;
@@ -291,6 +295,7 @@ public class ValidateAction extends Action {
/**
* @was-generated-NOT
*/
+ @SuppressWarnings("rawtypes")
private static void createMarkers(IFile target, Diagnostic emfValidationStatus, DiagramEditPart diagramEditPart) {
if (emfValidationStatus.getSeverity() == Diagnostic.OK) {
return;
@@ -304,7 +309,8 @@ public class ValidateAction extends Action {
if (data != null && !data.isEmpty() && data.get(0) instanceof EObject) {
EObject element = (EObject) data.get(0);
View view = getCorrespondingView(element, diagramEditPart);
- addMarker(diagramEditPart.getViewer(), target, view, EMFCoreUtil.getQualifiedName(element, true), nextDiagnostic.getMessage(), diagnosticToStatusSeverity(nextDiagnostic.getSeverity()));
+ addMarker(diagramEditPart.getViewer(), target, view, EMFCoreUtil.getQualifiedName(element, true), nextDiagnostic.getMessage(),
+ diagnosticToStatusSeverity(nextDiagnostic.getSeverity()));
}
}
}
@@ -367,6 +373,7 @@ public class ValidateAction extends Action {
/**
* @was-generated
*/
+ @SuppressWarnings({ "rawtypes", "unchecked" })
private static Set collectTargetElements(IStatus status, Set targetElementCollector, List allConstraintStatuses) {
if (status instanceof IConstraintStatus) {
targetElementCollector.add(((IConstraintStatus) status).getTarget());
@@ -384,6 +391,7 @@ public class ValidateAction extends Action {
/**
* @was-generated
*/
+ @SuppressWarnings({ "rawtypes", "unchecked" })
private static Set collectTargetElements(Diagnostic diagnostic, Set targetElementCollector, List allDiagnostics) {
List data = diagnostic.getData();
EObject target = null;
diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/validation/DiagramValidationTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/validation/DiagramValidationTest.java
index 0636006df7..193d57eda4 100644
--- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/validation/DiagramValidationTest.java
+++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/api/validation/DiagramValidationTest.java
@@ -22,8 +22,10 @@ import org.eclipse.core.runtime.ILogListener;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.transaction.RunnableWithResult;
import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
import org.eclipse.gmf.runtime.common.ui.util.WorkbenchPartDescriptor;
+import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart;
import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.DDiagramElement;
import org.eclipse.sirius.diagram.DNode;
@@ -36,6 +38,7 @@ import org.eclipse.sirius.tests.support.api.SiriusDiagramTestCase;
import org.eclipse.sirius.tests.support.api.TestsUtil;
import org.eclipse.sirius.ui.business.api.dialect.DialectUIManager;
import org.eclipse.sirius.viewpoint.DSemanticDecorator;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorPart;
import com.google.common.base.Predicate;
@@ -126,6 +129,13 @@ public class DiagramValidationTest extends SiriusDiagramTestCase {
}
assertTrue("Marker created by validation was not found", found);
+ int numberOfShellBefore = getShellsNumber();
+ if (editorPart instanceof IDiagramWorkbenchPart) {
+ final IDiagramWorkbenchPart part = (IDiagramWorkbenchPart) editorPart;
+ ValidateAction.runNonUIValidation(part.getDiagram());
+ }
+ assertEquals("A new shell has not been disposed.", numberOfShellBefore, getShellsNumber());
+
verify(logListener);
}
@@ -259,6 +269,17 @@ public class DiagramValidationTest extends SiriusDiagramTestCase {
assertEquals("The semantic element '" + semanticName + "' does not have the expected SemanticValidationRule markers", expectedNbSemanticMarker, semanticMarkers);
}
+ private int getShellsNumber() {
+ RunnableWithResult<Integer> withResult = new RunnableWithResult.Impl<Integer>() {
+ @Override
+ public void run() {
+ setResult(Display.getDefault().getShells().length);
+ }
+ };
+ Display.getDefault().syncExec(withResult);
+ return withResult.getResult();
+ }
+
@Override
protected void tearDown() throws Exception {
DialectUIManager.INSTANCE.closeEditor(editorPart, false);

Back to the top