From 6214dbc4d120f3264861a67c3fb527a575aa8922 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Wed, 11 Apr 2018 00:39:25 +0300 Subject: [PATCH] #3296 CLI: the same connection reopening duplicate --- .../rpc/DBeaverInstanceServer.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java index cd2b0155c2..86366f4d1f 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/core/application/rpc/DBeaverInstanceServer.java @@ -161,21 +161,31 @@ public class DBeaverInstanceServer implements IInstanceController { connConfig.getBootstrap().setDefaultAutoCommit(autoCommit); } - final DataSourceDescriptor ds = new DataSourceDescriptor(dsRegistry, DataSourceDescriptor.generateNewId(driver), driver, connConfig); - ds.setName(dsName); - ds.setTemporary(true); - if (savePassword) { - ds.setSavePassword(true); + DataSourceDescriptor ds = dsRegistry.findDataSourceByName(dsName); + if (ds != null) { + if (!ds.isTemporary()) { + // Different one + ds = null; + } } - if (folder != null) { - ds.setFolder(folder); + if (ds == null) { + ds = new DataSourceDescriptor(dsRegistry, DataSourceDescriptor.generateNewId(driver), driver, connConfig); + ds.setName(dsName); + ds.setTemporary(true); + if (savePassword) { + ds.setSavePassword(true); + } + if (folder != null) { + ds.setFolder(folder); + } + //ds.set + dsRegistry.addDataSource(ds); } - //ds.set - dsRegistry.addDataSource(ds); if (openConsole) { + DataSourceDescriptor finalDs = ds; DBeaverUI.syncExec(() -> { - OpenHandler.openSQLConsole(workbenchWindow, ds, ds.getName(), ""); + OpenHandler.openSQLConsole(workbenchWindow, finalDs, finalDs.getName(), ""); workbenchWindow.getShell().forceActive(); }); } else if (makeConnect) { -- GitLab