From d9183aa80ae17d36b79dda48c6b1d7fa22a80ee3 Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期三, 22 一月 2025 11:20:41 +0800
Subject: [PATCH] 现场型号代号/人员/组织接口调试

---
 Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/yml/YmlPropertyLoaderFactory.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/yml/YmlPropertyLoaderFactory.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/yml/YmlPropertyLoaderFactory.java
new file mode 100644
index 0000000..fcd94a5
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/yml/YmlPropertyLoaderFactory.java
@@ -0,0 +1,73 @@
+/*
+ *      Copyright (c) 2018-2028, DreamLu All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: DreamLu 鍗㈡槬姊� (596392912@qq.com)
+ */
+package org.springblade.core.tool.yml;
+
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.boot.env.OriginTrackedMapPropertySource;
+import org.springframework.boot.env.YamlPropertySourceLoader;
+import org.springframework.core.env.MapPropertySource;
+import org.springframework.core.env.PropertySource;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.DefaultPropertySourceFactory;
+import org.springframework.core.io.support.EncodedResource;
+import org.springframework.lang.Nullable;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+
+/**
+ * yml閰嶇疆鍔犺浇
+ *
+ * @author lcm
+ */
+public class YmlPropertyLoaderFactory extends DefaultPropertySourceFactory {
+
+	@Override
+	public PropertySource<?> createPropertySource(@Nullable String name, EncodedResource encodedResource) throws IOException {
+		if (encodedResource == null) {
+			return emptyPropertySource(name);
+		}
+		Resource resource = encodedResource.getResource();
+		String fileName = resource.getFilename();
+		List<PropertySource<?>> sources = new YamlPropertySourceLoader().load(fileName, resource);
+		if (sources.isEmpty()) {
+			return emptyPropertySource(fileName);
+		}
+		// yml 鏁版嵁瀛樺偍锛屽悎鎴愪竴涓� PropertySource
+		Map<String, Object> ymlDataMap = new HashMap<>(32);
+		for (PropertySource<?> source : sources) {
+			ymlDataMap.putAll(((MapPropertySource) source).getSource());
+		}
+		return new OriginTrackedMapPropertySource(getSourceName(fileName, name), ymlDataMap);
+	}
+
+	private static PropertySource<?> emptyPropertySource(@Nullable String name) {
+		return new MapPropertySource(getSourceName(name), Collections.emptyMap());
+	}
+
+	private static String getSourceName(String... names) {
+		return Stream.of(names)
+			.filter(StringUtil::isNotBlank)
+			.findFirst()
+			.orElse("BladeYmlPropertySource");
+	}
+
+}

--
Gitblit v1.9.3