From 23e5ed3b10641d6eef65cd5876bd2eade5061685 Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Sat, 19 Mar 2016 09:18:30 +0100 Subject: [PATCH] Fix NPE on initializing the external executables state service provider - part 2 --- .../view/ui/internal/ExternalExecutablesState.java | 10 +++++----- .../ui/local/showin/ExternalExecutablesManager.java | 9 ++------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java index dda1ccecb67..83e009c4282 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java @@ -10,8 +10,10 @@ package org.eclipse.tm.terminal.view.ui.internal; import java.util.HashMap; +import java.util.List; import java.util.Map; +import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager; import org.eclipse.ui.AbstractSourceProvider; import org.eclipse.ui.ISources; @@ -20,13 +22,11 @@ import org.eclipse.ui.ISources; */ public class ExternalExecutablesState extends AbstractSourceProvider { public final static String CONFIGURED_STATE = "org.eclipse.tm.terminal.external.executable.configured"; //$NON-NLS-1$ - private boolean enabled = false; + private boolean enabled; public ExternalExecutablesState() { - // Cannot initialize the state here by calling ExternalExecutablesManager.load(), - // because it will trigger a ExternalExectuablesManger.save() which tries to call - // the enable() or disable() method here. Better initialize the state from the - // load method itself. + List> externals = ExternalExecutablesManager.load(); + this.enabled = (externals != null && !externals.isEmpty()); } @Override diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java index 40db4891931..271e7a49b2a 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java @@ -166,11 +166,6 @@ public class ExternalExecutablesManager { gitBashSearchDone = true; } - // Make sure the source provider is initialized properly - ISourceProviderService sourceProviderService = (ISourceProviderService) PlatformUI.getWorkbench().getService(ISourceProviderService.class); - ExternalExecutablesState stateService = (ExternalExecutablesState) sourceProviderService.getSourceProvider(ExternalExecutablesState.CONFIGURED_STATE); - if (l.isEmpty()) stateService.disable(); else stateService.enable(); - return l; } @@ -212,7 +207,7 @@ public class ExternalExecutablesManager { @SuppressWarnings("unused") boolean s = f.delete(); - stateService.disable(); + if (stateService != null) stateService.disable(); } else { FileWriter w = null; @@ -234,7 +229,7 @@ public class ExternalExecutablesManager { w = new FileWriter(f); data.store(w, null); - stateService.enable(); + if (stateService != null) stateService.enable(); } catch (Exception e) { if (Platform.inDebugMode()) { e.printStackTrace();