You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2021/08/07 20:10:07 UTC

[maven-scm] 01/01: [SCM-947] Improve ChangeLogMojo by using ChangeLogRequest

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

michaelo pushed a commit to branch SCM-947
in repository https://gitbox.apache.org/repos/asf/maven-scm.git

commit f21ca5a8c55f05130db98400d85506a383628138
Author: Clemens Quoss <cl...@quoss.de>
AuthorDate: Sun Nov 29 13:35:10 2020 +0100

    [SCM-947] Improve ChangeLogMojo by using ChangeLogRequest
    
    This closes #109
---
 .../org/apache/maven/scm/plugin/ChangeLogMojo.java | 80 ++++++++++++++++++----
 1 file changed, 67 insertions(+), 13 deletions(-)

diff --git a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ChangeLogMojo.java b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ChangeLogMojo.java
index 8de8056..f033ae2 100644
--- a/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ChangeLogMojo.java
+++ b/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ChangeLogMojo.java
@@ -26,6 +26,7 @@ import org.apache.maven.scm.ChangeSet;
 import org.apache.maven.scm.ScmBranch;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.command.changelog.ChangeLogScmRequest;
 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
 import org.apache.maven.scm.command.changelog.ChangeLogSet;
 import org.apache.maven.scm.provider.ScmProvider;
@@ -47,6 +48,7 @@ import java.util.Date;
 public class ChangeLogMojo
     extends AbstractScmMojo
 {
+
     private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
 
     /**
@@ -110,6 +112,24 @@ public class ChangeLogMojo
     private String scmVersion;
 
     /**
+     * The branch name (TODO find out what this is for).
+     */
+    @Parameter( property = "scmBranch" )
+    private String scmBranch;
+
+    /**
+     * The number of change log items to return.
+     */
+    @Parameter( property = "limit" )
+    private Integer limit;
+
+    /**
+     * The number of days to look back for change log items to return.
+     */
+    @Parameter( property = "numDays" )
+    private Integer numDays;
+
+    /**
      * {@inheritDoc}
      */
     public void execute()
@@ -125,24 +145,58 @@ public class ChangeLogMojo
 
             ScmProvider provider = getScmManager().getProviderByRepository( repository );
 
-            ScmVersion startRev =
-                getScmVersion( StringUtils.isEmpty( startScmVersionType ) ? VERSION_TYPE_REVISION
-                               : startScmVersionType, startScmVersion );
-            ScmVersion endRev =
-                getScmVersion( StringUtils.isEmpty( endScmVersionType ) ? VERSION_TYPE_REVISION
-                               : endScmVersionType, endScmVersion );
+            ChangeLogScmRequest request = new ChangeLogScmRequest( repository, getFileSet() );
+
+            request.setDatePattern( dateFormat );
+
+            if ( StringUtils.isNotEmpty( startDate ) )
+            {
+                request.setStartDate( parseDate( localFormat, startDate ) );
+            }
+
+            if ( StringUtils.isNotEmpty( endDate ) )
+            {
+                request.setEndDate( parseDate( localFormat, endDate ) );
+            }
+
+            if ( StringUtils.isNotEmpty( startScmVersion ) )
+            {
+                ScmVersion startRev =
+                    getScmVersion( StringUtils.isEmpty( startScmVersionType ) ? VERSION_TYPE_REVISION
+                        : startScmVersionType, startScmVersion );
+                request.setStartRevision( startRev );
+            }
 
-            ChangeLogScmResult result;
-            if ( startRev != null || endRev != null )
+            if ( StringUtils.isNotEmpty( endScmVersion ) )
             {
-                result = provider.changeLog( repository, getFileSet(), startRev, endRev, dateFormat );
+                ScmVersion endRev =
+                    getScmVersion( StringUtils.isEmpty( endScmVersionType ) ? VERSION_TYPE_REVISION
+                        : endScmVersionType, endScmVersion );
+                request.setEndRevision( endRev );
             }
-            else
+
+            request.setLimit( limit );
+
+            if ( numDays != null )
             {
-                result = provider.changeLog( repository, getFileSet(), this.parseDate( localFormat, this.startDate ),
-                                             this.parseDate( localFormat, this.endDate ), 0,
-                                             (ScmBranch) getScmVersion( scmVersionType, scmVersion ), dateFormat );
+                request.setNumDays( numDays );
             }
+
+            if ( StringUtils.isNotEmpty( scmVersion ) )
+            {
+                ScmVersion rev =
+                    getScmVersion( StringUtils.isEmpty( scmVersionType ) ? VERSION_TYPE_REVISION
+                        : scmVersionType, scmVersion );
+                request.setRevision( rev );
+            }
+
+            if ( StringUtils.isNotEmpty( scmBranch ) )
+            {
+                request.setScmBranch( new ScmBranch( scmBranch ) );
+            }
+
+            ChangeLogScmResult result = provider.changeLog( request );
+
             checkResult( result );
 
             ChangeLogSet changeLogSet = result.getChangeLog();