This is an automated email from the ASF dual-hosted git repository.

enorman pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 0fa0106  SLING-10060 Substitutions for the "replacePropertyVariables" 
values (#66) should prefer the system property value
0fa0106 is described below

commit 0fa01064594c92801bd871882172227728ecda49
Author: Eric Norman <[email protected]>
AuthorDate: Mon Jan 18 11:13:57 2021 -0800

    SLING-10060 Substitutions for the "replacePropertyVariables" values (#66) 
should prefer the system property value
---
 .../apache/sling/feature/maven/Substitution.java   | 11 ++++++++--
 .../sling/feature/maven/SubstitutionTest.java      | 25 ++++++++++++++++++++++
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/maven/Substitution.java 
b/src/main/java/org/apache/sling/feature/maven/Substitution.java
index ae6eec2..41678bf 100644
--- a/src/main/java/org/apache/sling/feature/maven/Substitution.java
+++ b/src/main/java/org/apache/sling/feature/maven/Substitution.java
@@ -67,8 +67,15 @@ public class Substitution {
             if ( additionalProperties != null ) {
                 for(String p : additionalProperties) {
                     p = p.trim();
-                    if ( project.getProperties().containsKey(p)) {
-                        props.setProperty(p, 
project.getProperties().getProperty(p));
+                    // check for a system property that overwrites the project 
property
+                    String value = System.getProperty(p);
+                    if (value == null && 
project.getProperties().containsKey(p)) {
+                        // no system property, so try the project property
+                        value = project.getProperties().getProperty(p);
+                    }
+                    if (value != null) {
+                        // found a value
+                        props.setProperty(p, value);
                     }
                 }
             }
diff --git a/src/test/java/org/apache/sling/feature/maven/SubstitutionTest.java 
b/src/test/java/org/apache/sling/feature/maven/SubstitutionTest.java
index 372ed97..f345b94 100644
--- a/src/test/java/org/apache/sling/feature/maven/SubstitutionTest.java
+++ b/src/test/java/org/apache/sling/feature/maven/SubstitutionTest.java
@@ -52,6 +52,31 @@ public class SubstitutionTest {
         }
     }
 
+    /**
+     * SLING-10060 Verify that the additional properties prefer the system 
property 
+     * value (if available) over the project property value
+     */
+    @Test
+    public void testReplaceAdditionalPropertiesMavenVarsWithSystemProperties() 
{
+        Properties storedProps = new Properties();
+        storedProps.putAll(System.getProperties());
+
+        try {
+            MavenProject proj = new MavenProject();
+            Properties p = proj.getProperties();
+            p.put("test", "foo");
+            p.put("test2", "foo2");
+
+            // set system property to override the project property
+            System.setProperty("test", "bar");
+
+            assertEquals("hellobargoodbyefoo2", 
Substitution.replaceMavenVars(proj, false, false, new String[] {"test", 
"test2"}, "hello${test}goodbye${test2}"));
+        } finally {
+            // Restore the system properties
+            System.setProperties(storedProps);
+        }
+    }
+
     @Test
     public void testOSGiVersion() {
        assertEquals("1.2.3", Substitution.getOSGiVersion("1.2.3"));

Reply via email to