9 Commits

Author SHA1 Message Date
huangsimin
22b97d6194 修改一些数组可能产生bug, get改成范性返回值 2022-07-01 12:01:21 +08:00
huangsimin
1336a89e59 TODO: 修改配置, 更加便利使用 2022-06-30 18:10:14 +08:00
eson
2fc3f7d265 Merge tag 'v1.0.3' into develop
合并1.0.3版本
2022-06-28 14:38:20 +08:00
eson
6fd4b05af0 Merge branch 'release/v1.0.3' 2022-06-28 14:38:07 +08:00
eson
1a3c386274 修改 java版本17 -> 8 2022-06-28 14:37:29 +08:00
eson
72265193ca 修改Readme.md. 修改logback的一些不可见字符上问题 2022-06-27 13:45:52 +08:00
eson
5c6d98be29 start 1.0.3 2022-06-21 16:27:43 +08:00
eson
cd99c43254 修改 logback.xml 格式 2022-06-21 16:24:14 +08:00
eson
4dbd98be5f [maven-release-plugin] prepare for next development iteration 2022-06-20 16:05:04 +08:00
5 changed files with 177 additions and 51 deletions

View File

@@ -91,7 +91,11 @@ cnf.seek("key1", "key2").set("do_set"); // seek先定位keys
#### setWithCreate方法 赋值. 如果key不存在就创建
```java
Config.UseConfig((cnf) -> {
int[] values = new int[]{1,2,3} ; // 数组配置
ArrayList<Object> values = new ArrayList<Object>(); // 数组配置1 2 3
values.add(1);
values.add(2);
values.add(3);
cnf.seek("listKeys1", "listKeys2").setWithCreate( values ); // 如果不存在key创建.
// listKeys1:
// listKeys2:
@@ -191,5 +195,7 @@ Config.UseConfig("org.fortest", (cnf)->{
http://mvn.yuandian.com/repository/maven-releases
http://mvn.yuandian.com/repository/maven-snapshots
如: 192.168.1.113 mvn.yuandian.com
如: host上修改 192.168.1.113 mvn.yuandian.com
如: dns服务器指向 192.168.1.113
```

11
pom.xml
View File

@@ -2,15 +2,15 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.yuandian.common</groupId>
<artifactId>config</artifactId>
<version>1.0.1</version>
<version>1.0.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>config</name>
<url>http://yuandian.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<java.version>17</java.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<java.version>8</java.version>
<nacos.version>2.1.0</nacos.version>
<snakeyaml.version>1.30</snakeyaml.version>
<logback.version>1.2.11</logback.version>
@@ -69,10 +69,9 @@
<connection>scm:git:http://git.yuandian.com/project/yd-common-config.git</connection>
<url>http://git.yuandian.com/project/yd-common-config.git</url>
<developerConnection>scm:git:http://git.yuandian.com/project/yd-common-config.git</developerConnection>
<tag>v1.0.1</tag>
<tag>HEAD</tag>
</scm>
<distributionManagement>
<snapshotRepository>
<id>yuandian-nexus</id>

View File

