Bladeren bron

#1194 : open API of default validation issue store (#1292)

* avoid possible NPE in validation issue decorator
Johannes Dicks 9 jaren geleden
bovenliggende
commit
055ab1bc31

+ 4 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/StatechartValidationDecorationProvider.java

@@ -14,6 +14,7 @@ import java.util.List;
 
 import org.eclipse.draw2d.FlowLayout;
 import org.eclipse.draw2d.Label;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.gef.EditDomain;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.editparts.AbstractConnectionEditPart;
@@ -95,7 +96,9 @@ public class StatechartValidationDecorationProvider extends AbstractDecoratorPro
 			if (view == null || view.eResource() == null) {
 				return;
 			}
-			semanticID = view.getElement().eResource().getURIFragment(view.getElement());
+			EObject element = view.getElement();
+			if (element != null)
+				semanticID = element.eResource().getURIFragment(element);
 			removeDecoration();
 			EditPart editPart = (EditPart) getDecoratorTarget().getAdapter(EditPart.class);
 			if (editPart == null || editPart.getViewer() == null || !(editPart instanceof IPrimaryEditPart)) {

+ 4 - 3
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/validation/DefaultValidationIssueStore.java

@@ -54,11 +54,11 @@ public class DefaultValidationIssueStore implements IValidationIssueStore, IFile
 
 	private List<IResourceIssueStoreListener> listener;
 	// the URI of the semantic element
-	private Multimap<String, SCTIssue> persistentIssues;
-	private Multimap<String, SCTIssue> liveIssues;
+	protected Multimap<String, SCTIssue> persistentIssues;
+	protected Multimap<String, SCTIssue> liveIssues;
 	private boolean connected = false;
 
-	private Resource resource;
+	protected Resource resource;
 
 	public DefaultValidationIssueStore() {
 		listener = Lists.newArrayList();
@@ -138,6 +138,7 @@ public class DefaultValidationIssueStore implements IValidationIssueStore, IFile
 		if (file != null && file.isAccessible()) {
 			FileChangeManager.getInstance().removeFileObserver(this);
 		}
+		this.resource = null;
 		persistentIssues.clear();
 		connected = false;
 	}