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 );
+ }
}