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");