You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ch...@apache.org on 2018/12/30 00:58:33 UTC

[maven-release] branch master updated: MRELEASE-909: (Re)Added workItem support.

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

chrisgwarp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-release.git


The following commit(s) were added to refs/heads/master by this push:
     new cc724a1  MRELEASE-909: (Re)Added workItem support.
cc724a1 is described below

commit cc724a14178a5172f6dbbe157de14e4a3daaee4c
Author: Chris Graham <ch...@apache.org>
AuthorDate: Sun Dec 30 11:55:51 2018 +1100

    MRELEASE-909: (Re)Added workItem support.
---
 .../maven/shared/release/config/ReleaseDescriptor.java  | 12 ++++++++++++
 .../config/PropertiesReleaseDescriptorStore.java        |  5 +++++
 .../shared/release/config/ReleaseDescriptorBuilder.java |  6 ++++++
 .../maven/shared/release/config/ReleaseUtils.java       |  4 ++++
 .../shared/release/phase/AbstractScmCommitPhase.java    |  2 ++
 .../maven/shared/release/phase/ScmBranchPhase.java      |  2 ++
 .../apache/maven/shared/release/phase/ScmTagPhase.java  |  2 ++
 .../src/main/mdo/release-descriptor.mdo                 | 17 +++++++++++++----
 .../maven/plugins/release/AbstractScmReleaseMojo.java   | 12 +++++++++++-
 9 files changed, 57 insertions(+), 5 deletions(-)

diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
index 12d02e6..ac51404 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
@@ -136,6 +136,18 @@ public interface ReleaseDescriptor
     /**
      * Get default version to use for new working copy.
      * 
+     * Some SCMs may require a Work Item or a Task to allow the
+     * changes to be pushed or delivered.
+     * This field allows you to specify that Work Item
+     * or Task. It is optional, and only relevant if pushChanges is true.
+     *  
+     * @return String
+     */
+    String getWorkItem();
+
+    /**
+     * Get default version to use for new working copy.
+     * 
      * @return String
      */
     String getDefaultDevelopmentVersion();
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
index edd0e90..9841e70 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
@@ -235,6 +235,11 @@ public class PropertiesReleaseDescriptorStore
 
         properties.setProperty( "pushChanges", Boolean.toString( config.isPushChanges() ) );
 
+        if ( config.getWorkItem() != null )
+        {
+            properties.setProperty( "workItem", config.getWorkItem() );
+        }
+
         // others boolean properties are not written to the properties file because the value from the caller is always
         // used
 
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
index 2bef814..68a6a8e 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
@@ -206,6 +206,12 @@ public class ReleaseDescriptorBuilder
         return this;
     }
 
+    public ReleaseDescriptorBuilder setWorkItem( String workItem )
+    {
+        releaseDescriptor.setWorkItem( workItem );
+        return this;
+    }
+
     public ReleaseDescriptorBuilder setReleaseStrategyId( String releaseStrategyId )
     {
         releaseDescriptor.setReleaseStrategyId( releaseStrategyId );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
index a355624..3b4f14b 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
@@ -150,6 +150,10 @@ public class ReleaseUtils
             String pushChanges = properties.getProperty( "pushChanges" );
             builder.setPushChanges( Boolean.valueOf( pushChanges ) );
         }
+        if ( properties.containsKey( "workItem" ) )
+        {
+            builder.setWorkItem( properties.getProperty( "workItem" ) );
+        }
 
         loadResolvedDependencies( properties, builder );
 
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
index b36d692..3269da2 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
@@ -118,6 +118,8 @@ public abstract class AbstractScmCommitPhase
 
             repository.getProviderRepository().setPushChanges( releaseDescriptor.isPushChanges() );
 
+            repository.getProviderRepository().setWorkItem( releaseDescriptor.getWorkItem() );
+
             provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
         }
         catch ( ScmRepositoryException e )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
index 218a529..d1d85b6 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
@@ -84,6 +84,8 @@ public class ScmBranchPhase
 
             repository.getProviderRepository().setPushChanges( releaseDescriptor.isPushChanges() );
 
+            repository.getProviderRepository().setWorkItem( releaseDescriptor.getWorkItem() );
+
             provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
 
         }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
index 8a62f55..5f52d39 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
@@ -97,6 +97,8 @@ public class ScmTagPhase
 
             repository.getProviderRepository().setPushChanges( releaseDescriptor.isPushChanges() );
 
+            repository.getProviderRepository().setWorkItem( releaseDescriptor.getWorkItem() );
+
             provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
         }
         catch ( ScmRepositoryException e )
diff --git a/maven-release-manager/src/main/mdo/release-descriptor.mdo b/maven-release-manager/src/main/mdo/release-descriptor.mdo
index 579842c..fe41833 100644
--- a/maven-release-manager/src/main/mdo/release-descriptor.mdo
+++ b/maven-release-manager/src/main/mdo/release-descriptor.mdo
@@ -516,6 +516,17 @@
           </description>
         </field>
 
+        <field>
+          <name>workItem</name>
+          <version>3.0.0+</version>
+          <type>String</type>
+          <description>
+            Some SCMs may require a Work Item or a Task to allow the changes to be pushed or delivered.
+            This field allows you to specify that Work Item or Task. It is optional, and only relevant
+            if pushChanges is true.
+          </description>
+        </field>
+
         <!-- Announcement Information
 
         Announcement related info, this can be a second part of the process.
@@ -750,6 +761,7 @@
              !java.util.Objects.equals( checkoutDirectory, that.getCheckoutDirectory() ) ||
              !java.util.Objects.equals( performGoals, that.getPerformGoals() ) ||
              !java.util.Objects.equals( defaultReleaseVersion, that.getDefaultReleaseVersion() ) ||
+             !java.util.Objects.equals( workItem, that.getWorkItem() ) ||
              !java.util.Objects.equals( scmReleasedPomRevision, that.getScmReleasedPomRevision() )
            )
         {
@@ -861,10 +873,6 @@
         {
             return false;
         }
-        if ( !java.util.Objects.equals( scmTagNameFormat, that.getScmTagNameFormat() ) )
-        {
-            return false;
-        }
         if ( !java.util.Objects.deepEquals( projectVersions, that.getProjectVersions() ) )
         {
             return false;
@@ -989,6 +997,7 @@
         result = 29 * result + java.util.Objects.hashCode( performGoals );
         result = 29 * result + java.util.Objects.hashCode( defaultReleaseVersion );
         result = 29 * result + java.util.Objects.hashCode( scmReleasedPomRevision );
+        result = 29 * result + java.util.Objects.hashCode( workItem );
 
         return result;
     }
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java
index d75064e..6804603 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java
@@ -98,7 +98,16 @@ public abstract class AbstractScmReleaseMojo
     private boolean pushChanges = true;
 
     /**
-     * Add a new or overwrite the default implementation per provider.
+     * A workItem for SCMs like RTC, TFS etc, that may require additional
+     * information to perform a pushChange operation.
+     *
+     * @since 3.0.0
+     */
+    @Parameter( property = "workItem" )
+    private String workItem;
+
+    /**
+     * Add a new or overwrite the default implementation per provider. 
      * The key is the scm prefix and the value is the role hint of the
      * {@link org.apache.maven.scm.provider.ScmProvider}.
      *
@@ -142,6 +151,7 @@ public abstract class AbstractScmReleaseMojo
         descriptor.setScmCommentPrefix( scmCommentPrefix );
 
         descriptor.setPushChanges( pushChanges );
+        descriptor.setWorkItem( workItem );
         
         if ( project.getScm() != null )
         {