From d511e7676c5d5385683780c30b39358f27ccd5a2 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Mon, 16 Dec 2024 11:07:25 +0800 Subject: [PATCH] add nest parse --- .../command/task/CacheFileUpdateTask.java | 22 ++++++++++++++++--- .../manager/server/model/req/PropertyReq.java | 3 +++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java index 7ae30501..23acd451 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java @@ -43,6 +43,8 @@ import org.apache.bigtop.manager.server.model.dto.StackDTO; import org.apache.bigtop.manager.server.utils.StackUtils; +import lombok.extern.slf4j.Slf4j; + import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -53,6 +55,7 @@ import static org.apache.bigtop.manager.common.constants.Constants.ALL_HOST_KEY; +@Slf4j public class CacheFileUpdateTask extends AbstractTask { private ClusterDao clusterDao; @@ -98,6 +101,18 @@ private void genCaches() { } } + private Map parseProperties(List> properties) { + return properties.stream().collect(Collectors.toMap(property -> (String) property.get("name"), property -> { + if (property.containsKey("values")) { + @SuppressWarnings("unchecked") + List> nestedProperties = (List>) property.get("values"); + return parseProperties(nestedProperties); + } else { + return property.get("value"); + } + })); + } + @SuppressWarnings("unchecked") private void genFullCaches() { Long clusterId = taskContext.getClusterId(); @@ -119,10 +134,11 @@ private void genFullCaches() { serviceConfigMap = new HashMap<>(); for (ServiceConfigPO serviceConfigPO : serviceConfigPOList) { List> properties = JsonUtils.readFromString(serviceConfigPO.getPropertiesJson()); - Map kvMap = properties.stream() - .collect(Collectors.toMap( - property -> (String) property.get("name"), property -> (String) property.get("value"))); + log.info(properties.toString()); + Map kvMap = parseProperties(properties); + log.info(kvMap.toString()); String kvString = JsonUtils.writeAsString(kvMap); + log.info(kvString); if (serviceConfigMap.containsKey(serviceConfigPO.getServiceName())) { serviceConfigMap.get(serviceConfigPO.getServiceName()).put(serviceConfigPO.getName(), kvString); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/PropertyReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/PropertyReq.java index e3e961a5..d6f7ee5b 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/PropertyReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/PropertyReq.java @@ -21,6 +21,7 @@ import lombok.Data; import jakarta.validation.constraints.NotBlank; +import java.util.List; @Data public class PropertyReq { @@ -35,4 +36,6 @@ public class PropertyReq { private String desc; private AttrsReq attrs; + + private List values; }