mirror of
https://github.com/CarmJos/EasyConfiguration.git
synced 2026-06-04 18:48:20 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6434feb980 | |||
| bc3e4b3e6f | |||
| c2a9e2254c |
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ public interface ConfigureSection {
|
|||||||
return (parent().isRoot() ? "" : parent().fullPath() + pathSeparator()) + path();
|
return (parent().isRoot() ? "" : parent().fullPath() + pathSeparator()) + path();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the path separator for the section.
|
* Get the path separator for the section.
|
||||||
*
|
*
|
||||||
@@ -143,6 +142,17 @@ public interface ConfigureSection {
|
|||||||
return getValues(false);
|
return getValues(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get this section as a map.
|
||||||
|
* <p>
|
||||||
|
* In this map, child {@link ConfigureSection}s will also be represented as {@link Map}s.
|
||||||
|
*
|
||||||
|
* @return Map of data values contained within this Section.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
@UnmodifiableView
|
||||||
|
Map<String, Object> asMap();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a stream of all values in this section.
|
* Create a stream of all values in this section.
|
||||||
*
|
*
|
||||||
@@ -153,7 +163,7 @@ public interface ConfigureSection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterates over all keys in this section.
|
* Iterates over all key-values in this section (include child sections)
|
||||||
*
|
*
|
||||||
* @param action The action to apply to each key.
|
* @param action The action to apply to each key.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -107,6 +107,11 @@ public abstract class ConfigureSource<
|
|||||||
return section().getKeys(deep);
|
return section().getKeys(deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull @UnmodifiableView Map<String, Object> asMap() {
|
||||||
|
return section().asMap();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull ConfigureSection createSection(@NotNull String path, @NotNull Map<?, ?> data) {
|
public @NotNull ConfigureSection createSection(@NotNull String path, @NotNull Map<?, ?> data) {
|
||||||
return section().createSection(path, data);
|
return section().createSection(path, data);
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -36,6 +36,12 @@ public interface DemoConfiguration extends Configuration {
|
|||||||
@FooterComments({"上述的枚举内容本质上是通过STRING解析的"})
|
@FooterComments({"上述的枚举内容本质上是通过STRING解析的"})
|
||||||
ConfigValue<ChronoUnit> TEST_ENUM = ConfiguredValue.of(ChronoUnit.class, ChronoUnit.DAYS);
|
ConfigValue<ChronoUnit> TEST_ENUM = ConfiguredValue.of(ChronoUnit.class, ChronoUnit.DAYS);
|
||||||
|
|
||||||
|
@HeaderComments({"空值测试"})
|
||||||
|
@InlineComment("空值Inline注释")
|
||||||
|
ConfiguredMap<String, String> EMPTY = ConfiguredMap.builderOf(String.class, String.class)
|
||||||
|
.asLinkedMap().fromString()
|
||||||
|
.build();
|
||||||
|
|
||||||
@ConfigPath("registered_users") // 通过注解规定配置文件中的路径,若不进行注解则以变量名自动生成。
|
@ConfigPath("registered_users") // 通过注解规定配置文件中的路径,若不进行注解则以变量名自动生成。
|
||||||
@HeaderComments({"Section类型数据测试"}) // 通过注解给配置添加注释。
|
@HeaderComments({"Section类型数据测试"}) // 通过注解给配置添加注释。
|
||||||
@InlineComment("默认地注释会加到Section的首行末尾") // 通过注解给配置添加注释。
|
@InlineComment("默认地注释会加到Section的首行末尾") // 通过注解给配置添加注释。
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
+11
@@ -49,6 +49,17 @@ public interface CommentableMeta {
|
|||||||
FooterComments.class, FOOTER,
|
FooterComments.class, FOOTER,
|
||||||
a -> Arrays.asList(a.value())
|
a -> Arrays.asList(a.value())
|
||||||
);
|
);
|
||||||
|
initializer.registerAnnotation(InlineComment.class, INLINE, a -> {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
if (a.regex().length == 0) { // for current path
|
||||||
|
map.put(null, a.value());
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
for (String regex : a.regex()) { // for specified path
|
||||||
|
map.put(regex, a.value());
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
});
|
||||||
initializer.registerAnnotation(InlineComments.class, INLINE, a -> {
|
initializer.registerAnnotation(InlineComments.class, INLINE, a -> {
|
||||||
Map<String, String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
for (InlineComment comment : a.value()) {
|
for (InlineComment comment : a.value()) {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
+4
-3
@@ -75,17 +75,18 @@ public abstract class AbstractMapSection<R extends AbstractMapSection<R>> implem
|
|||||||
return deep ? getKeys(true).size() : this.data.size();
|
return deep ? getKeys(true).size() : this.data.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@UnmodifiableView
|
@UnmodifiableView
|
||||||
public @NotNull Map<String, Object> rawMap() {
|
public @NotNull Map<String, Object> asMap() {
|
||||||
Map<String, Object> output = new LinkedHashMap<>();
|
Map<String, Object> output = new LinkedHashMap<>();
|
||||||
for (Map.Entry<String, Object> entry : this.data.entrySet()) {
|
for (Map.Entry<String, Object> entry : this.data.entrySet()) {
|
||||||
if (entry.getValue() instanceof AbstractMapSection<?>) {
|
if (entry.getValue() instanceof AbstractMapSection<?>) {
|
||||||
output.put(entry.getKey(), ((AbstractMapSection<?>) entry.getValue()).rawMap());
|
output.put(entry.getKey(), ((AbstractMapSection<?>) entry.getValue()).asMap());
|
||||||
} else if (entry.getValue() instanceof List<?>) {
|
} else if (entry.getValue() instanceof List<?>) {
|
||||||
List<Object> list = new ArrayList<>();
|
List<Object> list = new ArrayList<>();
|
||||||
for (Object obj : (List<?>) entry.getValue()) {
|
for (Object obj : (List<?>) entry.getValue()) {
|
||||||
if (obj instanceof AbstractMapSection<?>) {
|
if (obj instanceof AbstractMapSection<?>) {
|
||||||
list.add(((AbstractMapSection<?>) obj).rawMap());
|
list.add(((AbstractMapSection<?>) obj).asMap());
|
||||||
} else {
|
} else {
|
||||||
list.add(obj);
|
list.add(obj);
|
||||||
}
|
}
|
||||||
|
|||||||
+77
-71
@@ -20,13 +20,18 @@ public class ImmutableSection implements ConfigureSection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected final @Nullable ImmutableSection parent;
|
protected final @Nullable ImmutableSection parent;
|
||||||
protected final @NotNull ConfigureSection section;
|
protected final @NotNull ConfigureSection raw;
|
||||||
|
|
||||||
private ImmutableSection(@Nullable ImmutableSection parent, @NotNull ConfigureSection section) {
|
private ImmutableSection(@Nullable ImmutableSection parent, @NotNull ConfigureSection raw) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.section = section;
|
this.raw = raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private @NotNull ConfigureSection raw() {
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable ImmutableSection parent() {
|
public @Nullable ImmutableSection parent() {
|
||||||
return this.parent;
|
return this.parent;
|
||||||
@@ -34,16 +39,12 @@ public class ImmutableSection implements ConfigureSection {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull String path() {
|
public @NotNull String path() {
|
||||||
return section().path();
|
return raw().path();
|
||||||
}
|
|
||||||
|
|
||||||
private @NotNull ConfigureSection section() {
|
|
||||||
return section;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull @UnmodifiableView Map<String, Object> getValues(boolean deep) {
|
public @NotNull @UnmodifiableView Map<String, Object> getValues(boolean deep) {
|
||||||
return section().getValues(deep);
|
return raw().getValues(deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -58,12 +59,12 @@ public class ImmutableSection implements ConfigureSection {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull ImmutableSection createSection(@NotNull String path, @NotNull Map<?, ?> data) {
|
public @NotNull ImmutableSection createSection(@NotNull String path, @NotNull Map<?, ?> data) {
|
||||||
return new ImmutableSection(this, section().createSection(path, data));
|
return new ImmutableSection(this, raw().createSection(path, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Object get(@NotNull String path) {
|
public @Nullable Object get(@NotNull String path) {
|
||||||
Object value = section().get(path);
|
Object value = raw().get(path);
|
||||||
if (value instanceof ConfigureSection && !(value instanceof ImmutableSection)) {
|
if (value instanceof ConfigureSection && !(value instanceof ImmutableSection)) {
|
||||||
return new ImmutableSection(this, (ConfigureSection) value);
|
return new ImmutableSection(this, (ConfigureSection) value);
|
||||||
}
|
}
|
||||||
@@ -72,7 +73,7 @@ public class ImmutableSection implements ConfigureSection {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable ConfigureSection getSection(@NotNull String path) {
|
public @Nullable ConfigureSection getSection(@NotNull String path) {
|
||||||
ConfigureSection get = section().getSection(path);
|
ConfigureSection get = raw().getSection(path);
|
||||||
if (get != null && !(get instanceof ImmutableSection)) {
|
if (get != null && !(get instanceof ImmutableSection)) {
|
||||||
return new ImmutableSection(this, get);
|
return new ImmutableSection(this, get);
|
||||||
}
|
}
|
||||||
@@ -81,297 +82,302 @@ public class ImmutableSection implements ConfigureSection {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public char pathSeparator() {
|
public char pathSeparator() {
|
||||||
return section().pathSeparator();
|
return raw().pathSeparator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isRoot() {
|
public boolean isRoot() {
|
||||||
return section().isRoot();
|
return raw().isRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return section().isEmpty();
|
return raw().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull @UnmodifiableView Set<String> getKeys(boolean deep) {
|
public @NotNull @UnmodifiableView Set<String> getKeys(boolean deep) {
|
||||||
return section().getKeys(deep);
|
return raw().getKeys(deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull @UnmodifiableView Set<String> keys() {
|
public @NotNull @UnmodifiableView Set<String> keys() {
|
||||||
return section().keys();
|
return raw().keys();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull @UnmodifiableView Map<String, Object> values() {
|
public @NotNull @UnmodifiableView Map<String, Object> values() {
|
||||||
return section().values();
|
return raw().values();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull @UnmodifiableView Map<String, Object> asMap() {
|
||||||
|
return raw().asMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Stream<Map.Entry<String, Object>> stream() {
|
public Stream<Map.Entry<String, Object>> stream() {
|
||||||
return section().stream();
|
return raw().stream();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void forEach(@NotNull BiConsumer<String, Object> action) {
|
public void forEach(@NotNull BiConsumer<String, Object> action) {
|
||||||
section().forEach(action);
|
raw().forEach(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(@NotNull String path) {
|
public boolean contains(@NotNull String path) {
|
||||||
return section().contains(path);
|
return raw().contains(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean containsValue(@NotNull String path) {
|
public boolean containsValue(@NotNull String path) {
|
||||||
return section().containsValue(path);
|
return raw().containsValue(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean isType(@NotNull String path, @NotNull Class<T> typeClass) {
|
public <T> boolean isType(@NotNull String path, @NotNull Class<T> typeClass) {
|
||||||
return section().isType(path, typeClass);
|
return raw().isType(path, typeClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isList(@NotNull String path) {
|
public boolean isList(@NotNull String path) {
|
||||||
return section().isList(path);
|
return raw().isList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<?> getList(@NotNull String path) {
|
public @Nullable List<?> getList(@NotNull String path) {
|
||||||
return section().getList(path);
|
return raw().getList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSection(@NotNull String path) {
|
public boolean isSection(@NotNull String path) {
|
||||||
return section().isSection(path);
|
return raw().isSection(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> @Nullable T get(@NotNull String path, @NotNull Class<T> type) {
|
public <T> @Nullable T get(@NotNull String path, @NotNull Class<T> type) {
|
||||||
return section().get(path, type);
|
return raw().get(path, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> @Nullable T get(@NotNull String path, @NotNull DataFunction<@Nullable Object, T> parser) {
|
public <T> @Nullable T get(@NotNull String path, @NotNull DataFunction<@Nullable Object, T> parser) {
|
||||||
return section().get(path, parser);
|
return raw().get(path, parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> @Nullable T get(@NotNull String path, @Nullable T defaults, @NotNull Class<T> clazz) {
|
public <T> @Nullable T get(@NotNull String path, @Nullable T defaults, @NotNull Class<T> clazz) {
|
||||||
return section().get(path, defaults, clazz);
|
return raw().get(path, defaults, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> @Nullable T get(@NotNull String path, @Nullable T defaultValue, @NotNull DataFunction<Object, T> parser) {
|
public <T> @Nullable T get(@NotNull String path, @Nullable T defaultValue, @NotNull DataFunction<Object, T> parser) {
|
||||||
return section().get(path, defaultValue, parser);
|
return raw().get(path, defaultValue, parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBoolean(@NotNull String path) {
|
public boolean isBoolean(@NotNull String path) {
|
||||||
return section().isBoolean(path);
|
return raw().isBoolean(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean getBoolean(@NotNull String path) {
|
public boolean getBoolean(@NotNull String path) {
|
||||||
return section().getBoolean(path);
|
return raw().getBoolean(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Boolean getBoolean(@NotNull String path, @Nullable Boolean def) {
|
public @Nullable Boolean getBoolean(@NotNull String path, @Nullable Boolean def) {
|
||||||
return section().getBoolean(path, def);
|
return raw().getBoolean(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Boolean isByte(@NotNull String path) {
|
public @Nullable Boolean isByte(@NotNull String path) {
|
||||||
return section().isByte(path);
|
return raw().isByte(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Byte getByte(@NotNull String path) {
|
public @Nullable Byte getByte(@NotNull String path) {
|
||||||
return section().getByte(path);
|
return raw().getByte(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Byte getByte(@NotNull String path, @Nullable Byte def) {
|
public @Nullable Byte getByte(@NotNull String path, @Nullable Byte def) {
|
||||||
return section().getByte(path, def);
|
return raw().getByte(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isShort(@NotNull String path) {
|
public boolean isShort(@NotNull String path) {
|
||||||
return section().isShort(path);
|
return raw().isShort(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Short getShort(@NotNull String path) {
|
public @Nullable Short getShort(@NotNull String path) {
|
||||||
return section().getShort(path);
|
return raw().getShort(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Short getShort(@NotNull String path, @Nullable Short def) {
|
public @Nullable Short getShort(@NotNull String path, @Nullable Short def) {
|
||||||
return section().getShort(path, def);
|
return raw().getShort(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isInt(@NotNull String path) {
|
public boolean isInt(@NotNull String path) {
|
||||||
return section().isInt(path);
|
return raw().isInt(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Integer getInt(@NotNull String path) {
|
public @Nullable Integer getInt(@NotNull String path) {
|
||||||
return section().getInt(path);
|
return raw().getInt(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Integer getInt(@NotNull String path, @Nullable Integer def) {
|
public @Nullable Integer getInt(@NotNull String path, @Nullable Integer def) {
|
||||||
return section().getInt(path, def);
|
return raw().getInt(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isLong(@NotNull String path) {
|
public boolean isLong(@NotNull String path) {
|
||||||
return section().isLong(path);
|
return raw().isLong(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Long getLong(@NotNull String path) {
|
public @Nullable Long getLong(@NotNull String path) {
|
||||||
return section().getLong(path);
|
return raw().getLong(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Long getLong(@NotNull String path, @Nullable Long def) {
|
public @Nullable Long getLong(@NotNull String path, @Nullable Long def) {
|
||||||
return section().getLong(path, def);
|
return raw().getLong(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFloat(@NotNull String path) {
|
public boolean isFloat(@NotNull String path) {
|
||||||
return section().isFloat(path);
|
return raw().isFloat(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Float getFloat(@NotNull String path) {
|
public @Nullable Float getFloat(@NotNull String path) {
|
||||||
return section().getFloat(path);
|
return raw().getFloat(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Float getFloat(@NotNull String path, @Nullable Float def) {
|
public @Nullable Float getFloat(@NotNull String path, @Nullable Float def) {
|
||||||
return section().getFloat(path, def);
|
return raw().getFloat(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDouble(@NotNull String path) {
|
public boolean isDouble(@NotNull String path) {
|
||||||
return section().isDouble(path);
|
return raw().isDouble(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Double getDouble(@NotNull String path) {
|
public @Nullable Double getDouble(@NotNull String path) {
|
||||||
return section().getDouble(path);
|
return raw().getDouble(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Double getDouble(@NotNull String path, @Nullable Double def) {
|
public @Nullable Double getDouble(@NotNull String path, @Nullable Double def) {
|
||||||
return section().getDouble(path, def);
|
return raw().getDouble(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isChar(@NotNull String path) {
|
public boolean isChar(@NotNull String path) {
|
||||||
return section().isChar(path);
|
return raw().isChar(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Character getChar(@NotNull String path) {
|
public @Nullable Character getChar(@NotNull String path) {
|
||||||
return section().getChar(path);
|
return raw().getChar(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable Character getChar(@NotNull String path, @Nullable Character def) {
|
public @Nullable Character getChar(@NotNull String path, @Nullable Character def) {
|
||||||
return section().getChar(path, def);
|
return raw().getChar(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isString(@NotNull String path) {
|
public boolean isString(@NotNull String path) {
|
||||||
return section().isString(path);
|
return raw().isString(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable String getString(@NotNull String path) {
|
public @Nullable String getString(@NotNull String path) {
|
||||||
return section().getString(path);
|
return raw().getString(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable String getString(@NotNull String path, @Nullable String def) {
|
public @Nullable String getString(@NotNull String path, @Nullable String def) {
|
||||||
return section().getString(path, def);
|
return raw().getString(path, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull <V> List<V> getList(@NotNull String path, @NotNull DataFunction<Object, V> parser) {
|
public @NotNull <V> List<V> getList(@NotNull String path, @NotNull DataFunction<Object, V> parser) {
|
||||||
return section().getList(path, parser);
|
return raw().getList(path, parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<String> getStringList(@NotNull String path) {
|
public @NotNull List<String> getStringList(@NotNull String path) {
|
||||||
return section().getStringList(path);
|
return raw().getStringList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Integer> getIntegerList(@NotNull String path) {
|
public @NotNull List<Integer> getIntegerList(@NotNull String path) {
|
||||||
return section().getIntegerList(path);
|
return raw().getIntegerList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Long> getLongList(@NotNull String path) {
|
public @NotNull List<Long> getLongList(@NotNull String path) {
|
||||||
return section().getLongList(path);
|
return raw().getLongList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Double> getDoubleList(@NotNull String path) {
|
public @NotNull List<Double> getDoubleList(@NotNull String path) {
|
||||||
return section().getDoubleList(path);
|
return raw().getDoubleList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Float> getFloatList(@NotNull String path) {
|
public @NotNull List<Float> getFloatList(@NotNull String path) {
|
||||||
return section().getFloatList(path);
|
return raw().getFloatList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Byte> getByteList(@NotNull String path) {
|
public @NotNull List<Byte> getByteList(@NotNull String path) {
|
||||||
return section().getByteList(path);
|
return raw().getByteList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Character> getCharList(@NotNull String path) {
|
public @NotNull List<Character> getCharList(@NotNull String path) {
|
||||||
return section().getCharList(path);
|
return raw().getCharList(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, C extends Collection<T>> @NotNull C getCollection(@NotNull String path, @NotNull Supplier<C> constructor, @NotNull DataFunction<Object, T> parser) {
|
public <T, C extends Collection<T>> @NotNull C getCollection(@NotNull String path, @NotNull Supplier<C> constructor, @NotNull DataFunction<Object, T> parser) {
|
||||||
return section().getCollection(path, constructor, parser);
|
return raw().getCollection(path, constructor, parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Stream<?> stream(@NotNull String path) {
|
public @NotNull Stream<?> stream(@NotNull String path) {
|
||||||
return section().stream(path);
|
return raw().stream(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull <T> Stream<T> stream(@NotNull String path, @NotNull Function<Object, T> parser) {
|
public @NotNull <T> Stream<T> stream(@NotNull String path, @NotNull Function<Object, T> parser) {
|
||||||
return section().stream(path, parser);
|
return raw().stream(path, parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String childPath(String path) {
|
public String childPath(String path) {
|
||||||
return section().childPath(path);
|
return raw().childPath(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return section.hashCode();
|
return raw.hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return Objects.equals(section, obj);
|
return Objects.equals(raw, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -40,6 +40,12 @@ public class ShadedSection implements ConfigureSection {
|
|||||||
return merge(template, source).getValues(deep);
|
return merge(template, source).getValues(deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull @UnmodifiableView Map<String, Object> asMap() {
|
||||||
|
if (source == null) return template.asMap();
|
||||||
|
return merge(template, source).asMap();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull @UnmodifiableView Set<String> getKeys(boolean deep) {
|
public @NotNull @UnmodifiableView Set<String> getKeys(boolean deep) {
|
||||||
Set<String> keys = new HashSet<>(template.getKeys(deep));
|
Set<String> keys = new HashSet<>(template.getKeys(deep));
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<modules>
|
<modules>
|
||||||
<module>core</module>
|
<module>core</module>
|
||||||
<module>features/section</module>
|
<module>features/section</module>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
+1
-1
@@ -55,7 +55,7 @@ public class MongoSource extends ConfigureSource<SourcedSection, Map<String, Obj
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save() throws Exception {
|
public void save() throws Exception {
|
||||||
Map<String, Object> data = this.rootSection.rawMap();
|
Map<String, Object> data = this.rootSection.asMap();
|
||||||
if (data.isEmpty()) return; // Skip saving if empty
|
if (data.isEmpty()) return; // Skip saving if empty
|
||||||
if (data.containsKey("_id") && data.size() == 1) return; // Skip saving if only contains _id
|
if (data.containsKey("_id") && data.size() == 1) return; // Skip saving if only contains _id
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
|
|||||||
@@ -55,8 +55,14 @@ public class SQLSource extends ConfigureSource<SourcedSection, Map<String, Objec
|
|||||||
builder.addColumn("type", "TINYINT NOT NULL DEFAULT 0");
|
builder.addColumn("type", "TINYINT NOT NULL DEFAULT 0");
|
||||||
builder.addColumn("version", "MEDIUMINT UNSIGNED NOT NULL DEFAULT 0");
|
builder.addColumn("version", "MEDIUMINT UNSIGNED NOT NULL DEFAULT 0");
|
||||||
|
|
||||||
builder.addColumn("create_time", "TIMESTAMP NOT NULL");
|
builder.addColumn(
|
||||||
builder.addColumn("update_time", "TIMESTAMP NOT NULL");
|
"create_time",
|
||||||
|
"TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"
|
||||||
|
);
|
||||||
|
builder.addColumn(
|
||||||
|
"update_time",
|
||||||
|
"TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"
|
||||||
|
);
|
||||||
|
|
||||||
builder.setIndex(
|
builder.setIndex(
|
||||||
IndexType.PRIMARY_KEY, "pk_" + tableName.toLowerCase(),
|
IndexType.PRIMARY_KEY, "pk_" + tableName.toLowerCase(),
|
||||||
@@ -109,12 +115,12 @@ public class SQLSource extends ConfigureSource<SourcedSection, Map<String, Objec
|
|||||||
@Nullable Object value = section.get(path);
|
@Nullable Object value = section.get(path);
|
||||||
|
|
||||||
if (value instanceof SourcedSection) {
|
if (value instanceof SourcedSection) {
|
||||||
value = ((SourcedSection) value).rawMap();
|
value = ((SourcedSection) value).asMap();
|
||||||
} else if (value instanceof List<?>) {
|
} else if (value instanceof List<?>) {
|
||||||
List<Object> list = new ArrayList<>();
|
List<Object> list = new ArrayList<>();
|
||||||
for (Object obj : (List<?>) value) {
|
for (Object obj : (List<?>) value) {
|
||||||
if (obj instanceof SourcedSection) {
|
if (obj instanceof SourcedSection) {
|
||||||
list.add(((SourcedSection) obj).rawMap());
|
list.add(((SourcedSection) obj).asMap());
|
||||||
} else {
|
} else {
|
||||||
list.add(obj);
|
list.add(obj);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easyconfiguration-parent</artifactId>
|
<artifactId>easyconfiguration-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>4.0.8</version>
|
<version>4.0.10</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
|
<maven.compiler.target>${project.jdk.version}</maven.compiler.target>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
<deps.yamlcommentwriter.version>1.2.0</deps.yamlcommentwriter.version>
|
<deps.yamlcommentwriter.version>1.2.1</deps.yamlcommentwriter.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<artifactId>easyconfiguration-yaml</artifactId>
|
<artifactId>easyconfiguration-yaml</artifactId>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package yaml.test;
|
package yaml.test;
|
||||||
|
|
||||||
|
import cc.carm.lib.configuration.commentable.Commentable;
|
||||||
import cc.carm.lib.configuration.commentable.CommentableMeta;
|
import cc.carm.lib.configuration.commentable.CommentableMeta;
|
||||||
import cc.carm.lib.configuration.demo.tests.ConfigurationTest;
|
import cc.carm.lib.configuration.demo.tests.ConfigurationTest;
|
||||||
import cc.carm.lib.configuration.source.ConfigurationHolder;
|
import cc.carm.lib.configuration.source.ConfigurationHolder;
|
||||||
@@ -21,7 +22,6 @@ public class YamlTests {
|
|||||||
ConfigurationTest.testDemo(holder);
|
ConfigurationTest.testDemo(holder);
|
||||||
ConfigurationTest.testInner(holder);
|
ConfigurationTest.testInner(holder);
|
||||||
|
|
||||||
|
|
||||||
Map<String, List<String>> headers = holder.extractMetadata(CommentableMeta.HEADER);
|
Map<String, List<String>> headers = holder.extractMetadata(CommentableMeta.HEADER);
|
||||||
System.out.println("Header comments: ");
|
System.out.println("Header comments: ");
|
||||||
headers.forEach((k, v) -> {
|
headers.forEach((k, v) -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user