[MCHANGES-285] SAXException parsing JIRA XML from JIRA 5.1
Submitted by: Ton Swieb
Reviewed by: Dennis Lundberg
Add smarts to make the handling of a single version faster when using JQL.
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1379888 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java b/src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
index 5dfc0ed..962da47 100644
--- a/src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
+++ b/src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
@@ -34,6 +34,7 @@
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.issues.Issue;
+import org.apache.maven.plugin.issues.IssueUtils;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.Proxy;
@@ -103,6 +104,10 @@
private Settings settings;
/** Use JQL, JIRA query language, instead of URL parameter based queries */
private boolean useJql;
+ /** Filter the JIRA query based on the current version */
+ private boolean onlyCurrentVersion;
+ /** The versionPrefix to apply to the POM version */
+ private String versionPrefix;
/** The pattern used to parse dates from the JIRA xml file. */
protected String jiraDatePattern;
@@ -267,7 +272,27 @@
*/
protected String getFixFor()
{
- return null;
+ if ( onlyCurrentVersion && useJql )
+ {
+ // Let JIRA do the filtering of the current version instead of the JIRA mojo.
+ // This way JIRA returns less issues and we do not run into the "nbEntriesMax" limit that easily.
+
+ String version = ( versionPrefix == null ? "" : versionPrefix ) + project.getVersion();
+
+ // Remove "-SNAPSHOT" from the end of the version, if it's there
+ if ( version != null && version.endsWith( IssueUtils.SNAPSHOT_SUFFIX ) )
+ {
+ return version.substring( 0, version.length() - IssueUtils.SNAPSHOT_SUFFIX.length() );
+ }
+ else
+ {
+ return version;
+ }
+ }
+ else
+ {
+ return null;
+ }
}
/**
@@ -769,4 +794,24 @@
{
this.useJql = useJql;
}
+
+ public boolean isOnlyCurrentVersion()
+ {
+ return onlyCurrentVersion;
+ }
+
+ public void setOnlyCurrentVersion(boolean onlyCurrentVersion)
+ {
+ this.onlyCurrentVersion = onlyCurrentVersion;
+ }
+
+ public String getVersionPrefix()
+ {
+ return versionPrefix;
+ }
+
+ public void setVersionPrefix(String versionPrefix)
+ {
+ this.versionPrefix = versionPrefix;
+ }
}
diff --git a/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java b/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
index 2cedc4e..6b82c49 100644
--- a/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
+++ b/src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
@@ -435,6 +435,10 @@
issueDownloader.setSettings( settings );
issueDownloader.setUseJql( useJql );
+
+ issueDownloader.setOnlyCurrentVersion( onlyCurrentVersion );
+
+ issueDownloader.setVersionPrefix( versionPrefix );
}
public void setMockDownloader( AbstractJiraDownloader mockDownloader )