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

feat: Support kotlin dsl

This commit is contained in:
huanmeng-qwq
2025-03-22 17:43:04 +08:00
parent 7462cd720e
commit fa99385ff0
9 changed files with 409 additions and 4 deletions
+70 -4
View File
@@ -48,14 +48,22 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>configured-feature-kotlin</artifactId>
<version>${project.parent.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
@@ -68,6 +76,64 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<source>src/main/java</source>
<source>target/generated-sources/annotations</source>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmTarget>1.8</jvmTarget>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
@@ -1,11 +1,13 @@
package cc.carm.lib.configuration.demo.tests;
import cc.carm.lib.configuration.demo.tests.conf.DemoConfiguration;
import cc.carm.lib.configuration.demo.tests.conf.KotlinConfiguration;
import cc.carm.lib.configuration.demo.tests.conf.RegistryConfig;
import cc.carm.lib.configuration.demo.tests.model.UserRecord;
import cc.carm.lib.configuration.source.ConfigurationHolder;
import org.jetbrains.annotations.TestOnly;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -80,6 +82,22 @@ public class ConfigurationTest {
}
public static void testKotlin(ConfigurationHolder<?> provider) {
provider.initialize(KotlinConfiguration.class);
System.out.println("> Test Kotlin value before:");
System.out.println(KotlinConfiguration.INSTANCE.getLINKED_MAP().get());
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("Language", "Kotlin");
System.out.println("> Test Kotlin value -> " + map);
KotlinConfiguration.INSTANCE.getLINKED_MAP().set(map);
System.out.println("> Test Kotlin value after:");
System.out.println(KotlinConfiguration.INSTANCE.getLINKED_MAP().get());
}
public static void save(ConfigurationHolder<?> provider) {
try {
provider.save();
@@ -0,0 +1,33 @@
package cc.carm.lib.configuration.demo.tests.conf
import cc.carm.lib.configuration.Configuration
import cc.carm.lib.configuration.annotation.ConfigPath
import cc.carm.lib.configuration.annotation.ConfigVersion
import cc.carm.lib.configuration.kotlin.value.*
import java.util.*
@ConfigPath(root = true)
object KotlinConfiguration : Configuration {
@ConfigVersion(1)
val VERSION = valueFrom(Double::class) {
defaults(1.0)
}
val USER_LIST = listFrom(String::class) {
defaults("Carm Jos")
}
val NICKNAME = mapFrom(String::class, ::mutableMapOf) {
defaultMap(mapOf("Carm Jos" to "Carm"))
parse { v -> v }
serialize { v -> v }
}
val LINKED_MAP = linkedMapFrom(String::class) {
parse { value ->
value
}
serialize { v -> v }
defaults("key", "value")
}
}