Skip to content

Commit

Permalink
Add "override" option to preserve existing properties from being over…
Browse files Browse the repository at this point in the history
…ridden

This fixes #21
  • Loading branch information
borisbrodski authored and slawekjaranowski committed Jun 21, 2023
1 parent b9b7140 commit 3a1eee2
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 9 deletions.
35 changes: 26 additions & 9 deletions src/main/java/org/codehaus/mojo/properties/ReadPropertiesMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,19 @@ public void setKeyPrefix( String keyPrefix )
@Parameter( defaultValue = "false" )
private boolean useDefaultValues;

/**
* Determine, whether existing properties should be overridden or not. Default: <code>true</true>.
*
* @since 1.2.0
*/
@Parameter( defaultValue = "true" )
private boolean override = true;

public void setOverride( boolean override )
{
this.override = override;
}

/**
* Used for resolving property placeholders.
*/
Expand Down Expand Up @@ -202,19 +215,23 @@ private void loadProperties( Resource resource )

try ( InputStream stream = resource.getInputStream() )
{
String effectivePrefix = "";
if ( keyPrefix != null )
{
Properties properties = new Properties();
properties.load( stream );
Properties projectProperties = project.getProperties();
for ( String key : properties.stringPropertyNames() )
{
projectProperties.put( keyPrefix + key, properties.get( key ) );
}
effectivePrefix = keyPrefix;
}
else

Properties properties = new Properties();
properties.load( stream );
Properties projectProperties = project.getProperties();

for( String key: properties.stringPropertyNames() )
{
project.getProperties().load( stream );
String propertyName = effectivePrefix + key;
if ( override || !projectProperties.containsKey( propertyName ) )
{
projectProperties.put( propertyName, properties.get( key ) );
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,61 @@ public void testDefaultValueForUnresolvedPropertyWithEnabledFlag() throws MojoFa
assertEquals(" ", value13);
}

@Test
public void readPropertiesOverridingExisting() throws Exception {

File testPropertyFile = getPropertyFileForTesting();
// load properties directly for comparison later
Properties testProperties = new Properties();
testProperties.load(new FileReader(testPropertyFile));

// Existing property value should be overridden
projectStub.getProperties().put("test.property2", "old-value");

// do the work
readPropertiesMojo.setFiles(new File[]{testPropertyFile});
readPropertiesMojo.execute();

// check results
Properties projectProperties = projectStub.getProperties();
assertNotNull(projectProperties);
// it should not be empty
assertNotEquals(0, projectProperties.size());

// we are not adding prefix, so properties should be same as in file
assertEquals(testProperties.size(), projectProperties.size());
assertEquals(testProperties, projectProperties);

}

@Test
public void readPropertiesPreserveExisting() throws Exception {

File testPropertyFile = getPropertyFileForTesting();
// load properties directly for comparison later
Properties testProperties = new Properties();
testProperties.load(new FileReader(testPropertyFile));

// Existing property should keep the value
testProperties.put("test.property2", "old-value");
projectStub.getProperties().put("test.property2", "old-value");

// do the work
readPropertiesMojo.setFiles(new File[]{testPropertyFile});
readPropertiesMojo.setOverride(false);
readPropertiesMojo.execute();

// check results
Properties projectProperties = projectStub.getProperties();
assertNotNull(projectProperties);
// it should not be empty
assertNotEquals(0, projectProperties.size());

// we are not adding prefix, so properties should be same as in file
assertEquals(testProperties.size(), projectProperties.size());
assertEquals(testProperties, projectProperties);
}

/**
* with the flag disabled (default behavior) nothing gets replaced
* ':' is treated as a regular character and part of the property name
Expand Down

0 comments on commit 3a1eee2

Please sign in to comment.