提交 d1914194 编写于 作者: S serge-rider

dbeaver/dbeaver-ee#953 Datasource initialization error handle fix


Former-commit-id: 7ba188d0
上级 a5b960a7
......@@ -19,6 +19,7 @@ package org.jkiss.dbeaver.ui.actions;
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchWindow;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.Log;
......@@ -189,7 +190,11 @@ public class DataSourcePropertyTester extends PropertyTester
* Making each editor QM listener is too expensive.
*/
private static void updateEditorsDirtyFlag() {
IEditorReference[] editors = UIUtils.getActiveWorkbenchWindow().getActivePage().getEditorReferences();
IWorkbenchWindow workbenchWindow = UIUtils.findActiveWorkbenchWindow();
if (workbenchWindow == null) {
return;
}
IEditorReference[] editors = workbenchWindow.getActivePage().getEditorReferences();
for (IEditorReference ref : editors) {
final IEditorPart editor = ref.getEditor(false);
if (editor instanceof SQLEditor) {
......
......@@ -778,39 +778,39 @@ public class DataSourceDescriptor
// Update auth properties if possible
// 1. Get credentials from origin
DBPDataSourceOrigin dsOrigin = getOrigin();
if (dsOrigin instanceof DBAAuthCredentialsProvider) {
monitor.beginTask("Read auth parameters from " + dsOrigin.getDisplayName(), 1);
try {
((DBAAuthCredentialsProvider) dsOrigin).provideAuthParameters(monitor, this, resolvedConnectionInfo);
} finally {
monitor.done();
}
}
// 2. Get credentials from global provider
boolean authProvided = true;
DBAAuthCredentialsProvider authProvider = registry.getAuthCredentialsProvider();
if (authProvider != null) {
authProvided = authProvider.provideAuthParameters(monitor, this, resolvedConnectionInfo);
} else {
// 3. USe legacy password provider
if (!isSavePassword() && !getDriver().isAnonymousAccess()) {
// Ask for password
authProvided = askForPassword(this, null, false);
}
}
if (!authProvided) {
// Auth parameters were canceled
updateDataSourceObject(this);
return false;
}
processEvents(monitor, DBPConnectionEventType.BEFORE_CONNECT);
connecting = true;
try {
// 1. Get credentials from origin
DBPDataSourceOrigin dsOrigin = getOrigin();
if (dsOrigin instanceof DBAAuthCredentialsProvider) {
monitor.beginTask("Read auth parameters from " + dsOrigin.getDisplayName(), 1);
try {
((DBAAuthCredentialsProvider) dsOrigin).provideAuthParameters(monitor, this, resolvedConnectionInfo);
} finally {
monitor.done();
}
}
// 2. Get credentials from global provider
boolean authProvided = true;
DBAAuthCredentialsProvider authProvider = registry.getAuthCredentialsProvider();
if (authProvider != null) {
authProvided = authProvider.provideAuthParameters(monitor, this, resolvedConnectionInfo);
} else {
// 3. USe legacy password provider
if (!isSavePassword() && !getDriver().isAnonymousAccess()) {
// Ask for password
authProvided = askForPassword(this, null, false);
}
}
if (!authProvided) {
// Auth parameters were canceled
updateDataSourceObject(this);
return false;
}
// Resolve variables
if (preferenceStore.getBoolean(ModelPreferences.CONNECT_USE_ENV_VARS) ||
!CommonUtils.isEmpty(connectionInfo.getConfigProfileName()))
......
......@@ -1601,8 +1601,8 @@ public class UIUtils {
return job;
}
@NotNull
public static IWorkbenchWindow getActiveWorkbenchWindow() {
@Nullable
public static IWorkbenchWindow findActiveWorkbenchWindow() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
if (window != null) {
......@@ -1612,7 +1612,16 @@ public class UIUtils {
if (windows.length > 0) {
return windows[0];
}
throw new IllegalStateException("No workbench window");
return null;
}
@NotNull
public static IWorkbenchWindow getActiveWorkbenchWindow() {
IWorkbenchWindow workbenchWindow = findActiveWorkbenchWindow();
if (workbenchWindow == null) {
throw new IllegalStateException("No workbench window");
}
return workbenchWindow;
}
public static IWorkbenchWindow getParentWorkbenchWindow(Control control) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册