[458968] Fix Rejecting DiagramChange causes NPE

Bug: 458968
Change-Id: Ib7c4541f04101fd21603e5a870fc581d1a51f3ca
Signed-off-by: Axel Richard <axel.richard@obeo.fr>
diff --git a/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramMergeViewer.java b/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramMergeViewer.java
index c153bf5..ffbf117 100644
--- a/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramMergeViewer.java
+++ b/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramMergeViewer.java
@@ -22,6 +22,7 @@
 import org.eclipse.emf.compare.diagram.ide.ui.internal.accessor.IDiagramNodeAccessor;
 import org.eclipse.emf.compare.rcp.ui.internal.configuration.IEMFCompareConfiguration;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.transaction.TransactionalEditingDomain;
 import org.eclipse.gef.EditDomain;
@@ -190,8 +191,8 @@
 		if (input instanceof IDiagramNodeAccessor) {
 			Diagram diagram = ((IDiagramNodeAccessor)input).getOwnedDiagram();
 			if (diagram != null) {
-				initEditingDomain(diagram);
-				if (currentDiag != diagram) {
+				TransactionalEditingDomain domain = getEditingDomain(diagram);
+				if (domain != null && currentDiag != diagram) {
 					DiagramRootEditPart rootEditPart = new DiagramRootEditPart(diagram.getMeasurementUnit());
 					// rootEditPart.getZoomManager().setZoomAnimationStyle(ZoomManager.ANIMATE_NEVER);
 					// rootEditPart.getZoomManager().setZoom(ZOOM_FACTOR);
@@ -231,20 +232,33 @@
 	}
 
 	/**
-	 * It creates an editing domain for this diagram.
+	 * It creates/retrieves an editing domain for this diagram.
 	 * 
 	 * @param diagram
 	 *            The diagram.
+	 * @return The editing domain for this diagram.
 	 */
-	private void initEditingDomain(Diagram diagram) {
+	private TransactionalEditingDomain getEditingDomain(Diagram diagram) {
+		final TransactionalEditingDomain domain;
 		ResourceSet resourceSet = null;
 		if (diagram != null) {
-			resourceSet = diagram.eResource().getResourceSet();
+			Resource resource = diagram.eResource();
+			if (resource != null) {
+				resourceSet = resource.getResourceSet();
+			}
 		}
-		if (resourceSet != null
-				&& TransactionalEditingDomain.Factory.INSTANCE.getEditingDomain(resourceSet) == null) {
-			TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain(resourceSet);
+		if (resourceSet != null) {
+			TransactionalEditingDomain existingDomain = TransactionalEditingDomain.Factory.INSTANCE
+					.getEditingDomain(resourceSet);
+			if (existingDomain == null) {
+				domain = TransactionalEditingDomain.Factory.INSTANCE.createEditingDomain(resourceSet);
+			} else {
+				domain = existingDomain;
+			}
+		} else {
+			domain = null;
 		}
+		return domain;
 	}
 
 	/**