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