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 <clem...@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();