diff options
| author | Andrey Loskutov | 2016-06-02 08:15:21 +0000 |
|---|---|---|
| committer | Andrey Loskutov | 2016-06-08 15:59:37 +0000 |
| commit | de87d4bf278f2eb79b43f63e0a8ae6c50cb05514 (patch) | |
| tree | ff97b53d3d3945a2e600a88cc1db1e84d30e075e | |
| parent | 4ac7846bf992a8828e59ec9182ef36d2cadef713 (diff) | |
| download | eclipse.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>
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); |
