EnumGen

Generate Java Enums based on resources

License

License

GroupId

GroupId

io.github.jkrauze.enumgen
ArtifactId

ArtifactId

enumgen
Last Version

Last Version

0.1.0
Release Date

Release Date

Type

Type

pom
Description

Description

EnumGen
Generate Java Enums based on resources
Project URL

Project URL

https://github.com/jkrauze/bra
Source Code Management

Source Code Management

https://github.com/jkrauze/enumgen

Download enumgen

Filename Size
enumgen-0.1.0.pom 4 KB
Browse

How to add to project

<!-- https://jarcasting.com/artifacts/io.github.jkrauze.enumgen/enumgen/ -->
<dependency>
    <groupId>io.github.jkrauze.enumgen</groupId>
    <artifactId>enumgen</artifactId>
    <version>0.1.0</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/io.github.jkrauze.enumgen/enumgen/
implementation 'io.github.jkrauze.enumgen:enumgen:0.1.0'
// https://jarcasting.com/artifacts/io.github.jkrauze.enumgen/enumgen/
implementation ("io.github.jkrauze.enumgen:enumgen:0.1.0")
'io.github.jkrauze.enumgen:enumgen:pom:0.1.0'
<dependency org="io.github.jkrauze.enumgen" name="enumgen" rev="0.1.0">
  <artifact name="enumgen" type="pom" />
</dependency>
@Grapes(
@Grab(group='io.github.jkrauze.enumgen', module='enumgen', version='0.1.0')
)
libraryDependencies += "io.github.jkrauze.enumgen" % "enumgen" % "0.1.0"
[io.github.jkrauze.enumgen/enumgen "0.1.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

  • core
  • plugin

EnumGen

Generate Java Enums based on resources.

Replace your manually built properties key enum or string constants with compile-time generated enum.

Example

Convert .properties file (TODO: .json and .yaml support)

application.properties

sample.key=Sample value
other.sample.key=Other sample value!

to Java enum

ApplicationKeys

public enum ApplicationKeys {

    OTHER_SAMPLE_KEY("other.sample.key", "Other sample value!"),
    SAMPLE_KEY("sample.key", "Sample value");

    private String key;
    private String defaultValue;

    ApplicationKeys(String key, String defaultValue) {
        this.key = key;
        this.defaultValue = defaultValue;
    }

    public String getKey() {
        return key;
    }

    public String getDefaultValue() {
        return defaultValue;
    }

}

on the compile time.

You'll be able to use the enum to ensure your string keys.

Instead of

System.getProperty("sample.key")
// or
System.getProperty("sample.key", "Sample value")

you could do

System.getProperty(ApplicationKeys.SAMPLE_KEY.getKey());
// or
System.getProperty(ApplicationKeys.SAMPLE_KEY.getKey(), ApplicationKeys.SAMPLE_KEY.getDefaultValue());

what would help you find out if you're using wrong key at the compile time!

How to run?

Add the build plugin to your Maven project.

    <build>
        <plugins>
            <plugin>
                <groupId>io.github.jkrauze.enumgen</groupId>
                <artifactId>enumgen-maven-plugin</artifactId>
                <version>0.1.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate-enum</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Configuration

TODO

            <plugin>
                ...
                <configuration>
                    <basePackageName>${project.groupId}.${project.artifactId}.resources</basePackageName>
                    <baseDir>src/main/resources</baseDir>
                    <recursive>true</recursive>
                    <outputBaseDir>target/generated-sources/enumgen</outputBaseDir>
                    <allowedExtensions>
                        <extension>properties</extension>
                        <!--TODO <extension>json</extension>-->
                        <!--TODO <extension>yaml</extension>-->
                    </allowedExtensions>
                    <enumClassNamePrefix></enumClassNamePrefix>
                    <enumClassNameSuffix>Keys</enumClassNameSuffix>
                </configuration>
            </plugin>

License

Licensed under the MIT License.

Versions

Version
0.1.0