From 23663e5823495951df935cd69c01669e94bce24c Mon Sep 17 00:00:00 2001 From: liujiahua123123 Date: Wed, 21 Aug 2019 11:48:37 +0800 Subject: [PATCH] YAML supported --- .../java/net/mamoe/mirai/MiraiServer.java | 18 ++++ .../config/MiraiAbstractConfigSection.java | 82 +++++++++++++++++++ .../mamoe/mirai/utils/config/MiraiConfig.java | 1 + .../utils/config/MiraiConfigSection.java | 37 +++------ 4 files changed, 114 insertions(+), 24 deletions(-) create mode 100644 mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiAbstractConfigSection.java diff --git a/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java b/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java index 5bb7ae9fe..2769ce507 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java @@ -114,6 +114,24 @@ public class MiraiServer { getLogger().info("ready to connect"); + /* + this.qqs.put("test",new MiraiConfigSection(){{ + put("1","2"); + put("11","2"); + put("111","2"); + put("1111","2"); + }}); + this.qqs.save(); + */ + System.out.println(this.qqs.get()); + /* + System.out.println(v); + + System.out.println(v.get("1111")); + */ + + System.exit(0); + Robot robot = new Robot(1994701021, "xiaoqqq"); try { //System.out.println(Protocol.Companion.getSERVER_IP().get(3)); diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiAbstractConfigSection.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiAbstractConfigSection.java new file mode 100644 index 000000000..00e691974 --- /dev/null +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiAbstractConfigSection.java @@ -0,0 +1,82 @@ +package net.mamoe.mirai.utils.config; + +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class MiraiAbstractConfigSection implements Map { + + + private SortedMap sortedMap; + + protected void setContent(SortedMap map){ + this.sortedMap = map; + } + + + @Override + public int size() { + return sortedMap.size(); + } + + @Override + public boolean isEmpty() { + return sortedMap.isEmpty(); + } + + @Override + public boolean containsKey(Object key) { + return sortedMap.containsKey(key); + } + + @Override + public boolean containsValue(Object value) { + return sortedMap.containsValue(value); + } + + @Override + public V get(Object key) { + return sortedMap.get(key); + } + + @Nullable + @Override + public V put(K key, V value) { + return sortedMap.put(key,value); + } + + @Override + public V remove(Object key) { + return sortedMap.remove(key); + } + + @Override + public void putAll(@NotNull Map m) { + sortedMap.putAll(m); + } + + @Override + public void clear() { + sortedMap.clear(); + } + + @NotNull + @Override + public Set keySet() { + return sortedMap.keySet(); + } + + @NotNull + @Override + public Collection values() { + return sortedMap.values(); + } + + @NotNull + @Override + public Set> entrySet() { + return sortedMap.entrySet(); + } +} diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java index dd3257636..e24701d03 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java @@ -69,6 +69,7 @@ public class MiraiConfig extends MiraiConfigSection { Map content = yaml.loadAs(Utils.readFile(this.root), LinkedHashMap.class); if (content != null) { this.putAll(content); + System.out.println(this.keySet().toString()); } } catch (IOException e) { e.printStackTrace(); diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfigSection.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfigSection.java index 256c005a4..5431c9fdb 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfigSection.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfigSection.java @@ -1,31 +1,15 @@ package net.mamoe.mirai.utils.config; - -import org.jetbrains.annotations.NotNull; - -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; +import java.util.Collections; +import java.util.Map; +import java.util.SortedMap; import java.util.concurrent.ConcurrentSkipListMap; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; -public class MiraiConfigSection extends ConcurrentSkipListMap { +public class MiraiConfigSection extends MiraiAbstractConfigSection{ public MiraiConfigSection(){ - /* - * Ensure the key will be in order - * */ - super((a,b) -> 1); + } - @SuppressWarnings("unchecked") - public D getAs(String key){ - return (D)this.get(key); - } - - @SuppressWarnings("unchecked") - public D getAs(String key, D defaultV){ - return (D)(this.getOrDefault(key,defaultV)); - } public Integer getInt(String key){ return Integer.valueOf(this.get(key).toString()); @@ -45,13 +29,18 @@ public class MiraiConfigSection extends ConcurrentSkipListMap { @SuppressWarnings("unchecked") public MiraiConfigSection getTypedSection(String key){ - return (MiraiConfigSection) this.getAs(key); + var content = (SortedMap) this.get(key); + return new MiraiConfigSection<>(){{ + setContent(Collections.synchronizedSortedMap(content)); + }}; } @SuppressWarnings("unchecked") public MiraiConfigSection getSection(String key){ - return (MiraiConfigSection) this.getAs(key); + var content = (SortedMap) this.get(key); + return new MiraiConfigSection<>(){{ + setContent(Collections.synchronizedSortedMap(content)); + }}; } - }