From 5168dd59ce79f24c0d557a8bcce7320b83b4f1a7 Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 14 Aug 2024 23:29:30 +0800 Subject: [PATCH] YamlLoader --- .../java/org/redkale/util/YamlProvider.java | 18 ++++++++++---- .../java/org/redkale/util/YamlReader.java | 24 +++++++++++-------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/redkale/util/YamlProvider.java b/src/main/java/org/redkale/util/YamlProvider.java index ea8442400..9bcade9e8 100644 --- a/src/main/java/org/redkale/util/YamlProvider.java +++ b/src/main/java/org/redkale/util/YamlProvider.java @@ -15,10 +15,18 @@ package org.redkale.util; public interface YamlProvider { /** - * 将yml内容转换成AnyValue - * - * @param content yml内容 - * @return AnyValue + * 创建 YamlLoader */ - public AnyValue read(String content); + public YamlLoader createLoader(); + + public interface YamlLoader { + + /** + * 将yml内容转换成AnyValue + * + * @param content yml内容 + * @return AnyValue + */ + public AnyValue read(String content); + } } diff --git a/src/main/java/org/redkale/util/YamlReader.java b/src/main/java/org/redkale/util/YamlReader.java index 654236a7a..70f1e662a 100644 --- a/src/main/java/org/redkale/util/YamlReader.java +++ b/src/main/java/org/redkale/util/YamlReader.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Objects; import java.util.ServiceLoader; import org.redkale.annotation.Nonnull; +import org.redkale.util.YamlProvider.YamlLoader; /** * 简单的yml读取器 @@ -22,7 +23,7 @@ import org.redkale.annotation.Nonnull; */ public class YamlReader { - private static YamlProvider currentProvider; + private static YamlLoader currentYamlLoader; private final String text; @@ -31,7 +32,7 @@ public class YamlReader { } public AnyValue read() { - return loadProvider().read(text); + return loadYamlLoader().read(text); } /** @@ -39,8 +40,8 @@ public class YamlReader { * * @return YamlProvider */ - protected static @Nonnull YamlProvider loadProvider() { - if (currentProvider == null) { + protected static @Nonnull YamlLoader loadYamlLoader() { + if (currentYamlLoader == null) { Iterator it = ServiceLoader.load(YamlProvider.class).iterator(); RedkaleClassLoader.putServiceLoader(YamlProvider.class); List providers = new ArrayList<>(); @@ -53,19 +54,22 @@ public class YamlReader { } } for (YamlProvider provider : Utility.sortPriority(providers)) { - currentProvider = provider; - return provider; + YamlLoader leader = provider.createLoader(); + if (leader != null) { + currentYamlLoader = leader; + return leader; + } } - currentProvider = new DefaultYmlProvider(); + currentYamlLoader = new DefaultYamlLoader(); } - return currentProvider; + return currentYamlLoader; } - protected static class DefaultYmlProvider implements YamlProvider { + protected static class DefaultYamlLoader implements YamlLoader { @Override public AnyValue read(String content) { - throw new UnsupportedOperationException("Not supported yml."); + throw new UnsupportedOperationException("Not supported yaml."); } } }