You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by ca...@apache.org on 2005/08/12 20:57:53 UTC

svn commit: r232355 - in /maven/maven-1/plugins/trunk/jira: plugin.jelly plugin.properties src/main/org/apache/maven/jira/JiraDownloader.java src/plugin-resources/jira.jsl xdocs/changes.xml xdocs/faq.fml xdocs/goals.xml xdocs/properties.xml

Author: carlos
Date: Fri Aug 12 11:57:49 2005
New Revision: 232355

URL: http://svn.apache.org/viewcvs?rev=232355&view=rev
Log:
Authentication support for access a private Jira instalation. MPJIRA-8
Enable retrieving component-specific issues. MPJIRA-11
MPJIRA-13

Modified:
    maven/maven-1/plugins/trunk/jira/plugin.jelly
    maven/maven-1/plugins/trunk/jira/plugin.properties
    maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java
    maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl
    maven/maven-1/plugins/trunk/jira/xdocs/changes.xml
    maven/maven-1/plugins/trunk/jira/xdocs/faq.fml
    maven/maven-1/plugins/trunk/jira/xdocs/goals.xml
    maven/maven-1/plugins/trunk/jira/xdocs/properties.xml

Modified: maven/maven-1/plugins/trunk/jira/plugin.jelly
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/plugin.jelly?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/plugin.jelly (original)
+++ maven/maven-1/plugins/trunk/jira/plugin.jelly Fri Aug 12 11:57:49 2005
@@ -54,8 +54,18 @@
       project="${pom}"
       output="${maven.build.dir}/jira/jira-results.xml"
       nbEntries="${maven.jira.nbentries}"
+      statusIds="${maven.jira.status}"
+      filter="${maven.jira.filter}"
+      resolutionIds="${maven.jira.resolution}"
+      priorityIds="${maven.jira.priority}"
+      webUser="${maven.jira.webUser}"
+      webPassword="${maven.jira.webPassword}"
+      jiraUser="${maven.jira.jiraUser}"
+      jiraPassword="${maven.jira.jiraPassword}"
+      component="${maven.jira.component}"
       />
     
+    <mkdir dir="${maven.gen.docs}"/>
     <doc:jslFile
       input="${maven.build.dir}/jira/jira-results.xml"
       output="${maven.gen.docs}/jira.xml"
@@ -71,4 +81,4 @@
     </copy>
   </goal> 
 
-</project>
\ No newline at end of file
+</project>

Modified: maven/maven-1/plugins/trunk/jira/plugin.properties
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/plugin.properties?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/plugin.properties (original)
+++ maven/maven-1/plugins/trunk/jira/plugin.properties Fri Aug 12 11:57:49 2005
@@ -17,4 +17,13 @@
 # -------------------------------------------------------------------
 # P L U G I N  P R O P E R I E S
 # -------------------------------------------------------------------
+maven.jira.webUser=
+maven.jira.webPassword=
+maven.jira.jiraUser=
+maven.jira.jiraPassword=
 maven.jira.nbentries=1000
+maven.jira.filter=
+maven.jira.status=Open,In Progress,Reopened
+maven.jira.resolution=Unresolved
+maven.jira.priority=
+maven.jira.component=

Modified: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java (original)
+++ maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java Fri Aug 12 11:57:49 2005
@@ -17,184 +17,471 @@
  * ====================================================================
  */
 
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.HostConfiguration;
 import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.HttpState;
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.StatusLine;
 import org.apache.commons.httpclient.UsernamePasswordCredentials;
 import org.apache.commons.httpclient.methods.GetMethod;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.apache.maven.jelly.MavenJellyContext;
 import org.apache.maven.project.Project;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-
