From 983e70d50decde6d9b9598f415c350fc1db2b16a Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Wed, 15 May 2024 15:32:34 +0800 Subject: [PATCH] fix: secret data cannot be used in YAML (#5917) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind bug /area core /milestone 2.16.x #### What this PR does / why we need it: 修复 Secret 的 data 字段无法在 YAML 使用的问题 #### Does this PR introduce a user-facing change? ```release-note None ``` --- .../run/halo/app/extension/JSONExtensionConverter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/run/halo/app/extension/JSONExtensionConverter.java b/application/src/main/java/run/halo/app/extension/JSONExtensionConverter.java index eb9107db2..8aa230435 100644 --- a/application/src/main/java/run/halo/app/extension/JSONExtensionConverter.java +++ b/application/src/main/java/run/halo/app/extension/JSONExtensionConverter.java @@ -10,6 +10,7 @@ import io.swagger.v3.core.util.Json; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.util.Optional; import lombok.extern.slf4j.Slf4j; import org.openapi4j.core.exception.ResolutionException; import org.openapi4j.core.model.v3.OAI3; @@ -54,8 +55,14 @@ public class JSONExtensionConverter implements ExtensionConverter { var scheme = schemeManager.get(gvk); try { + var convertedExtension = Optional.of(extension) + .map(item -> scheme.type().isAssignableFrom(item.getClass()) ? item + : objectMapper.convertValue(item, scheme.type()) + ) + .orElseThrow(); var validation = new ValidationData<>(extension); - var extensionJsonNode = objectMapper.valueToTree(extension); + + var extensionJsonNode = objectMapper.valueToTree(convertedExtension); var validator = getValidator(scheme); validator.validate(extensionJsonNode, validation); if (!validation.isValid()) {