You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/11/21 15:40:55 UTC

svn commit: r1204521 - in /maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker: ./ tracking/ tracking/jira/

Author: olamy
Date: Mon Nov 21 14:40:54 2011
New Revision: 1204521

URL: http://svn.apache.org/viewvc?rev=1204521&view=rev
Log:
add a mojo to update an issue with an a patch file

Added:
    maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/UpdatePatchMojo.java
      - copied, changed from r1204515, maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java
Modified:
    maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java
    maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java
    maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/PatchTracker.java
    maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraPatchTracker.java
    maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraSession.java

Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java?rev=1204521&r1=1204520&r2=1204521&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/AbstractPatchMojo.java Mon Nov 21 14:40:54 2011
@@ -181,14 +181,19 @@ public abstract class AbstractPatchMojo
         }
     }
 
-    protected PatchTrackerRequest buidPatchTrackerRequest()
+    protected PatchTrackerRequest buidPatchTrackerRequest( boolean creation )
         throws MojoExecutionException
     {
         try
         {
-            return new PatchTrackerRequest().setUrl( getPatchTrackerUrl() ).setUserName(
-                getPatchTrackerUsername() ).setPassword( getPatchTrackerPassword() ).setSummary(
-                getPatchTrackerSummary() ).setDescription( getPatchTrackerDescription() ).setPatchType( patchType );
+            PatchTrackerRequest patchTrackerRequest =
+                new PatchTrackerRequest().setUrl( getPatchTrackerUrl() ).setUserName(
+                    getPatchTrackerUsername() ).setPassword( getPatchTrackerPassword() ).setPatchType( patchType );
+
+            return creation ? patchTrackerRequest.setSummary( getPatchTrackerSummary() ).setDescription(
+                getPatchTrackerDescription() ) : patchTrackerRequest;
+
+
         }
         catch ( PrompterException e )
         {

Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java?rev=1204521&r1=1204520&r2=1204521&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java Mon Nov 21 14:40:54 2011
@@ -42,7 +42,7 @@ public class CreatePatchMojo
 
         String patchContent = getPatchContent();
 
-        PatchTrackerRequest patchTrackerRequest = buidPatchTrackerRequest();
+        PatchTrackerRequest patchTrackerRequest = buidPatchTrackerRequest( true );
 
         patchTrackerRequest.setPatchContent( patchContent );
 

Copied: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/UpdatePatchMojo.java (from r1204515, maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java)
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/UpdatePatchMojo.java?p2=maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/UpdatePatchMojo.java&p1=maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java&r1=1204515&r2=1204521&rev=1204521&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/CreatePatchMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/UpdatePatchMojo.java Mon Nov 21 14:40:54 2011
@@ -16,43 +16,51 @@ package org.apache.maven.plugins.patchtr
  * limitations under the License.
  */
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.patchtracker.tracking.PatchTracker;
 import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerException;
 import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerRequest;
 import org.apache.maven.plugins.patchtracker.tracking.PatchTrackerResult;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.components.interactivity.PrompterException;
 
 /**
  * Goal which create a diff/patch file from the current project and create an issue in the project
  * with attaching the created patch file
  *
- * @goal create
+ * @goal update
  * @aggregator
  */
-public class CreatePatchMojo
+public class UpdatePatchMojo
     extends AbstractPatchMojo
 {
 
+    /**
+     * @parameter expression="${patch.patchId}" default-value=""
+     */
+    protected String patchId;
+
 
     public void execute()
         throws MojoExecutionException
     {
-        // TODO do a status before and complains if some files in to be added status ?
 
-        String patchContent = getPatchContent();
+        try
+        {
+            // TODO do a status before and complains if some files in to be added status ?
 
-        PatchTrackerRequest patchTrackerRequest = buidPatchTrackerRequest();
+            String patchContent = getPatchContent();
 
-        patchTrackerRequest.setPatchContent( patchContent );
+            PatchTrackerRequest patchTrackerRequest = buidPatchTrackerRequest( false );
 
-        getLog().debug( patchTrackerRequest.toString() );
+            patchTrackerRequest.setPatchId( getPatchId() ).setPatchContent( patchContent ).setDescription(
+                getPatchTrackerDescription() );
 
-        try
-        {
+            getLog().debug( patchTrackerRequest.toString() );
             PatchTracker patchTracker = getPatchTracker();
-            PatchTrackerResult result = patchTracker.createPatch( patchTrackerRequest );
-            getLog().info( "issue created with id:" + result.getPatchId() + ", url:" + result.getPatchUrl() );
+            PatchTrackerResult result = patchTracker.updatePatch( patchTrackerRequest );
+            getLog().info( "issue updated with id:" + result.getPatchId() + ", url:" + result.getPatchUrl() );
         }
         catch ( ComponentLookupException e )
         {
@@ -62,9 +70,29 @@ public class CreatePatchMojo
         {
             throw new MojoExecutionException( e.getMessage(), e );
         }
+        catch ( PrompterException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
 
 
     }
 
+    protected String getPatchId()
+        throws PrompterException, MojoExecutionException
+    {
+        String value = null;
+
+        // cli must win !
+        if ( StringUtils.isNotEmpty( patchId ) )
+        {
+            value = patchId;
+        }
+
+        return getValue( value, "patch id to update ?", null, true,
+                         "you must configure a patch id when updating an issue or at least use interactive mode", value,
+                         false );
+    }
+
 
 }

Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/PatchTracker.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/PatchTracker.java?rev=1204521&r1=1204520&r2=1204521&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/PatchTracker.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/PatchTracker.java Mon Nov 21 14:40:54 2011
@@ -27,7 +27,22 @@ package org.apache.maven.plugins.patchtr
 public interface PatchTracker
 {
 
+    /**
+     * create a new entry in the patch tracker
+     * @param patchTrackerRequest
+     * @return
+     * @throws PatchTrackerException
+     */
     PatchTrackerResult createPatch( PatchTrackerRequest patchTrackerRequest )
         throws PatchTrackerException;
 
+    /**
+     * update a patch entry in the patch tracker
+     * <b>patchTrackerRequest.patchId is mandatory!</b>
+     * @param patchTrackerRequest
+     * @return
+     * @throws PatchTrackerException
+     */
+    PatchTrackerResult updatePatch( PatchTrackerRequest patchTrackerRequest )
+        throws PatchTrackerException;
 }

Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraPatchTracker.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraPatchTracker.java?rev=1204521&r1=1204520&r2=1204521&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraPatchTracker.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraPatchTracker.java Mon Nov 21 14:40:54 2011
@@ -47,32 +47,60 @@ public class JiraPatchTracker
         JiraSession jiraSession = createSession( patchTrackerRequest );
         try
         {
-            RemoteIssue remoteIssue = null;
-            // is it an update
-            if ( patchTrackerRequest.getPatchId() != null )
-            {
+            RemoteIssue remoteIssue = new RemoteIssue();
+            remoteIssue.setProject( extractProjectKey( patchTrackerRequest.getUrl() ) );
+            remoteIssue.setSummary( patchTrackerRequest.getSummary() );
+            remoteIssue.setDescription( patchTrackerRequest.getDescription() );
+            remoteIssue.setType( patchTrackerRequest.getPatchType() );
 
-            }
-            else
+            remoteIssue = jiraSession.createIssue( remoteIssue );
+
+            // TODO handle of boolean result
+            jiraSession.addBase64EncodedAttachmentsToIssue( remoteIssue.getKey(), remoteIssue.getKey(),
+                                                            patchTrackerRequest.getPatchContent() );
+
+            // add a comment
+
+            return new PatchTrackerResult().setPatchId( remoteIssue.getKey() ).setPatchUrl(
+                extractBaseUrl( patchTrackerRequest.getUrl() ) + "/browse/" + remoteIssue.getKey() );
+        }
+        catch ( RemoteAuthenticationException e )
+        {
+            throw new PatchTrackerException( e.getMessage(), e );
+        }
+        catch ( RemoteException e )
+        {
+            throw new PatchTrackerException( e.getMessage(), e );
+        }
+        catch ( java.rmi.RemoteException e )
+        {
+            throw new PatchTrackerException( e.getMessage(), e );
+        }
+    }
+
+    public PatchTrackerResult updatePatch( PatchTrackerRequest patchTrackerRequest )
+        throws PatchTrackerException
+    {
+
+        JiraSession jiraSession = createSession( patchTrackerRequest );
+        try
+        {
+            RemoteIssue remoteIssue = jiraSession.findRemoteIssue( patchTrackerRequest.getPatchId() );
+
+            if ( patchTrackerRequest.getPatchId() == null )
             {
-                remoteIssue = new RemoteIssue();
-                remoteIssue.setProject( extractProjectKey( patchTrackerRequest.getUrl() ) );
-                remoteIssue.setSummary( patchTrackerRequest.getSummary() );
-                remoteIssue.setDescription( patchTrackerRequest.getDescription() );
-                remoteIssue.setType( patchTrackerRequest.getPatchType() );
-
-                remoteIssue = jiraSession.createIssue( remoteIssue );
-
-                // TODO handle of boolean result
-                jiraSession.addBase64EncodedAttachmentsToIssue( remoteIssue.getKey(), remoteIssue.getKey(),
-                                                                patchTrackerRequest.getPatchContent() );
+                throw new PatchTrackerException( "patch id is mandatory when updating the patch tracker" );
             }
 
-            PatchTrackerResult patchTrackerResult = new PatchTrackerResult();
-            patchTrackerResult.setPatchId( remoteIssue.getKey() );
-            patchTrackerResult.setPatchUrl(
+            // TODO handle of boolean result
+            jiraSession.addBase64EncodedAttachmentsToIssue( remoteIssue.getKey(), remoteIssue.getKey(),
+                                                            patchTrackerRequest.getPatchContent() );
+
+            jiraSession.addCommentToIssue( remoteIssue.getKey(), patchTrackerRequest.getDescription() );
+
+            return new PatchTrackerResult().setPatchId( remoteIssue.getKey() ).setPatchUrl(
                 extractBaseUrl( patchTrackerRequest.getUrl() ) + "/browse/" + remoteIssue.getKey() );
-            return patchTrackerResult;
+
         }
         catch ( RemoteAuthenticationException e )
         {
@@ -88,7 +116,6 @@ public class JiraPatchTracker
         }
     }
 
-
     public JiraSession createSession( PatchTrackerRequest patchTrackerRequest )
         throws PatchTrackerException
     {

Modified: maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraSession.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraSession.java?rev=1204521&r1=1204520&r2=1204521&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraSession.java (original)
+++ maven/sandbox/trunk/plugins/maven-patch-tracker-plugin/src/main/java/org/apache/maven/plugins/patchtracker/tracking/jira/JiraSession.java Mon Nov 21 14:40:54 2011
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.patchtr
 import org.apache.axis.encoding.Base64;
 import org.apache.maven.plugins.patchtracker.tracking.jira.soap.JiraSoapService;
 import org.apache.maven.plugins.patchtracker.tracking.jira.soap.RemoteAuthenticationException;
+import org.apache.maven.plugins.patchtracker.tracking.jira.soap.RemoteComment;
 import org.apache.maven.plugins.patchtracker.tracking.jira.soap.RemoteException;
 import org.apache.maven.plugins.patchtracker.tracking.jira.soap.RemoteIssue;
 import org.apache.maven.plugins.patchtracker.tracking.jira.soap.RemotePermissionException;
@@ -62,4 +63,20 @@ public class JiraSession
         return service.addBase64EncodedAttachmentsToIssue( token, issueKey, new String[]{ fileName }, new String[]{
             Base64.encode( attachmentContent.getBytes() ) } );
     }
+
+    public RemoteIssue findRemoteIssue( String issueKey )
+        throws RemotePermissionException, RemoteValidationException, RemoteAuthenticationException, RemoteException,
+        java.rmi.RemoteException
+    {
+        return service.getIssue( token, issueKey );
+    }
+
+    public void addCommentToIssue( String issueKey, String comment )
+        throws RemotePermissionException, RemoteValidationException, RemoteAuthenticationException, RemoteException,
+        java.rmi.RemoteException
+    {
+        RemoteComment remoteComment = new RemoteComment();
+        remoteComment.setBody( comment );
+        service.addComment( token, issueKey, remoteComment );
+    }
 }