From 4470052c3b6bdeb18e45987f8aa293d1e93d0552 Mon Sep 17 00:00:00 2001
From: Ludc <2870569285@qq.com>
Date: 星期二, 18 十一月 2025 11:59:12 +0800
Subject: [PATCH] 所有文件上传接口增加文件安全校验逻辑。
---
Source/BladeX-Tool/blade-starter-mongo/src/main/java/org/springblade/core/mongo/utils/JsonNodeInfo.java | 85 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 85 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-starter-mongo/src/main/java/org/springblade/core/mongo/utils/JsonNodeInfo.java b/Source/BladeX-Tool/blade-starter-mongo/src/main/java/org/springblade/core/mongo/utils/JsonNodeInfo.java
new file mode 100644
index 0000000..7d4ae04
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-mongo/src/main/java/org/springblade/core/mongo/utils/JsonNodeInfo.java
@@ -0,0 +1,85 @@
+package org.springblade.core.mongo.utils;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import lombok.Getter;
+import org.springframework.util.Assert;
+
+import java.util.LinkedList;
+import java.util.StringJoiner;
+
+/**
+ * json tree 鑺傜偣淇℃伅
+ *
+ * @author L.cm
+ */
+public class JsonNodeInfo {
+ /**
+ * mongo keys: class1.class2.item
+ */
+ private volatile String nodeKeys;
+ /**
+ * jsonPath璇硶锛�/class1/class2/item
+ */
+ private volatile String nodePath;
+ /**
+ * 鑺傜偣鍏崇郴
+ */
+ @Getter
+ private final LinkedList<String> elements;
+ /**
+ * tree 鐨� 鍙跺瓙鑺傜偣锛屾澶勪负寮曠敤
+ */
+ @Getter
+ private final JsonNode leafNode;
+
+ public JsonNodeInfo(LinkedList<String> elements, JsonNode leafNode) {
+ Assert.notNull(elements, "elements can not be null.");
+ this.nodeKeys = null;
+ this.nodePath = null;
+ this.elements = elements;
+ this.leafNode = leafNode;
+ }
+
+ /**
+ * 鑾峰彇 mongo db鐨� key 璇硶
+ * @return mongo db鐨� key 璇硶
+ */
+ public String getNodeKeys() {
+ if (nodeKeys == null) {
+ synchronized (this) {
+ if (nodeKeys == null) {
+ StringJoiner nodeKeysJoiner = new StringJoiner(".");
+ elements.forEach(nodeKeysJoiner::add);
+ nodeKeys = nodeKeysJoiner.toString();
+ }
+ }
+ }
+ return nodeKeys;
+ }
+
+ /**
+ * 鑾峰彇 json path 璇硶璺緞
+ * @return jsonPath 璺緞
+ */
+ public String getNodePath() {
+ if (nodePath == null) {
+ synchronized (this) {
+ if (nodePath == null) {
+ StringJoiner nodePathJoiner = new StringJoiner("/", "/", "");
+ elements.forEach(nodePathJoiner::add);
+ nodePath = nodePathJoiner.toString();
+ }
+ }
+ }
+ return nodePath;
+ }
+
+ /**
+ * 鑾峰彇绗竴涓厓绱�
+ * @return element
+ */
+ public String getFirst() {
+ return elements.getFirst();
+ }
+
+}
--
Gitblit v1.10.0