Skip to content

freelon/propkeytoe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PropKeyToE - property-keys-to-enum-maven-plugin

This is a simple maven plugin that generates enums for every property file you run it on. Its intent is to have compile-time checks on the keys of property files, similar to how Android Studio handles resource identifiers. You can, for instance, use it to access translations in resource bundles.

Usage

Add this to your pom.xml

<plugin>
    <groupId>de.torks</groupId>
    <artifactId>property-keys-to-enum-maven-plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <targetPackage>com.example.application.localization</targetPackage>
                <!-- the file names in your resources folder, separated by comma, without extension -->
                <resourceFiles>
                    <resourceFile>
                        <file>mail</file>
                        <enumValueContent>KEY</enumValueContent>
                    </resourceFile>
                    <resourceFile>
                        <file>mail</file>
                        <enumValueContent>VALUE</enumValueContent>
                    </resourceFile>
                </resourceFiles>
            </configuration>
        </execution>
    </executions>
</plugin>

In your …​/src/main/resources/ folder add mail.properties:

topic=Urgent Mail
content.header=<h1>Behead me</h1>
content.body= ....
content.footer-without-images=Fee(d/t) me

This will give you a generated file com.example.application.localization.Mail which you can use to name your translation keys with a compiler-checked enum.

import com.example.application.localization.Mail;

EMail sendMail(Locale locale) {
    return new EMail()
            .topic(Translations.get(locale, Mail.TOPIC))
            .contentHeader(Translations.get(locale, Mail.CONTENT_HEADER))
            .receiver( ... );
}

Configuration

The <enumValueContent> tag can be either KEY (default) or VALUE. The getValue() method of the generated enum will then return either the property key or value.

About

PropKeyToE - property-keys-to-enum-maven-plugin

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages