From 0712d79e69a1e9990f869ddd018739eb1e586fff Mon Sep 17 00:00:00 2001 From: "vkrus@ibagroup.eu" Date: Tue, 7 Nov 2023 18:05:00 +0100 Subject: [PATCH] IJMP-1320: fixed both IJMP-1318 and IJMP-1320. Signed-off-by: vkrus@ibagroup.eu --- .../ui/zosmf/ZOSMFConnectionConfigurable.kt | 8 ++++---- .../zowe/service/ZoweConfigServiceImpl.kt | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/org/zowe/explorer/config/connect/ui/zosmf/ZOSMFConnectionConfigurable.kt b/src/main/kotlin/org/zowe/explorer/config/connect/ui/zosmf/ZOSMFConnectionConfigurable.kt index 7306517d5..a99d2a04a 100644 --- a/src/main/kotlin/org/zowe/explorer/config/connect/ui/zosmf/ZOSMFConnectionConfigurable.kt +++ b/src/main/kotlin/org/zowe/explorer/config/connect/ui/zosmf/ZOSMFConnectionConfigurable.kt @@ -105,7 +105,7 @@ class ZOSMFConnectionConfigurable : BoundSearchableConfigurable("z/OSMF Connecti } } - private val zoweConfigStates = mutableListOf() + private val zoweConfigStates = hashMapOf() /** Dialog to edit existing connection. Triggers the dialog and, after the changes, tests the connection and adds the changes */ private fun editConnection() { @@ -114,8 +114,8 @@ class ZOSMFConnectionConfigurable : BoundSearchableConfigurable("z/OSMF Connecti val state = showAndTestConnection(connectionsTableModel!![idx].apply { mode = DialogMode.UPDATE }) - if (state?.zoweConfigPath != null) { - zoweConfigStates.add(state) + state?.zoweConfigPath?.let { + zoweConfigStates[it] = state } if (state != null) { connectionsTableModel?.set(idx, state) @@ -275,7 +275,7 @@ class ZOSMFConnectionConfigurable : BoundSearchableConfigurable("z/OSMF Connecti val wasModified = isModified applySandbox() applySandbox() - zoweConfigStates.distinct().forEach { updateZoweConfigIfNeeded(it) } + zoweConfigStates.values.forEach { updateZoweConfigIfNeeded(it) } if (wasModified) { panel?.updateUI() } diff --git a/src/main/kotlin/org/zowe/explorer/zowe/service/ZoweConfigServiceImpl.kt b/src/main/kotlin/org/zowe/explorer/zowe/service/ZoweConfigServiceImpl.kt index 793fe0913..84d484ab3 100644 --- a/src/main/kotlin/org/zowe/explorer/zowe/service/ZoweConfigServiceImpl.kt +++ b/src/main/kotlin/org/zowe/explorer/zowe/service/ZoweConfigServiceImpl.kt @@ -35,7 +35,7 @@ import org.zowe.kotlinsdk.zowe.config.ZoweConfig import org.zowe.kotlinsdk.zowe.config.parseConfigJson import java.nio.file.Path import java.util.* -import kotlin.streams.toList +import java.util.stream.Collectors val ZOWE_PROJECT_PREFIX = "zowe-" @@ -82,7 +82,7 @@ class ZoweConfigServiceImpl(override val myProject: Project) : ZoweConfigService private fun findExistingConnection(): ConnectionConfig? { val zoweConnectionList = configCrudable.find { it.name == zoweConnectionName - }.toList() + }.collect(Collectors.toList()) return if (zoweConnectionList.isEmpty()) null else zoweConnectionList[0] } @@ -177,6 +177,16 @@ class ZoweConfigServiceImpl(override val myProject: Project) : ZoweConfigService fun ZoweConfig.toConnectionConfig(zVersion: ZVersion = ZVersion.ZOS_2_1): ConnectionConfig = toConnectionConfig(getOrCreateUuid(), zVersion) + fun compareConnections(connectionA: ConnectionConfig, connectionB: ConnectionConfig): Boolean { + if (connectionA.name != connectionB.name) return false + if (connectionA.url != connectionB.url) return false + if (connectionA.isAllowSelfSigned != connectionB.isAllowSelfSigned) return false + if (connectionA.zVersion != connectionB.zVersion) return false + if (connectionA.zoweConfigPath != connectionB.zoweConfigPath) return false + + return true + } + /** * @see ZoweConfigService.getZoweConfigState */ @@ -191,7 +201,7 @@ class ZoweConfigServiceImpl(override val myProject: Project) : ZoweConfigService val zoweUsername = zoweConfig.user ?: return ZoweConfigState.ERROR val zowePassword = zoweConfig.password ?: return ZoweConfigState.ERROR - return if (existingConnection == newConnection && + return if (compareConnections(existingConnection, newConnection) && getUsername(newConnection) == zoweUsername && getPassword(newConnection) == zowePassword ) { @@ -202,3 +212,4 @@ class ZoweConfigServiceImpl(override val myProject: Project) : ZoweConfigService } } +