From afdcca2d08ea690732033ab3fd2775a5d8a7d70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Sat, 20 Apr 2024 18:03:05 +0200 Subject: [PATCH 1/5] Include/exclude project properties --- .../properties/WriteProjectProperties.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java b/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java index 2fa37e5..83cc05c 100644 --- a/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java +++ b/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java @@ -21,13 +21,17 @@ import javax.inject.Inject; +import java.util.Collections; import java.util.Enumeration; import java.util.List; +import java.util.Optional; import java.util.Properties; +import java.util.Set; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; import org.codehaus.mojo.properties.managers.PropertiesManager; /** @@ -40,6 +44,18 @@ @Mojo(name = "write-project-properties", defaultPhase = LifecyclePhase.NONE, threadSafe = true) public class WriteProjectProperties extends AbstractWritePropertiesMojo { + /** + * Property keys to exclude. + */ + @Parameter(property = "properties.excludedPropertyKeys") + private Set excludedPropertyKeys; + + /** + * Property keys to include. + */ + @Parameter(property = "properties.includedPropertyKeys") + private Set includedPropertyKeys; + /** * Default constructor * @@ -68,6 +84,14 @@ public void execute() throws MojoExecutionException { } } + Optional.ofNullable(excludedPropertyKeys) + .orElseGet(Collections::emptySet) + .forEach(projProperties::remove); + + if (includedPropertyKeys != null && !includedPropertyKeys.isEmpty()) { + projProperties.keySet().removeIf(key -> !includedPropertyKeys.contains(String.valueOf(key))); + } + writeProperties(projProperties); } } From 1f6551286d0ab3f1a5bf146c647e6a26e685b159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Tue, 23 Apr 2024 15:15:44 +0200 Subject: [PATCH 2/5] Add automated tests --- .../AbstractWritePropertiesMojo.java | 16 ++++ .../properties/WriteProjectProperties.java | 14 +++ .../properties/WritePropertiesMojoTest.java | 91 +++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java diff --git a/src/main/java/org/codehaus/mojo/properties/AbstractWritePropertiesMojo.java b/src/main/java/org/codehaus/mojo/properties/AbstractWritePropertiesMojo.java index 7385806..50fcfbb 100644 --- a/src/main/java/org/codehaus/mojo/properties/AbstractWritePropertiesMojo.java +++ b/src/main/java/org/codehaus/mojo/properties/AbstractWritePropertiesMojo.java @@ -92,4 +92,20 @@ protected void validateOutputFile() throws MojoExecutionException { public MavenProject getProject() { return project; } + + /** + * Default scope for test access. + * + * @param project The test project. + */ + void setProject(MavenProject project) { + this.project = project; + } + + /** + * Default scope for test access. + */ + void setOutputFile(File outputFile) { + this.outputFile = outputFile; + } } diff --git a/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java b/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java index 83cc05c..a7dc212 100644 --- a/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java +++ b/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java @@ -94,4 +94,18 @@ public void execute() throws MojoExecutionException { writeProperties(projProperties); } + + /** + * Default scope for test access. + */ + void setExcludedPropertyKeys(Set excludedPropertyKeys) { + this.excludedPropertyKeys = excludedPropertyKeys; + } + + /** + * Default scope for test access. + */ + void setIncludedPropertyKeys(Set includedPropertyKeys) { + this.includedPropertyKeys = includedPropertyKeys; + } } diff --git a/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java b/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java new file mode 100644 index 0000000..923a484 --- /dev/null +++ b/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java @@ -0,0 +1,91 @@ +package org.codehaus.mojo.properties; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Collections; +import java.util.Properties; +import java.util.UUID; +import org.apache.maven.project.MavenProject; +import org.codehaus.mojo.properties.managers.JdkPropertiesManager; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +public class WritePropertiesMojoTest { + private static final String NEW_LINE = System.getProperty("line.separator"); + + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + private MavenProject projectStub; + private WriteProjectProperties writeProjectProperties; + private File outputFile; + + @Before + public void setUp() throws IOException { + projectStub = new MavenProject(); + writeProjectProperties = new WriteProjectProperties(Collections.singletonList(new JdkPropertiesManager())); + writeProjectProperties.setProject(projectStub); + outputFile = temporaryFolder.newFile(); + writeProjectProperties.setOutputFile(outputFile); + } + + @Test + public void projectPropertiesAreWritten() throws Exception { + String propertyKey = UUID.randomUUID().toString(); + projectStub.getProperties().put(propertyKey, "foo"); + + writeProjectProperties.execute(); + + try (FileReader fr = new FileReader(outputFile)) { + Properties writtenProperties = new Properties(); + writtenProperties.load(fr); + + assertEquals("foo", writtenProperties.getProperty(propertyKey)); + } + } + + @Test + public void onlyIncludedPropertiesAreWritten() throws Exception { + String includedKey = UUID.randomUUID().toString(); + projectStub.getProperties().put(includedKey, "foo"); + String excludedKey = UUID.randomUUID().toString(); + projectStub.getProperties().put(excludedKey, "foo"); + + writeProjectProperties.setIncludedPropertyKeys(Collections.singleton(includedKey)); + writeProjectProperties.execute(); + + try (FileReader fr = new FileReader(outputFile)) { + Properties writtenProperties = new Properties(); + writtenProperties.load(fr); + + assertEquals("foo", writtenProperties.getProperty(includedKey)); + assertFalse(writtenProperties.contains(excludedKey)); + } + } + + @Test + public void onlyNonExcludedPropertiesAreWritten() throws Exception { + String includedKey = UUID.randomUUID().toString(); + projectStub.getProperties().put(includedKey, "foo"); + String excludedKey = UUID.randomUUID().toString(); + projectStub.getProperties().put(excludedKey, "foo"); + + writeProjectProperties.setExcludedPropertyKeys(Collections.singleton(excludedKey)); + writeProjectProperties.execute(); + + try (FileReader fr = new FileReader(outputFile)) { + Properties writtenProperties = new Properties(); + writtenProperties.load(fr); + + assertEquals("foo", writtenProperties.getProperty(includedKey)); + assertFalse(writtenProperties.contains(excludedKey)); + } + } + +} From f6a47f90f2b18e385c2a356022c1c089353f69e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Tue, 23 Apr 2024 15:18:44 +0200 Subject: [PATCH 3/5] Cleanup --- .../org/codehaus/mojo/properties/WritePropertiesMojoTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java b/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java index 923a484..77d2249 100644 --- a/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java +++ b/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java @@ -17,7 +17,6 @@ import org.junit.rules.TemporaryFolder; public class WritePropertiesMojoTest { - private static final String NEW_LINE = System.getProperty("line.separator"); @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @@ -87,5 +86,4 @@ public void onlyNonExcludedPropertiesAreWritten() throws Exception { assertFalse(writtenProperties.contains(excludedKey)); } } - } From 74393811a1e35422b85a79bf61d98c983a819ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Tue, 23 Apr 2024 16:10:47 +0200 Subject: [PATCH 4/5] Bump to 1.3.0-SNAPSHOT and add @since tags --- pom.xml | 2 +- .../org/codehaus/mojo/properties/WriteProjectProperties.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b91ca94..b63a7a7 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ properties-maven-plugin - 1.2.2-SNAPSHOT + 1.3.0-SNAPSHOT maven-plugin diff --git a/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java b/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java index a7dc212..56b394c 100644 --- a/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java +++ b/src/main/java/org/codehaus/mojo/properties/WriteProjectProperties.java @@ -46,12 +46,14 @@ public class WriteProjectProperties extends AbstractWritePropertiesMojo { /** * Property keys to exclude. + * @since 1.3.0 */ @Parameter(property = "properties.excludedPropertyKeys") private Set excludedPropertyKeys; /** * Property keys to include. + * @since 1.3.0 */ @Parameter(property = "properties.includedPropertyKeys") private Set includedPropertyKeys; From 4d0eda8316fd537e8a0acf888b8872be17b8f00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9da=20Housni=20Alaoui?= Date: Tue, 23 Apr 2024 16:11:22 +0200 Subject: [PATCH 5/5] Format code --- .../codehaus/mojo/properties/WritePropertiesMojoTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java b/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java index 77d2249..7ff8648 100644 --- a/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java +++ b/src/test/java/org/codehaus/mojo/properties/WritePropertiesMojoTest.java @@ -1,14 +1,12 @@ package org.codehaus.mojo.properties; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Collections; import java.util.Properties; import java.util.UUID; + import org.apache.maven.project.MavenProject; import org.codehaus.mojo.properties.managers.JdkPropertiesManager; import org.junit.Before; @@ -16,6 +14,9 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + public class WritePropertiesMojoTest { @Rule