-public class JiraDownloader
-{
+/**
+ * Gets relevant issues in RSS from a given JIRA installation.
+ * 
+ * Based on version 1.1.2 and patch by Dr. Spock (MPJIRA-8)
+ * 
+ * @author mfranken@xebia.com
+ */
+public final class JiraDownloader {
     /**
-     * Log for debug output
+     * Log for debug output.
      */
-    private static Log LOG = LogFactory.getLog(JiraDownloader.class);
-    
-    /** Output file for xml document */
+    private static Log log = LogFactory.getLog(JiraDownloader.class);
+
+    /** Output file for xml document. */
     private File output;
-    
-    /** Number of entries max */
+
+    /** The maximum number of entries to show. */
     private int nbEntriesMax;
-    
+
+    /** The filter to apply to query to JIRA. */
+    private String filter;
+
+    /** Ids of status to show, as comma separated string. */
+    private String statusIds;
+
+    /** Ids of resolution to show, as comma separated string. */
+    private String resolutionIds;
+
+    /** Ids of priority to show, as comma separated string. */
+    private String priorityIds;
+
+    /** The component to show. */
+    private String component;
+
+    /** The username to log into JIRA. */
+    private String jiraUser;
+
+    /** The password to log into JIRA. */
+    private String jiraPassword;
+
+    /** The username to log into webserver. */
+    private String webUser;
+
+    /** The password to log into webserver. */
+    private String webPassword;
+
+    /** The maven project. */
     private Project project;
-    
-    /**
-     * Set the output file for the log.
-     * @param output the output file
-     */
-    public void setOutput(File output)
-    {
-        this.output = output;
-    }
-    
-    /**
-     * @return Project
-     */
-    public Object getProject()
-    {
-        return project;
+
+    /** Mapping containing all JIRA status values. */
+    private static Map statusMap = new HashMap();
+
+    /** Mapping containing all JIRA resolution values. */
+    private static Map resolutionMap = new HashMap();
+
+    /** Mapping containing all JIRA priority values. */
+    private static Map priorityMap = new HashMap();
+
+    static {
+        statusMap.put("Open", "1");
+        statusMap.put("In Progress", "3");
+        statusMap.put("Reopened", "4");
+        statusMap.put("Resolved", "5");
+        statusMap.put("Closed", "6");
+
+        resolutionMap.put("Unresolved", "-1");
+        resolutionMap.put("Fixed", "1");
+        resolutionMap.put("Won't Fix", "2");
+        resolutionMap.put("Duplicate", "3");
+        resolutionMap.put("Incomplete", "4");
+        resolutionMap.put("Cannot Reproduce", "5");
+
+        priorityMap.put("Blocker", "1");
+        priorityMap.put("Critical", "2");
+        priorityMap.put("Major", "3");
+        priorityMap.put("Minor", "4");
+        priorityMap.put("Trivial", "5");
     }
 
     /**
-     * Sets the project.
-     * @param project The project to set
+     * Creates a filter given the maven.jira parameters and some defaults.
+     * 
+     * @return request parameters to be added to URL used for downloading the JIRA issues
      */
-    public void setProject(Object project)
-    {
-        //System.out.println("Setting project: " + project);
-        this.project = (Project) project;
+    private String createFilter() {
+        if (this.filter != null && this.filter.length() > 0) {
+            if (this.filter.charAt(0) == '&') {
+                return this.filter.substring(1);
+            }
+            return this.filter;
+        }
+
+        StringBuffer localFilter = new StringBuffer();
+        // get the Status Ids
+        if (statusIds != null) {
+            String[] stats = statusIds.split(",");
+            for (int i = 0; i < stats.length; i++) {
+                String statusParam = (String) statusMap.get(stats[i]);
+                if (statusParam != null) {
+                    localFilter.append("&statusIds=" + statusParam);
+                }
+            }
+        }
+        // get the Priority Ids
+        if (priorityIds != null) {
+            String[] prios = priorityIds.split(",");
+            for (int i = 0; i < prios.length; i++) {
+                String priorityParam = (String) priorityMap.get(prios[i]);
+                if (priorityParam != null) {
+                    localFilter.append("&priorityIds=" + priorityParam);
+                }
+            }
+        }
+        if (resolutionIds != null) {
+            // get the Resolution Ids
+            String[] resos = resolutionIds.split(",");
+            for (int i = 0; i < resos.length; i++) {
+                String resoParam = (String) resolutionMap.get(resos[i]);
+                if (resoParam != null) {
+                    localFilter.append("&resolutionIds=" + resoParam);
+                }
+            }
+        }
+        // add all components
+        if (component != null) {
+            String[] components = component.split(",");
+            for (int i = 0; i < components.length; i++) {
+                if (components[i].length() > 0) {
+                    localFilter.append("&component=" + components[i]);
+                }
+            }
+        }
+
+        // add default sorting (by priority and then creation date)
+        String sort = "&sorter/field=created&sorter/order=DESC" + "&sorter/field=priority&sorter/order=DESC";
+        return localFilter + sort;
     }
-    
+
     /**
-     * Sets the number of entries.
-     * @param nbEntries The number of entries
+     * Execute the query on the JIRA server.
+     * 
+     * @throws Exception
+     *             on error
      */
-    public void setNbEntries(int nbEntries)
-    {
-        nbEntriesMax = nbEntries;
-    }
-    
-    public void doExecute() throws Exception
-    {
-        MavenJellyContext ctx;
-        String proxyHost;
-        String proxyPort;
-        String proxyUser;
-        String proxyPass;
-        String link;
-        
-        if (getProject() == null)
-        {
+    public void doExecute() throws Exception {
+        if (project == null) {
             throw new Exception("No project set.");
-        }
-        else
-        {
-            if (((Project) getProject()).getIssueTrackingUrl() == null)
-            {
+        } else {
+            if (project.getIssueTrackingUrl() == null) {
                 throw new Exception("No issue tracking url set.");
             }
-            else
-            {
-                String url = ((Project) getProject()).getIssueTrackingUrl();
-                int pos = url.indexOf("?");
-                String id = url.substring(pos+4);
-                url = url.substring(0, url.lastIndexOf("/"));
-                link = url + "/secure/IssueNavigator.jspa?view=rss&pid=" + id + "&sorter/field=issuekey&sorter/order=DESC&sorter/field=status&sorter/order=DESC&tempMax=" + String.valueOf(nbEntriesMax) + "&reset=true&decorator=none";
-            }
-        }
-        
-        ctx = ((Project) getProject()).getContext();
-        
-        proxyHost = ctx.getProxyHost();
-        proxyPort = ctx.getProxyPort();
-        proxyUser = ctx.getProxyUserName();
-        proxyPass = ctx.getProxyPassword();
-        
-        try
-        {
+        }
+
+        try {
             HttpClient cl = new HttpClient();
+            HttpState state = new HttpState();
             HostConfiguration hc = new HostConfiguration();
+            cl.setHostConfiguration(hc);
+            cl.setState(state);
 
-            if (proxyHost != null)
-            {
-                hc.setProxy(proxyHost, Integer.parseInt(proxyPort));
+            determineProxy(cl);
+            // get the Jira URL and project id
+            String url = project.getIssueTrackingUrl();
+            // chop off the parameter part
+            int pos = url.indexOf("?");
+            // and get the id while we're at it
+            String id = "";
+            if (pos >= 0) {
+                // url
+                id = url.substring(url.lastIndexOf("=") + 1);
             }
-            HttpState state = new HttpState();
+            // TODO: fail the build in the else block, issueTrackingUrl has to include id
 
-            if (proxyUser != null && proxyPass != null)
-            {
-                state.setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUser, proxyPass));
+            String jiraUrl = url.substring(0, url.lastIndexOf("/"));
+            if (jiraUrl.endsWith("secure")) {
+                jiraUrl = jiraUrl.substring(0, jiraUrl.lastIndexOf("/"));
             }
+            log.info("Jira lives at: " + jiraUrl);
+            doAuthentication(cl, jiraUrl);
+
+            // create the URL for getting the proper iussues from JIRA
+            String fullURL = jiraUrl + "/secure/IssueNavigator.jspa?view=rss&pid=" + id;
+            fullURL += createFilter();
+            fullURL += "&tempMax=" + nbEntriesMax + "&reset=true&decorator=none";
 
-            cl.setHostConfiguration(hc);
-            cl.setState(state);
-            
             // execute the GET
-            GetMethod gm = download(cl, link);
-            StatusLine sl = gm.getStatusLine();
-            
-            if (sl == null) {
-                LOG.info("Unknown error validating link : " + link);
-                return;
-            }
-            
-            if (gm.getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY)
-            {
-                Header locationHeader = gm.getResponseHeader("Location");
-                if (locationHeader == null)  {
-                    LOG.info("Site sent redirect, but did not set Location header");
-                } else  {
-                    String newLink = locationHeader.getValue();
-                    LOG.debug("Following 1 redirect to " + newLink);
-                    gm = download(cl, newLink);
-                }
-            }
+            download(cl, fullURL);
+        } catch (Exception e) {
+            log.error("Error accessing " + project.getIssueTrackingUrl(), e);
+        }
+    }
 
-            if (gm.getStatusCode() != HttpStatus.SC_OK)
-            {
-                String msg = "Received: [" + gm.getStatusCode() + "] for " + link;
-                LOG.info(msg);
-                System.out.println(msg);
+    /**
+     * Authenticate against webserver and into JIRA if we have to.
+     * 
+     * @param client
+     *            the HttpClient
+     * @param jiraUrl
+     *            the JIRA installation
+     */
+    private void doAuthentication(HttpClient client, final String jiraUrl) {
+        // check and prepare for basic authentication
+        if (webUser != null && webUser.length() > 0) {
+            client.getState().setAuthenticationPreemptive(true);
+            Credentials defaultcreds = new UsernamePasswordCredentials(webUser, webPassword);
+            log.info("Using username: " + webUser + " for Basic Authentication against the webserver at " + jiraUrl);
+            client.getState().setCredentials(null, null, defaultcreds);
+        }
+
+        // log into JIRA if we have to
+        String loginUrl = null;
+        if (jiraUser != null && jiraUser.length() > 0 && jiraPassword != null) {
+            StringBuffer loginLink = new StringBuffer(jiraUrl);
+            loginLink.append("/login.jsp?os_destination=/secure/");
+            loginLink.append("&os_username=").append(jiraUser);
+            log.info("Login URL: " + loginLink + "&os_password=*******");
+            loginLink.append("&os_password=").append(jiraPassword);
+            loginUrl = loginLink.toString();
+        }
+
+        // execute the login
+        if (loginUrl != null) {
+            GetMethod loginGet = new GetMethod(loginUrl);
+            try {
+                client.executeMethod(loginGet);
+                log.info("Succesfully logged in into JIRA.");
+            } catch (Exception e) {
+                if (log.isDebugEnabled()) {
+                    log.error("Error trying to login into JIRA:", e);
+                } else {
+                    log.error("Error trying to login into JIRA. Cause is: " + e.getLocalizedMessage());
+                }
+                // continue any way, probably will fail later if authentication was necesaaray afterall
             }
+        }
+    }
 
+    /**
+     * Setup proxy access if we have to.
+     * 
+     * @param client
+     *            the HttpClient
+     */
+    private void determineProxy(HttpClient client) {
+        // see whether there is any proxy defined in maven
+        if (project == null) {
+            log.error("No project set. No proxy info available.");
+            return;
         }
-        catch (Exception e)
-        {
-            LOG.warn("Error accessing " + link);
-            e.printStackTrace();
+        MavenJellyContext ctx = project.getContext();
+        if (ctx == null) {
+            log.error("Maven project has no context. No proxy info available.");
+            return;
+        }
+        String proxyHost = ctx.getProxyHost();
+
+        if (proxyHost != null) {
+            String proxyPort = ctx.getProxyPort();
+            client.getHostConfiguration().setProxy(proxyHost, Integer.parseInt(proxyPort));
+            log.info("Using proxy: " + proxyHost + " at port " + proxyPort);
+            String proxyUser = ctx.getProxyUserName();
+            if (proxyUser != null) {
+                log.info("Using proxy user: " + proxyUser);
+                String proxyPass = ctx.getProxyPassword();
+                client.getState().setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUser, proxyPass));
+            }
         }
     }
-    
-    private GetMethod download(HttpClient cl, String link)
-    {   
-        GetMethod gm = new GetMethod(link);
-        try
-        {
-            System.out.println("Downloading " + link);
+
+    /**
+     * Downloads the given link using the configured HttpClient, possibly following redirects.
+     * 
+     * @param cl
+     *            the HttpClient
+     * @param link
+     *            the JiraUrl
+     * @return
+     */
+    private void download(final HttpClient cl, final String link) {
+        try {
+            GetMethod gm = new GetMethod(link);
+            log.info("Downloading " + link);
             gm.setFollowRedirects(true);
             cl.executeMethod(gm);
             final String strGetResponseBody = gm.getResponseBodyAsString();
+            // write the reponse to file
             PrintWriter pw = new PrintWriter(new FileWriter(output));
             pw.print(strGetResponseBody);
             pw.close();
+            StatusLine sl = gm.getStatusLine();
+            if (sl == null) {
+                log.info("Unknown error validating link : " + link);
+                return;
+            }
+
+            // if we get a redirect, do so
+            if (gm.getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY) {
+                Header locationHeader = gm.getResponseHeader("Location");
+                if (locationHeader == null) {
+                    log.info("Site sent redirect, but did not set Location header");
+                } else {
+                    String newLink = locationHeader.getValue();
+                    log.debug("Following redirect to " + newLink);
+                    download(cl, newLink);
+                }
+            }
+
+            if (gm.getStatusCode() != HttpStatus.SC_OK) {
+                log.warn("Received: [" + gm.getStatusCode() + "]");
+            }
+        } catch (HttpException e) {
+            if (log.isDebugEnabled()) {
+                log.error("Error downloading issues from JIRA:", e);
+            } else {
+                log.error("Error downloading issues from JIRA. Cause is: " + e.getLocalizedMessage());
+            }
+        } catch (IOException e) {
+            if (log.isDebugEnabled()) {
+                log.error("Error downloading issues from JIRA:", e);
+            } else {
+                log.error("Error downloading issues from JIRA. Cause is: " + e.getLocalizedMessage());
+            }
         }
-        catch (Exception e)
-        {
-            System.out.println("Error downloading " + link);
-        }
-        return gm;
     }
+
+    /**
+     * Set the output file for the log.
+     * 
+     * @param thisOutput
+     *            the output file
+     */
+    public void setOutput(final File thisOutput) {
+        this.output = thisOutput;
+    }
+
+    /**
+     * Sets the project.
+     * 
+     * @param thisProject
+     *            The project to set
+     */
+    public void setProject(final Object thisProject) {
+        this.project = (Project) thisProject;
+    }
+
+    /**
+     * Sets the maximum number of Issues to show.
+     * 
+     * @param nbEntries
+     *            The maximum number of Issues
+     */
+    public void setNbEntries(final int nbEntries) {
+        nbEntriesMax = nbEntries;
+    }
+
+    /**
+     * Sets the statusIds.
+     * 
+     * @param thisStatusIds
+     *            The id(s) of the status to show, as comma separated string
+     */
+    public void setStatusIds(final String thisStatusIds) {
+        statusIds = thisStatusIds;
+    }
+
+    /**
+     * Sets the priorityIds.
+     * 
+     * @param thisPriorityIds
+     *            The id(s) of the priority to show, as comma separated string
+     */
+    public void setPriorityIds(final String thisPriorityIds) {
+        priorityIds = thisPriorityIds;
+    }
+
+    /**
+     * Sets the resolutionIds.
+     * 
+     * @param thisResolutionIds
+     *            The id(s) of the resolution to show, as comma separated string
+     */
+    public void setResolutionIds(final String thisResolutionIds) {
+        resolutionIds = thisResolutionIds;
+    }
+
+    /**
+     * Sets the password for authentication against the webserver.
+     * 
+     * @param thisWebPassword
+     *            The password of the webserver
+     */
+    public void setWebPassword(final String thisWebPassword) {
+        this.webPassword = thisWebPassword;
+    }
+
+    /**
+     * Sets the username for authentication against the webserver.
+     * 
+     * @param thisWebUser
+     *            The username of the webserver
+     */
+    public void setWebUser(final String thisWebUser) {
+        this.webUser = thisWebUser;
+    }
+
+    /**
+     * Sets the password to log into a secured JIRA.
+     * 
+     * @param thisJiraPassword
+     *            The password for JIRA
+     */
+    public void setJiraPassword(final String thisJiraPassword) {
+        this.jiraPassword = thisJiraPassword;
+    }
+
+    /**
+     * Sets the username to log into a secured JIRA.
+     * 
+     * @param thisJiraUser
+     *            The username for JIRA
+     */
+    public void setJiraUser(final String thisJiraUser) {
+        this.jiraUser = thisJiraUser;
+    }
+
+    /**
+     * Sets the filter to apply to query to JIRA.
+     * 
+     * @param thisFilter
+     *            The filter to query JIRA
+     */
+    public void setFilter(final String thisFilter) {
+        this.filter = thisFilter;
+    }
+
+    /**
+     * Sets the component(s) to apply to query JIRA.
+     * 
+     * @param theseComponents
+     *            The id(s) of components to show, as comma separated string
+     */
+    public void setComponent(final String theseComponents) {
+        this.component = theseComponents;
+    }
+
 }

Modified: maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl (original)
+++ maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl Fri Aug 12 11:57:49 2005
@@ -42,22 +42,30 @@
                 <tr>
                   <th style="width:150px">Key</th>
                   <th>Summary</th>
-                  <th style="width:150px">Status</th>
-                  <th style="width:150px">Resolution</th>
-                  <th style="width:150px">By</th>
+                  <th style="width:150px">Created</th>
+                  <th style="width:50px">Priority</th>
+                  <th style="width:50px">Status</th>
+                  <th style="width:100px">Resolution</th>
+                  <th style="width:100px">Assigned to</th>
+                  <th style="width:100px">Reported by</th>
                 </tr>
               </thead>
               <tbody>
                 <x:forEach var="entry" select="item">
                   <j:set var="key"><x:expr select="$entry/key"/></j:set>
                   <j:set var="link"><x:expr select="$entry/link"/></j:set>
+                  <j:set var="createdate"><x:expr select="$entry/created"/></j:set>
+                  <j:set var="priority"><x:expr select="$entry/priority"/></j:set>
                   <j:set var="status"><x:expr select="$entry/status"/></j:set>
                   <j:set var="summary"><x:expr select="$entry/summary"/></j:set>
                   <j:set var="assignee"><x:expr select="$entry/assignee"/></j:set>
+                  <j:set var="reporter"><x:expr select="$entry/reporter"/></j:set>
                   <j:set var="resolution"><x:expr select="$entry/resolution"/></j:set>
                   <tr>
                     <td><a href="${link}">${key}</a></td>
                     <td>${summary}</td>
+                    <td>${createdate}</td>
+                    <td>${priority}</td>
                     <td>
                       <j:choose>
                         <j:when test="${status.equalsIgnoreCase('Closed')}">
@@ -82,6 +90,7 @@
                     </td>
                     <td>${resolution}</td>
                     <td>${assignee}</td>
+                    <td>${reporter}</td>
                   </tr>
                 </x:forEach>
               </tbody>

Modified: maven/maven-1/plugins/trunk/jira/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/changes.xml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/changes.xml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/changes.xml Fri Aug 12 11:57:49 2005
@@ -24,6 +24,10 @@
     <author email="brett@apache.org">Brett Porter</author>
   </properties>
   <body>
+    <release version="1.2-SNAPSHOT" date="in SVN">
+      <action dev="carlos" type="fix" issue="MPJIRA-11" due-to="Michael Franken">Enable retrieving component-specific issues.</action>
+      <action dev="carlos" type="fix" issue="MPJIRA-8" due-to="Michael Franken">Authentication support for access a private Jira instalation.</action>
+    </release>
     <release version="1.1.2" date="2004-10-23">
       <action dev="evenisse" type="fix" issue="MPJIRA-3">Fix jira downloading url for some jira instance like Apache.</action>
     </release>

Modified: maven/maven-1/plugins/trunk/jira/xdocs/faq.fml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/faq.fml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/faq.fml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/faq.fml Fri Aug 12 11:57:49 2005
@@ -35,12 +35,15 @@
         <source>&lt;issueTrackingUrl&gt;http://jira.codehaus.org/secure/BrowseProject.jspa?id=10450&lt;/issueTrackingUrl&gt;</source>
         
         <p>
-          2. make sure that your project allows group Anyone to view jira issues 
-          (you may or may not need to also set your jira installation type to
-          public - this is in General Configuration under administration).
+          2. Determine the credentials to log into the webserver, if any. The plugin supports basic authentication (and SSL). 
+          Add the credentials to the project.properties, as maven.jira.webUser and maven.jira.webPassword
         </p>
         <p>
-          3. log out of jira (if you are using Remember me feature) and test your setup
+          3. Determine the JIRA account to login to the JIRA installation. 
+          Add the credentials to the project.properties, as maven.jira.jiraUser and maven.jira.jiraPassword
+        </p>
+        <p>
+          4. log out of jira (if you are using Remember me feature) and test your setup
           by going to url like this one:
         </p>
         <source>[JIRA URL]/secure/IssueNavigator.jspa?view=rss&amp;pid=[JIRA PROJECT ID]&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;sorter/field=status&amp;sorter/order=DESC&amp;tempMax=1000&amp;reset=true</source>
@@ -48,13 +51,27 @@
         <source>http://jira.codehaus.org/secure/IssueNavigator.jspa?view=rss&amp;pid=10450&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;sorter/field=status&amp;sorter/order=DESC&amp;tempMax=1000&amp;reset=true</source>
         
         <p>
-          4. add this to your project.xml in reports section
+          5. add this to your project.xml in reports section
         </p>
         <source>&lt;report&gt;maven-jira-plugin&lt;/report&gt;</source>
         <p>
-          5. run site:generate and you should have jira.html in your ${basedir}/target/docs directory
+          6. run maven site (or just maven maven-jira-plugin:report xdoc) and you should have jira.html in your ${basedir}/target/docs directory
         </p>
       </answer>
+     </faq>
+     <faq id="untrusted cert">
+      <question>
+        My JIRA installation runs SSL with a self signed/home brewn certificate. 
+        I get an error message that the certificate is untrusted. How do I proceed?
+      </question>
+      <answer>
+      <p>
+        Add the server certificate to your JAVA. You can get the certificate by exporting it from your browser. 
+        With IE you click on the certificate info, go to the details TAB and export as .DER by clicking on 'Copy to File...'.
+        Using SUN's keytool you can import the certificate in your 'truststore'. It is located in $JAVA_HOME/jre/lib/security/cacerts
+        Import it using <source>keytool -import -file &lt;servercert&gt;.cer -keystore cacerts</source>
+      </p>
+     </answer>
     </faq>
   </part>
-</faqs>
\ No newline at end of file
+</faqs>

Modified: maven/maven-1/plugins/trunk/jira/xdocs/goals.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/goals.xml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/goals.xml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/goals.xml Fri Aug 12 11:57:49 2005
@@ -25,18 +25,18 @@
     <goals>
       <goal>
         <name>maven-jira-plugin:deregister</name>
-        <description>
+        <description>The standard goal name for report plugins to register themselves with the site plugin.
         </description>
       </goal>
       <goal>
         <name>maven-jira-plugin:register</name>
-        <description>
+        <description>The standard goal name for report plugins to deregister themselves from the site.
         </description>
       </goal>
       <goal>
         <name>maven-jira-plugin:report</name>
-        <description>Generate report with all entries defined in Jira.</description>
+        <description>Generate report for entries defined in Jira.</description>
       </goal>
     </goals>
   </body>
-</document>
\ No newline at end of file
+</document>

Modified: maven/maven-1/plugins/trunk/jira/xdocs/properties.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/properties.xml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/properties.xml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/properties.xml Fri Aug 12 11:57:49 2005
@@ -28,18 +28,143 @@
           <th>Property</th>
           <th>Optional?</th>
           <th>Description</th>
+          <th>Default value</th>
         </tr>
         <tr>
           <td>maven.jira.nbentries</td>
           <td>Yes</td>
           <td>
             <p>
-              Defines the number of entries we want to obtain into the report.
-              Default value is <code>1000</code>.
+              Defines the maximum number of issues we want to obtain into the report.
+             </p>
+          </td>
+          <td>
+            <p>
+				<code>1000</code>.
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>maven.jira.component</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Sets the component(s) of the project you want to limit your report to.
+               Multiple components can be separated by commas (such as <code>10011,10012</code>).
+            </p>
+          </td>
+          <td>
+            <p>
+				empty, meaning all components. 
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>maven.jira.status</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Sets the status(es) of the project you want to limit your report to.
+              Valid statuses are: <code>Open, In Progress, Reopened, Resolved and Closed</code>.
+              Multiple values can be separated by commas.
+             </p>
+          </td>
+          <td>
+            <p>
+              <code>Open, In Progress, Reopened</code> 
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>maven.jira.resolution</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Sets the resolution(s) of the project you want to limit your report to.
+              Valid statuses are: <code>Unresolved, Fixed, Won't Fix, Duplicate, Incomplete, Cannot Reproduce</code>.
+              Multiple values can be separated by commas.
+            </p>
+          </td>
+          <td>
+            <p>
+              <code>Unresolved</code> 
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>maven.jira.priority</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Sets the priority(s) of the project you want to limit your report to.
+              Valid statuses are: <code>Blocker, Critical, Major, Minor, Trivial</code>.
+              Multiple values can be separated by commas.
+            </p>
+          </td>
+          <td>
+            <p>
+               empty, meaning any priority. 
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <td>maven.jira.filter</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Defines the filter parameters to restrict the result issues from Jira.
+              The filter parameters property must use the same format of url parameters from the Jira search url.
+              Example: <code>status=1&amp;resolution=-1&amp;priority=1&amp;priority=3&amp;priority=4&amp;sorter/field=issuekey&amp;sorter/order=DESC</code>
+            </p>
+            <p>
+              <b>Note</b>: This string should not contain the parameters <code>pid</code>, <code>tempMax</code>
+              and <code>view</code>.<br/>
+              <b>Note</b>: This filter overrides the status, resolution, priority and component properties.
+            </p>
+          </td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>maven.jira.jiraUser</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Defines the jira username for authentication into a private Jira instalation.<br/>
+            </p>
+          </td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>maven.jira.jiraPassword</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Defines the jira password for authentication into a private Jira instalation.
+            </p>
+          </td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>maven.jira.webUser</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Defines the http user for basic authentication into the Jira webserver.<br/>
+            </p>
+          </td>
+          <td></td>
+        </tr>
+        <tr>
+          <td>maven.jira.webPassword</td>
+          <td>Yes</td>
+          <td>
+            <p>
+              Defines the http password for basic authentication into the Jira webserver.
             </p>
           </td>
+          <td></td>
         </tr>
       </table>
     </section>
   </body>
-</document>
\ No newline at end of file
+</document>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org