From c1583de1570fc579e6ca1ff821deac97f774284e Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Sun, 5 Mar 2023 13:07:26 +0800 Subject: [PATCH] =?UTF-8?q?Kv=E5=B7=A5=E5=85=B7=E7=B1=BB=E5=90=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=B8=BACfg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../neutrino/core/base/{Kv.java => Cfg.java} | 30 +++---- .../fun/asgc/neutrino/core/base/CfgTest.java | 83 +++++++++++++++++++ .../fun/asgc/neutrino/core/base/KvTest.java | 83 ------------------- 3 files changed, 98 insertions(+), 98 deletions(-) rename neutrino-core/src/main/java/fun/asgc/neutrino/core/base/{Kv.java => Cfg.java} (95%) create mode 100644 neutrino-core/src/test/java/fun/asgc/neutrino/core/base/CfgTest.java delete mode 100644 neutrino-core/src/test/java/fun/asgc/neutrino/core/base/KvTest.java diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/base/Kv.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/base/Cfg.java similarity index 95% rename from neutrino-core/src/main/java/fun/asgc/neutrino/core/base/Kv.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/base/Cfg.java index 0a2e0660..2066a8ea 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/base/Kv.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/base/Cfg.java @@ -22,51 +22,51 @@ import java.util.*; * @author: aoshiguchen * @date: 2023/3/1 */ -public class Kv implements Map , Serializable, Cloneable { +public class Cfg implements Map , Serializable, Cloneable { private HashMap aliasMap; private LinkedHashMap _m; private HashMap _k; private Locale locale; private String SEPARATOR = "_|-"; - private Kv parent; + private Cfg parent; - private Kv() { + private Cfg() { this(null, 16, null); } - private Kv(Kv parent) { + private Cfg(Cfg parent) { this(parent, 16, null); } - public static Kv of() { - return new Kv<>(); + public static Cfg of() { + return new Cfg<>(); } - public static Kv of(Kv parent) { - return new Kv(parent); + public static Cfg of(Cfg parent) { + return new Cfg(parent); } - public Kv set(K k, V v) { + public Cfg set(K k, V v) { this.put(k, v); return this; } - public Kv setAlias(K k, K alias) { + public Cfg setAlias(K k, K alias) { this.aliasMap.put(convertKey(alias), convertKey(k)); return this; } - public Kv(Kv parent, int initialCapacity, Locale locale) { + public Cfg(Cfg parent, int initialCapacity, Locale locale) { this.parent = parent; this._m = new LinkedHashMap(initialCapacity) { @Override public boolean containsKey(Object key) { - return Kv.this.containsKey(key); + return Cfg.this.containsKey(key); } @Override protected boolean removeEldestEntry(Map.Entry eldest) { - boolean doRemove = Kv.this.removeEldestEntry(eldest); + boolean doRemove = Cfg.this.removeEldestEntry(eldest); if (doRemove) { _k.remove(convertKey(eldest.getKey())); } @@ -220,8 +220,8 @@ public class Kv implements Map , Serializable, Cloneable { } @Override - protected Kv clone() { - Kv res = new Kv<>(); + protected Cfg clone() { + Cfg res = new Cfg<>(); if (null != parent) { res.parent = parent.clone(); } diff --git a/neutrino-core/src/test/java/fun/asgc/neutrino/core/base/CfgTest.java b/neutrino-core/src/test/java/fun/asgc/neutrino/core/base/CfgTest.java new file mode 100644 index 00000000..eb1f7fbd --- /dev/null +++ b/neutrino-core/src/test/java/fun/asgc/neutrino/core/base/CfgTest.java @@ -0,0 +1,83 @@ +package fun.asgc.neutrino.core.base; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author: aoshiguchen + * @date: 2023/3/1 + */ +public class CfgTest { + @Test + public void test1() { + Object key1 = new Object(); + Cfg cfg0 = Cfg.of() + .setAlias("app.server.http.http-port", "aaa") + ; + + Cfg cfg1 = Cfg.of(cfg0) + .set("app.server.http.http-port", 8080) + .set("app.server.http.jks_Path", "/123/456") + .set(key1, 1) + .setAlias("app.server.http.http-port", "http-port") + ; + + + Cfg cfg2 = Cfg.of(cfg1) + .set("app.server.http.httpPort", 8081) + .set("app.server.http.context-path", "/") + ; + + Cfg cfg3 = Cfg.of(cfg2) + .setAlias("app.server.http.http-port", "port") + .setAlias("http-port", "p"); + + Assert.assertTrue(!cfg1.isEmpty()); + Assert.assertTrue(cfg1.size() == 3); + Assert.assertTrue(cfg1.stackSize() == 3); + Assert.assertTrue(cfg1.get("app.server.http.http-port").equals(8080)); + Assert.assertTrue(cfg1.get("app.server.http.httpPort").equals(8080)); + Assert.assertTrue(cfg1.idx(0).equals(8080)); + Assert.assertTrue(cfg1.get("app.server.http.jks_Path").equals("/123/456")); + Assert.assertTrue(cfg1.get("app.server.http.jksPath").equals("/123/456")); + Assert.assertTrue(cfg1.idx(1).equals("/123/456")); + Assert.assertTrue(cfg1.containsKey("app.server.http.http-port")); + Assert.assertTrue(cfg1.containsKey(key1)); + Assert.assertFalse(cfg1.containsKey(new Object())); + + Assert.assertTrue(!cfg2.isEmpty()); + Assert.assertTrue(cfg2.size() == 2); + Assert.assertTrue(cfg2.stackSize() == 5); + Assert.assertTrue(cfg2.get("app.server.http.http-port").equals(8081)); + Assert.assertTrue(cfg2.get("app.server.http.httpPort").equals(8081)); + Assert.assertTrue(cfg2.get("app.server.http.jks-path") == null); + Assert.assertTrue(cfg2.get("app.server.http.jksPath") == null); + Assert.assertTrue(cfg2.get("app.server.http.context-path").equals("/")); + + Assert.assertTrue(cfg2.stackGet("app.server.http.jks-path").equals("/123/456")); + Assert.assertTrue(cfg2.stackGet("app.server.http.jksPath").equals("/123/456")); + Assert.assertTrue(cfg2.stackGet("app.server.http.context-path").equals("/")); + + Assert.assertTrue(cfg3.isEmpty()); + Assert.assertTrue(!cfg3.isStackEmpty()); + Assert.assertTrue(cfg3.size() == 0); + Assert.assertTrue(cfg3.stackSize() == 5); + Assert.assertTrue(cfg3.get("app.server.http.jks-path") == null); + Assert.assertTrue(cfg3.get("app.server.http.jksPath") == null); + Assert.assertTrue(cfg3.get("app.server.http.context-path") == null); + Assert.assertTrue(cfg3.stackGet("app.server.http.jks-path").equals("/123/456")); + Assert.assertTrue(cfg3.stackGet("app.server.http.jksPath").equals("/123/456")); + Assert.assertTrue(cfg3.stackGet("app.server.http.context-path").equals("/")); + + Assert.assertTrue(cfg3.stackGetOrDefault("app.server.http.timeout", 60000).equals(60000)); + + Assert.assertTrue(cfg3.takeStr("app.server.http.http-port").equals("8081")); + Assert.assertNull(cfg3.take(null)); + Assert.assertTrue(cfg3.takeStr("httpPort").equals("8081")); + Assert.assertTrue(cfg3.takeInt("http-port").equals(8081)); + Assert.assertTrue(cfg3.takeInt("port").equals(8081)); + // 注意:第3层的别名p,指向了第1层的别名http-port + Assert.assertTrue(cfg3.takeInt("p").equals(8080)); + Assert.assertTrue(cfg3.takeStr("aaa").equals("8081")); + } +} diff --git a/neutrino-core/src/test/java/fun/asgc/neutrino/core/base/KvTest.java b/neutrino-core/src/test/java/fun/asgc/neutrino/core/base/KvTest.java deleted file mode 100644 index b31dc254..00000000 --- a/neutrino-core/src/test/java/fun/asgc/neutrino/core/base/KvTest.java +++ /dev/null @@ -1,83 +0,0 @@ -package fun.asgc.neutrino.core.base; - -import org.junit.Assert; -import org.junit.Test; - -/** - * @author: aoshiguchen - * @date: 2023/3/1 - */ -public class KvTest { - @Test - public void test1() { - Object key1 = new Object(); - Kv kv0 = Kv.of() - .setAlias("app.server.http.http-port", "aaa") - ; - - Kv kv1 = Kv.of(kv0) - .set("app.server.http.http-port", 8080) - .set("app.server.http.jks_Path", "/123/456") - .set(key1, 1) - .setAlias("app.server.http.http-port", "http-port") - ; - - - Kv kv2 = Kv.of(kv1) - .set("app.server.http.httpPort", 8081) - .set("app.server.http.context-path", "/") - ; - - Kv kv3 = Kv.of(kv2) - .setAlias("app.server.http.http-port", "port") - .setAlias("http-port", "p"); - - Assert.assertTrue(!kv1.isEmpty()); - Assert.assertTrue(kv1.size() == 3); - Assert.assertTrue(kv1.stackSize() == 3); - Assert.assertTrue(kv1.get("app.server.http.http-port").equals(8080)); - Assert.assertTrue(kv1.get("app.server.http.httpPort").equals(8080)); - Assert.assertTrue(kv1.idx(0).equals(8080)); - Assert.assertTrue(kv1.get("app.server.http.jks_Path").equals("/123/456")); - Assert.assertTrue(kv1.get("app.server.http.jksPath").equals("/123/456")); - Assert.assertTrue(kv1.idx(1).equals("/123/456")); - Assert.assertTrue(kv1.containsKey("app.server.http.http-port")); - Assert.assertTrue(kv1.containsKey(key1)); - Assert.assertFalse(kv1.containsKey(new Object())); - - Assert.assertTrue(!kv2.isEmpty()); - Assert.assertTrue(kv2.size() == 2); - Assert.assertTrue(kv2.stackSize() == 5); - Assert.assertTrue(kv2.get("app.server.http.http-port").equals(8081)); - Assert.assertTrue(kv2.get("app.server.http.httpPort").equals(8081)); - Assert.assertTrue(kv2.get("app.server.http.jks-path") == null); - Assert.assertTrue(kv2.get("app.server.http.jksPath") == null); - Assert.assertTrue(kv2.get("app.server.http.context-path").equals("/")); - - Assert.assertTrue(kv2.stackGet("app.server.http.jks-path").equals("/123/456")); - Assert.assertTrue(kv2.stackGet("app.server.http.jksPath").equals("/123/456")); - Assert.assertTrue(kv2.stackGet("app.server.http.context-path").equals("/")); - - Assert.assertTrue(kv3.isEmpty()); - Assert.assertTrue(!kv3.isStackEmpty()); - Assert.assertTrue(kv3.size() == 0); - Assert.assertTrue(kv3.stackSize() == 5); - Assert.assertTrue(kv3.get("app.server.http.jks-path") == null); - Assert.assertTrue(kv3.get("app.server.http.jksPath") == null); - Assert.assertTrue(kv3.get("app.server.http.context-path") == null); - Assert.assertTrue(kv3.stackGet("app.server.http.jks-path").equals("/123/456")); - Assert.assertTrue(kv3.stackGet("app.server.http.jksPath").equals("/123/456")); - Assert.assertTrue(kv3.stackGet("app.server.http.context-path").equals("/")); - - Assert.assertTrue(kv3.stackGetOrDefault("app.server.http.timeout", 60000).equals(60000)); - - Assert.assertTrue(kv3.takeStr("app.server.http.http-port").equals("8081")); - Assert.assertNull(kv3.take(null)); - Assert.assertTrue(kv3.takeStr("httpPort").equals("8081")); - Assert.assertTrue(kv3.takeInt("http-port").equals(8081)); - Assert.assertTrue(kv3.takeInt("port").equals(8081)); - // 注意:第3层的别名p,指向了第1层的别名http-port - Assert.assertTrue(kv3.takeInt("p").equals(8080)); - Assert.assertTrue(kv3.takeStr("aaa").equals("8081")); - } -}