1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 18:48:20 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
carm 6434feb980 fix(sql): Fixed sql table format 2025-03-04 01:57:04 +08:00
carm bc3e4b3e6f fix(comment): Fixed yaml comments 2025-03-04 01:24:12 +08:00
carm c2a9e2254c feat(section): Add ConfigureSection#asMap function 2025-03-04 01:06:21 +08:00
22 changed files with 146 additions and 95 deletions
+1 -1
View File
@@ -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
View File
@@ -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的首行末尾") // 通过注解给配置添加注释。
+1 -1
View File
@@ -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>
@@ -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()) {
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
@@ -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);
} }
@@ -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);
} }
} }
@@ -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));
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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
View File
@@ -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>
@@ -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
+1 -1
View File
@@ -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);
} }
+2 -2
View File
@@ -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) -> {