Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov2016-06-02 08:15:21 +0000
committerAndrey Loskutov2016-06-08 15:59:37 +0000
commitde87d4bf278f2eb79b43f63e0a8ae6c50cb05514 (patch)
treeff97b53d3d3945a2e600a88cc1db1e84d30e075e
parent4ac7846bf992a8828e59ec9182ef36d2cadef713 (diff)
downloadeclipse.platform.ui-de87d4bf278f2eb79b43f63e0a8ae6c50cb05514.tar.gz
eclipse.platform.ui-de87d4bf278f2eb79b43f63e0a8ae6c50cb05514.tar.xz
eclipse.platform.ui-de87d4bf278f2eb79b43f63e0a8ae6c50cb05514.zip
Bug 87819 - [EditorMgmt] NPE changing default file association
Prevent attempts to add "null" editors to FileEditorMapping. Change-Id: Idaad940a0ce04e88426528dd5e8a1ec983427858 Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java16
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java4
2 files changed, 11 insertions, 9 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
index fac7fa2f6fb..58356347030 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/EditorRegistry.java
@@ -789,22 +789,20 @@ public class EditorRegistry extends EventManager implements IEditorRegistry, IEx
}
}
else { // guess at pre 3.1 format defaults
- if (!editors.isEmpty()) {
+ if (!editors.isEmpty()) {
IEditorDescriptor editor = editors.get(0);
- if (editor != null) {
- defaultEditors.add(editor);
- }
- }
- defaultEditors.addAll(Arrays.asList(mapping.getDeclaredDefaultEditors()));
+ defaultEditors.add(editor);
+ }
+ defaultEditors.addAll(Arrays.asList(mapping.getDeclaredDefaultEditors()));
}
// Add any new editors that have already been read from the registry
// which were not deleted.
IEditorDescriptor[] editorsArray = mapping.getEditors();
for (int j = 0; j < editorsArray.length; j++) {
- if (!contains(editors, editorsArray[j])
- && !deletedEditors.contains(editorsArray[j])) {
- editors.add(editorsArray[j]);
+ IEditorDescriptor descriptor = editorsArray[j];
+ if (descriptor != null && !contains(editors, descriptor) && !deletedEditors.contains(descriptor)) {
+ editors.add(descriptor);
}
}
// Map the editor(s) to the file type
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
index 7b9f0dd8913..6aca3574057 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/FileEditorMapping.java
@@ -16,6 +16,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.osgi.util.TextProcessor;
import org.eclipse.ui.IEditorDescriptor;
@@ -81,6 +82,7 @@ public class FileEditorMapping extends Object implements IFileEditorMapping,
* @param editor the editor to add
*/
public void addEditor(EditorDescriptor editor) {
+ Assert.isNotNull(editor);
editors.add(editor);
deletedEditors.remove(editor);
}
@@ -221,6 +223,7 @@ public class FileEditorMapping extends Object implements IFileEditorMapping,
* @param editor the editor to remove
*/
public void removeEditor(IEditorDescriptor editor) {
+ Assert.isNotNull(editor);
editors.remove(editor);
deletedEditors.add(editor);
declaredDefaultEditors.remove(editor);
@@ -233,6 +236,7 @@ public class FileEditorMapping extends Object implements IFileEditorMapping,
* @param editor the editor to be set as default
*/
public void setDefaultEditor(IEditorDescriptor editor) {
+ Assert.isNotNull(editor);
editors.remove(editor);
editors.add(0, editor);
declaredDefaultEditors.remove(editor);

Back to the top