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

kwin pushed a commit to branch feature/ci-friendly-complex-expressions
in repository https://gitbox.apache.org/repos/asf/maven-release.git

commit 0f31bab37da08f71408738a4e7d9251152c12807
Author: mkolesnikov <mikhail_kolesni...@outlook.com>
AuthorDate: Tue Jun 4 14:01:04 2024 +0300

    MRELEASE-1109 JDomModel should know about current MavenProject
---
 .../shared/release/transform/jdom2/JDomModel.java  | 18 ++++++++++++++----
 .../release/transform/jdom2/JDomModelETL.java      |  2 +-
 .../shared/release/util/CiFriendlyVersion.java     | 22 ++++++++++++----------
 .../release/transform/jdom2/JDomModelTest.java     | 12 +++++++-----
 4 files changed, 34 insertions(+), 20 deletions(-)

diff --git 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java
 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java
index 5eb5ca9d..c60d9936 100644
--- 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java
+++ 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModel.java
@@ -31,6 +31,7 @@ import org.apache.maven.model.Parent;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Scm;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.release.util.CiFriendlyVersion;
 import org.jdom2.Document;
 import org.jdom2.Element;
@@ -47,13 +48,18 @@ public class JDomModel extends Model {
 
     private final JDomModelBase modelBase;
 
+    /**
+     * The currently running MavenProject
+     */
+    private final MavenProject mavenProject;
+
     /**
      * <p>Constructor for JDomModel.</p>
      *
      * @param document a {@link org.jdom2.Document} object
      */
-    public JDomModel(Document document) {
-        this(document.getRootElement());
+    public JDomModel(Document document, MavenProject mavenProject) {
+        this(document.getRootElement(), mavenProject);
     }
 
     /**
@@ -61,8 +67,9 @@ public class JDomModel extends Model {
      *
      * @param project a {@link org.jdom2.Element} object
      */
-    public JDomModel(Element project) {
+    public JDomModel(Element project, MavenProject mavenProject) {
         this.project = project;
+        this.mavenProject = mavenProject;
         this.modelBase = new JDomModelBase(project);
     }
 
@@ -195,7 +202,10 @@ public class JDomModel extends Model {
             if 
(CiFriendlyVersion.isCiFriendlyVersion(versionElement.getTextNormalize())) {
                 // try to rewrite property if CI friendly expression is used
                 CiFriendlyVersion.rewriteVersionAndProperties(
-                        version, versionElement.getTextNormalize(), 
getProperties());
+                        version,
+                        versionElement.getTextNormalize(),
+                        (JDomProperties) getProperties(),
+                        mavenProject.getProperties());
             } else {
                 JDomUtils.rewriteValue(versionElement, version);
             }
diff --git 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
index 86bf8e27..e8d74096 100644
--- 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
+++ 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/transform/jdom2/JDomModelETL.java
@@ -159,7 +159,7 @@ public class JDomModelETL implements ModelETL {
 
     @Override
     public Model getModel() {
-        return new JDomModel(document);
+        return new JDomModel(document, project);
     }
 
     private void normaliseLineEndings(Document document) {
diff --git 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
index 8b336965..406b015a 100644
--- 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
+++ 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/CiFriendlyVersion.java
@@ -26,6 +26,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.shared.release.transform.jdom2.JDomProperties;
 
 public class CiFriendlyVersion {
 
@@ -70,26 +71,27 @@ public class CiFriendlyVersion {
         return CI_FRIENDLY_PROPERTIES.contains(property);
     }
 
-    public static void rewriteVersionAndProperties(String version, String 
versionElement, Properties properties) {
+    public static void rewriteVersionAndProperties(
+            String version, String versionElement, JDomProperties 
jDomProperties, Properties mavenProperties) {
         // try to rewrite property if CI friendly expression is used
         String ciFriendlyPropertyName = 
extractPropertyFromExpression(versionElement);
-        if (properties != null) {
-            String sha1 = properties.getProperty(SHA1, 
System.getProperty(SHA1, ""));
+        if (jDomProperties != null) {
+            String sha1 = jDomProperties.getProperty(SHA1, 
mavenProperties.getProperty(SHA1, ""));
             // assume that everybody follows the example and properties are 
simply chained
             //  and the changelist can only be '-SNAPSHOT'
             if (ArtifactUtils.isSnapshot(version)) {
-                if (properties.containsKey(CHANGELIST)) {
-                    properties.setProperty(
+                if (jDomProperties.containsKey(CHANGELIST)) {
+                    jDomProperties.setProperty(
                             ciFriendlyPropertyName, version.replace(sha1, 
"").replace(SNAPSHOT, ""));
-                    properties.setProperty(CHANGELIST, SNAPSHOT);
+                    jDomProperties.setProperty(CHANGELIST, SNAPSHOT);
                 } else {
-                    properties.setProperty(ciFriendlyPropertyName, 
version.replace(sha1, ""));
+                    jDomProperties.setProperty(ciFriendlyPropertyName, 
version.replace(sha1, ""));
                 }
             } else {
-                properties.setProperty(
+                jDomProperties.setProperty(
                         ciFriendlyPropertyName, version.replace(sha1, 
"").replace(SNAPSHOT, ""));
-                if (properties.containsKey(CHANGELIST)) {
-                    properties.setProperty(CHANGELIST, "");
+                if (jDomProperties.containsKey(CHANGELIST)) {
+                    jDomProperties.setProperty(CHANGELIST, "");
                 }
             }
         }
diff --git 
a/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
 
b/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
index abe03d6c..5849121c 100644
--- 
a/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
+++ 
b/maven-release-manager/src/test/java/org/apache/maven/shared/release/transform/jdom2/JDomModelTest.java
@@ -22,6 +22,7 @@ import java.io.StringReader;
 
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Scm;
+import org.apache.maven.project.MavenProject;
 import org.jdom2.Document;
 import org.jdom2.Element;
 import org.jdom2.input.SAXBuilder;
@@ -33,19 +34,20 @@ import static org.junit.Assert.assertNull;
 
 public class JDomModelTest {
     private SAXBuilder builder = new SAXBuilder();
+    private MavenProject mavenProject = new MavenProject();
 
     @Test
     public void testGetScm() throws Exception {
         String content = "<project></project>";
         Document document = builder.build(new StringReader(content));
-        assertNull(new JDomModel(document).getScm());
+        assertNull(new JDomModel(document, mavenProject).getScm());
     }
 
     @Test
     public void testSetScm() throws Exception {
         String content = "<project></project>";
         Document document = builder.build(new StringReader(content));
-        Model model = new JDomModel(document);
+        Model model = new JDomModel(document, mavenProject);
         assertNull(model.getScm());
 
         model.setScm(new Scm());
@@ -59,7 +61,7 @@ public class JDomModelTest {
     public void testSetVersion() throws Exception {
         String content = "<project></project>";
         Element projectElm = builder.build(new 
StringReader(content)).getRootElement();
-        Model model = new JDomModel(projectElm);
+        Model model = new JDomModel(projectElm, mavenProject);
         assertNull(model.getVersion());
 
         model.setVersion("VERSION");
@@ -71,7 +73,7 @@ public class JDomModelTest {
         // inherit from parent via CI friendly
         content = 
"<project><parent><version>${revision}${changelist}</version></parent></project>";
         projectElm = builder.build(new StringReader(content)).getRootElement();
-        model = new JDomModel(projectElm);
+        model = new JDomModel(projectElm, mavenProject);
         assertNull(model.getVersion());
         model.setVersion("PARENT_VERSION");
         assertNull(getVersion(projectElm));
@@ -79,7 +81,7 @@ public class JDomModelTest {
         // this business logic might need to moved.
         content = 
"<project><parent><version>PARENT_VERSION</version></parent></project>";
         projectElm = builder.build(new StringReader(content)).getRootElement();
-        model = new JDomModel(projectElm);
+        model = new JDomModel(projectElm, mavenProject);
         assertNull(model.getVersion());
 
         model.setVersion("PARENT_VERSION");

Reply via email to