From c34a01e7f1a8a28572efac6c0b3d6f0e3ffd71e7 Mon Sep 17 00:00:00 2001 From: "Haring, Bernhard (Extern)" Date: Wed, 25 Oct 2023 09:52:06 +0200 Subject: [PATCH] removed deprecated basic auth config from dialog - added migration script - formatted error in case of update check failed --- .../kafka/dialogs/ClusterConfigDialog.java | 7 ---- .../esque/kafka/handlers/ConfigHandler.java | 34 +++++++++++++++---- .../kafka/handlers/VersionInfoHandler.java | 4 +-- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/main/java/at/esque/kafka/dialogs/ClusterConfigDialog.java b/src/main/java/at/esque/kafka/dialogs/ClusterConfigDialog.java index 1b646c7..2230ae3 100644 --- a/src/main/java/at/esque/kafka/dialogs/ClusterConfigDialog.java +++ b/src/main/java/at/esque/kafka/dialogs/ClusterConfigDialog.java @@ -21,7 +21,6 @@ public class ClusterConfigDialog { public static final String LABEL_IDENTIFIER = "Identifier"; public static final String LABEL_BOOTSTRAP_SERVERS = "Bootstrap-Servers"; public static final String LABEL_SCHEMA_REGISTRY_URL = "Schema Registry URL"; - public static final String LABEL_SCHEMA_REGISTRY_BASIC_AUTH_USER_INFO = "<>Schema Registry Basic Auth User Info"; public static final String LABEL_SCHEMA_REGISTRY_AUTH_USER_INFO = "Schema Registry Auth Info"; public static final String LABEL_SCHEMA_REGISTRY_AUTH_MODE = "Schema Registry Auth Mode"; public static final String LABEL_ENABLE_SSL = "Enable SSL"; @@ -76,12 +75,6 @@ public static Optional show(ClusterConfig existingConfig) { .placeholder(LABEL_SCHEMA_REGISTRY_URL) .format(new NullFormatStringConverter()) .bind(copy.schemaRegistryProperty()), - Field.ofStringType(copy.getSchemaRegistryBasicAuthUserInfo() == null ? "" : copy.getSchemaRegistryBasicAuthUserInfo()) - .label(LABEL_SCHEMA_REGISTRY_BASIC_AUTH_USER_INFO) - .tooltip(LABEL_SCHEMA_REGISTRY_BASIC_AUTH_USER_INFO) - .placeholder(LABEL_SCHEMA_REGISTRY_BASIC_AUTH_USER_INFO) - .format(new NullFormatStringConverter()) - .bind(copy.schemaRegistryBasicAuthUserInfoProperty()), Field.ofSingleSelectionType(copy.schemaRegistryAuthModesProperty()) .label(LABEL_SCHEMA_REGISTRY_AUTH_MODE) .tooltip(LABEL_SCHEMA_REGISTRY_AUTH_MODE) diff --git a/src/main/java/at/esque/kafka/handlers/ConfigHandler.java b/src/main/java/at/esque/kafka/handlers/ConfigHandler.java index b0a58d7..9683a0e 100644 --- a/src/main/java/at/esque/kafka/handlers/ConfigHandler.java +++ b/src/main/java/at/esque/kafka/handlers/ConfigHandler.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.stream.Collectors; @@ -214,6 +215,7 @@ public ClusterConfigs loadOrCreateConfigs() { } else if (clusterConfig.exists()) { try { clusterConfigs = objectMapper.readValue(clusterConfig, ClusterConfigs.class); + maybeMigrateDeprecatedConfig(clusterConfigs); return clusterConfigs; } catch (IOException e) { ErrorAlert.show(e); @@ -232,11 +234,34 @@ public ClusterConfigs loadOrCreateConfigs() { return clusterConfigs; } - public void saveConfigs() { + public void maybeMigrateDeprecatedConfig(ClusterConfigs clusterConfigs) { + AtomicBoolean updated = new AtomicBoolean(false); + clusterConfigs.getClusterConfigs().forEach(config -> { + var schemaRegistryBasicAuthUserInfo = config.getSchemaRegistryBasicAuthUserInfo(); + if (StringUtils.isNotBlank(schemaRegistryBasicAuthUserInfo)) { + config.setSchemaRegistryAuthMode(ClusterConfig.SchemaRegistryAuthMode.BASIC); + config.setSchemaRegistryAuthConfig(schemaRegistryBasicAuthUserInfo); + config.setSchemaRegistryBasicAuthUserInfo(null); + updated.set(true); + } + }); + if (updated.get()) { + if (saveConfigs()) { + LOGGER.info("deprecated property migration sucessful!"); + } else { + LOGGER.warn("deprecated property migration failed!"); + } + } + } + + + public boolean saveConfigs() { try { objectMapper.writeValue(clusterConfig, clusterConfigs); + return true; } catch (IOException e) { ErrorAlert.show(e); + return false; } } @@ -318,13 +343,10 @@ public Map getSaslProperties(ClusterConfig config) { public Map getSchemaRegistryAuthProperties(ClusterConfig config) { Map props = new HashMap<>(); - if (StringUtils.isNoneEmpty(config.getSchemaRegistryBasicAuthUserInfo())) { - props.put(SchemaRegistryClientConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO"); - props.put(SchemaRegistryClientConfig.CLIENT_NAMESPACE + SchemaRegistryClientConfig.USER_INFO_CONFIG, config.getSchemaRegistryBasicAuthUserInfo()); - } else if (ClusterConfig.SchemaRegistryAuthMode.BASIC.equals(config.getSchemaRegistryAuthMode())){ + if (ClusterConfig.SchemaRegistryAuthMode.BASIC.equals(config.getSchemaRegistryAuthMode())) { props.put(SchemaRegistryClientConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO"); props.put(SchemaRegistryClientConfig.CLIENT_NAMESPACE + SchemaRegistryClientConfig.USER_INFO_CONFIG, config.getSchemaRegistryAuthConfig()); - }else if (ClusterConfig.SchemaRegistryAuthMode.TOKEN.equals(config.getSchemaRegistryAuthMode())){ + } else if (ClusterConfig.SchemaRegistryAuthMode.TOKEN.equals(config.getSchemaRegistryAuthMode())) { props.put(SchemaRegistryClientConfig.BEARER_AUTH_CREDENTIALS_SOURCE, "STATIC_TOKEN"); props.put(SchemaRegistryClientConfig.BEARER_AUTH_TOKEN_CONFIG, config.getSchemaRegistryAuthConfig()); } diff --git a/src/main/java/at/esque/kafka/handlers/VersionInfoHandler.java b/src/main/java/at/esque/kafka/handlers/VersionInfoHandler.java index 8db1d42..f1abe42 100644 --- a/src/main/java/at/esque/kafka/handlers/VersionInfoHandler.java +++ b/src/main/java/at/esque/kafka/handlers/VersionInfoHandler.java @@ -117,7 +117,7 @@ private Map checkLatestVersion() { } catch (Exception e) { - Platform.runLater(() -> ErrorAlert.show(e)); + Platform.runLater(() -> ErrorAlert.show("Update Check failed", "Failed to check for availabe Updates", e.getMessage(), e, null, false)); } } else { return (Map) versionCheckContent.get("release"); @@ -133,7 +133,7 @@ public void showDialogIfUpdateIsAvailable(HostServices hostServices) { if (openInBrowser) { try { hostServices.showDocument(updateInfo.getReleasePage()); - }catch (Exception e){ + } catch (Exception e) { ErrorAlert.show(e); } }