mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-15 04:50:11 +08:00
YAML supported
This commit is contained in:
parent
d27f6b8574
commit
23663e5823
@ -114,6 +114,24 @@ public class MiraiServer {
|
|||||||
|
|
||||||
getLogger().info("ready to connect");
|
getLogger().info("ready to connect");
|
||||||
|
|
||||||
|
/*
|
||||||
|
this.qqs.put("test",new MiraiConfigSection<String>(){{
|
||||||
|
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");
|
Robot robot = new Robot(1994701021, "xiaoqqq");
|
||||||
try {
|
try {
|
||||||
//System.out.println(Protocol.Companion.getSERVER_IP().get(3));
|
//System.out.println(Protocol.Companion.getSERVER_IP().get(3));
|
||||||
|
@ -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<K,V> implements Map<K,V> {
|
||||||
|
|
||||||
|
|
||||||
|
private SortedMap<K, V> sortedMap;
|
||||||
|
|
||||||
|
protected void setContent(SortedMap<K,V> 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<? extends K, ? extends V> m) {
|
||||||
|
sortedMap.putAll(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
sortedMap.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Set<K> keySet() {
|
||||||
|
return sortedMap.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Collection<V> values() {
|
||||||
|
return sortedMap.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Set<Entry<K, V>> entrySet() {
|
||||||
|
return sortedMap.entrySet();
|
||||||
|
}
|
||||||
|
}
|
@ -69,6 +69,7 @@ public class MiraiConfig extends MiraiConfigSection<Object> {
|
|||||||
Map<String, Object> content = yaml.loadAs(Utils.readFile(this.root), LinkedHashMap.class);
|
Map<String, Object> content = yaml.loadAs(Utils.readFile(this.root), LinkedHashMap.class);
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
this.putAll(content);
|
this.putAll(content);
|
||||||
|
System.out.println(this.keySet().toString());
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -1,31 +1,15 @@
|
|||||||
package net.mamoe.mirai.utils.config;
|
package net.mamoe.mirai.utils.config;
|
||||||
|
import java.util.Collections;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import java.util.Map;
|
||||||
|
import java.util.SortedMap;
|
||||||
import java.util.*;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.ConcurrentSkipListMap;
|
import java.util.concurrent.ConcurrentSkipListMap;
|
||||||
import java.util.concurrent.locks.Lock;
|
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
|
||||||
|
|
||||||
public class MiraiConfigSection<T> extends ConcurrentSkipListMap<String, T> {
|
public class MiraiConfigSection<T> extends MiraiAbstractConfigSection<String, T>{
|
||||||
|
|
||||||
public MiraiConfigSection(){
|
public MiraiConfigSection(){
|
||||||
/*
|
|
||||||
* Ensure the key will be in order
|
|
||||||
* */
|
|
||||||
super((a,b) -> 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <D extends T> D getAs(String key){
|
|
||||||
return (D)this.get(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <D extends T> D getAs(String key, D defaultV){
|
|
||||||
return (D)(this.getOrDefault(key,defaultV));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getInt(String key){
|
public Integer getInt(String key){
|
||||||
return Integer.valueOf(this.get(key).toString());
|
return Integer.valueOf(this.get(key).toString());
|
||||||
@ -45,13 +29,18 @@ public class MiraiConfigSection<T> extends ConcurrentSkipListMap<String, T> {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <D extends T> MiraiConfigSection<D> getTypedSection(String key){
|
public <D extends T> MiraiConfigSection<D> getTypedSection(String key){
|
||||||
return (MiraiConfigSection<D>) this.getAs(key);
|
var content = (SortedMap<String,D>) this.get(key);
|
||||||
|
return new MiraiConfigSection<>(){{
|
||||||
|
setContent(Collections.synchronizedSortedMap(content));
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public MiraiConfigSection<Object> getSection(String key){
|
public MiraiConfigSection<Object> getSection(String key){
|
||||||
return (MiraiConfigSection<Object>) this.getAs(key);
|
var content = (SortedMap<String,Object>) this.get(key);
|
||||||
|
return new MiraiConfigSection<>(){{
|
||||||
|
setContent(Collections.synchronizedSortedMap(content));
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user