An example how secured-properties can be used with Commons Configuration.
The following steps are required to initialize Commons Configuration:
In this example, the SystemProperties is only a working example to provide the decrypted password. Better would be to use a custom in-memory implementations of the Configuration.
The example property-file “TestProperties-Valid.properties”:
myTitle = My Test
mySecretPassword={buMkr+yZH9RclafjETtlSQ==}
The java code example:
// initialization
File secretKey = new File("src/test/data/secretFileExample.key");
File propertiesFile = new File("src/test/data/TestProperties-Valid.properties");
// initialization - get decrypted value
SecuredPropertiesConfig config = new SecuredPropertiesConfig().withSecretFile(secretKey).initDefault();
// initialization - auto encrypt values in the property files:
SecuredProperties.encryptNonEncryptedValues(
config, propertiesFile, "mySecretPassword");
// initialization - get decrypted value
String myPassword = SecuredProperties.getSecretValue(
config, propertiesFile, "mySecretPassword");
// initialization - store plane-text-PW into System-Properties
System.setProperty("mySecretPassword", myPassword);
// initialization - create CompositeConfiguration which first reads SystemProperties and then the PropertiesFile.
SystemConfiguration systemConfiguration = new SystemConfiguration();
PropertiesConfiguration propertiesConfiguration =
new FileBasedConfigurationBuilder<>(PropertiesConfiguration.class)
.configure(new Parameters().properties().setFile(propertiesFile))
.getConfiguration();
CompositeConfiguration commonConfig = new CompositeConfiguration();
commonConfig.addConfiguration(systemConfiguration);
commonConfig.addConfiguration(propertiesConfiguration);
// somewhere in your application (e.g. with dependency injection of commonConfig):
assertThat(commonConfig.getString("myTitle"), is("My Test")); // some value from PropertyFile
assertThat(commonConfig.getString("mySecretPassword"), is("test")); // decrypted Password from SystemProperties.
The complete code is in Settings4jExampleTest.java