@@ -6,6 +6,7 @@
*/
package com.yuandian.common;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -25,6 +26,7 @@ import com.alibaba.nacos.api.exception.NacosException;
import lombok.Getter;
import lombok.Setter;
import lombok.var;
import lombok.extern.slf4j.Slf4j;
/**
@@ -134,29 +136,48 @@ public class Config {
* @param keys 获取的key值
* @return
*/
public Object get(String... keys) {
var cur = data;
for (var i = 0; i < keys.length - 1; i++) {
public <T> T get(Object... keys) {
Object cur = data;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
cur = (Map<String, Object>) cur.get(key);
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
cur = opcur.get((int)key);
} else {
var opcur = (Map<String, Object>)cur ;
cur = opcur.get(key);
}
}
return cur.get(keys[keys.length - 1]);
return (T)cur;
// return (T)cur.get(keys[keys.length - 1]);
}
/**
* 判断 keys 是否存在
*
* @param keys 获取的key值
* @return
*/
public boolean exists(String... keys) {
var cur = data;
for (var i = 0; i < keys.length - 1; i++) {
public boolean exists(Object... keys) {
Object cur = data;
for (var i = 0; i < keys.length; i++) {
if(cur == null) {
return false;
}
var key = keys[i];
cur = (Map<String, Object>) cur.get(key);
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
cur = opcur.get((int)key);
} else {
var opcur = (Map<String, Object>)cur ;
cur = opcur.get(key);
}
}
return cur.get(keys[keys.length-1]) != null;
return true;
}
/**
@@ -168,9 +189,9 @@ public class Config {
*/
public class Operator {
Config config;
String[] keys;
Object[] keys;
Operator(Config config, String[] keys) {
Operator(Config config, Object[] keys) {
this.config = config;
this.keys = keys;
}
@@ -181,19 +202,34 @@ public class Config {
* @return 返回自身。
*/
public Operator createKeys() {
var cur = config.data;
Object cur = config.data;
for (var i = 0;;) {
var key = keys[i];
var vobj = cur.get(key);
if (vobj == null) {
vobj = new LinkedHashMap<>();
cur.put(key, vobj);
Object vobj;
// var vobj = cur.get(key);
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
vobj = opcur.get((int)key);
if (vobj == null) {
vobj = new ArrayList<Object>();
opcur.set((int)key, vobj);
}
} else {
var opcur = (Map<String, Object>)cur ;
vobj = opcur.get(key);
if (vobj == null) {
vobj = new LinkedHashMap<>();
opcur.put((String)key, vobj);
}
}
i++;
if (i >= keys.length) {
break;
}
cur = (Map<String, Object>) vobj;
cur = vobj;
}
return this;
}
@@ -204,12 +240,28 @@ public class Config {
* @param value 赋值
*/
public void set(Object value) {
var cur = config.data;
Object cur = config.data;
for (var i = 0; i < keys.length - 1; i++) {
var key = keys[i];
cur = (Map<String, Object>) cur.get(key);
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
cur = opcur.get((int)key);
} else {
var opcur = (Map<String, Object>)cur ;
cur = opcur.get(key);
}
}
var key = keys[keys.length - 1];
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
opcur.set((int)key, value);
} else {
var opcur = (Map<String, Object>)cur ;
opcur.put((String)key, value);
}
cur.put(keys[keys.length - 1], value);
}
/**
@@ -218,18 +270,48 @@ public class Config {
* @param value 赋值
*/
public void setWithCreate(Object value) {
var cur = config.data;
Object cur = config.data;
for (var i = 0; i < keys.length - 1; i++) {
var key = keys[i];
var curValue = cur.get(key);
if(curValue == null) {
curValue = new LinkedHashMap<>();
cur.put(key, curValue);
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
Object vobj = opcur.get((int)key);
if (vobj == null) {
vobj = new ArrayList<Object>();
opcur.set((int)key, vobj);
}
cur = vobj;
} else {
var opcur = (Map<String, Object>)cur ;
Object vobj = opcur.get(key);
if (vobj == null) {
vobj = new LinkedHashMap<>();
opcur.put((String)key, vobj);
}
cur = vobj;
}
cur = (Map<String, Object>)curValue;
}
cur.put(keys[keys.length - 1], value);
var key = keys[keys.length - 1];
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
Object vobj = opcur.get((int)key);
if (vobj == null) {
vobj = new ArrayList<Object>();
opcur.set((int)key, vobj);
}
} else {
var opcur = (Map<String, Object>)cur ;
Object vobj = opcur.get(key);
if (vobj == null) {
vobj = new LinkedHashMap<>();
opcur.put((String)key, vobj);
}
}
}
}
@@ -250,13 +332,28 @@ public class Config {
* @param keys
* @return
*/
public Object remove(String... keys) {
var cur = data;
public <T> T remove(Object... keys) {
Object cur = data;
for (var i = 0; i < keys.length - 1; i++) {
var key = keys[i];
cur = (Map<String, Object>) cur.get(key);
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur ;
cur = opcur.get((int)key);
} else {
var opcur = (Map<String, Object>)cur ;
cur = opcur.get(key);
}
}
var key = keys[keys.length - 1];
if(key.getClass() != String.class ) {
var opcur = (ArrayList<Object>)cur;
return (T)opcur.remove((int)key);
} else {
var opcur = (Map<String, Object>)cur ;
return (T)opcur.remove(key);
}
return cur.remove(keys[keys.length - 1]);
}
/**
@@ -358,7 +455,6 @@ public class Config {
return null;
});
} catch (Exception e) {
//TODO: handle exception
e.printStackTrace();
}

View File

@@ -3,7 +3,7 @@
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{yyyyMMdd HH:mm:ss.SSS} %-5level[%thread\(%file:%line\)]: %msg%n
%d{yyyyMMdd HH:mm:ss.SSS} %-5level%thread\(%file:%line\): %msg%n
</pattern>
</encoder>
</appender>

View File

@@ -13,6 +13,7 @@ import org.junit.jupiter.api.TestMethodOrder;
import com.alibaba.nacos.api.exception.NacosException;
import lombok.var;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@TestMethodOrder(OrderAnnotation.class)
@@ -34,7 +35,7 @@ public class ConfigTest {
* key2:
* path_value
*/
log.info("{}",cnf.get("key1", "key2"));
log.info("{}", (Object)cnf.get("key1", "key2"));
return null;
});
}
@@ -93,8 +94,6 @@ public class ConfigTest {
Instant now = Instant.now();
cnf.data.put("use_config", now.toString());
try {
log.info("{}",cnf.update());
} catch (NacosException e) {
@@ -157,6 +156,21 @@ public class ConfigTest {
return null;
});
}
@Test
@Order(5)
void testConfigGetArray() throws Exception {
Config.UseConfig((cnf) -> {
/**
* nacos config 默认 group=yuandian dataId=dataflow
* key1:
* key2:
* path_value
*/
log.info("{}", (Object)cnf.get("listKeys1", "listKeys2", 1));
return null;
});
}
@Test
@Order(1)
@@ -180,7 +194,7 @@ public class ConfigTest {
void testLabelConfig() throws Exception {
Config.UseConfig("org.fortest", (cnf)->{
log.info("{}", cnf.get("test"));
log.info("{}", (Object)cnf.get("test"));
Assertions.assertEquals(cnf.get("test"), "groupAndDataId");
return null;
});
@@ -194,7 +208,11 @@ public class ConfigTest {
void testSetListValues() throws Exception {
Config.UseConfig((cnf) -> {
int[] values = new int[]{1,2,3} ;
ArrayList<Object> values = new ArrayList<Object>();
values.add(1);
values.add(2);
values.add(3);
cnf.seek("listKeys1", "listKeys2").setWithCreate( values ); // 如果不存在key创建.
// listKeys1:
// listKeys2:
@@ -217,7 +235,11 @@ public class ConfigTest {
void testMapData() throws Exception {
Config.UseConfig((cnf)->{
int[] values = new int[]{1,2,3} ;
ArrayList<Object> values = new ArrayList<Object>() ;
values.add(1);
values.add(2);
values.add(3);
cnf.seek("listKeys1", "listKeys2").setWithCreate( values ); // 如果不存在key创建.
// listKeys1:
// listKeys2:
@@ -233,9 +255,12 @@ public class ConfigTest {
});
Config.UseConfig((cnf) -> {
log.info("{}", cnf.data); // Map<String, Object> data
var key2 = (Map<String, Object>) (cnf.data.get("listKeys1"));
((int[])key2.get("listKeys2"))[1] = 10; // 数组 1 2 3 的2为 10
ArrayList<Object> listKeys2 = (ArrayList<Object>)key2.get("listKeys2");
listKeys2.set(1,10); // 数组 1 2 3 的2为 10
try {
log.info("{}",cnf.update());
} catch (NacosException e) {