Author: ltheussl Date: Tue Jan 10 11:12:59 2006 New Revision: 367739 URL: http://svn.apache.org/viewcvs?rev=367739&view=rev Log: Add package.html, code formatting.
Added: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html (with props) Modified: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java 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=367739&r1=367738&r2=367739&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 Tue Jan 10 11:12:59 2006 @@ -21,8 +21,10 @@ import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; + import java.text.NumberFormat; import java.text.ParsePosition; + import java.util.HashMap; import java.util.Map; @@ -43,16 +45,48 @@ /** * Gets relevant issues in RSS from a given JIRA installation. - * + * * Based on version 1.1.2 and patch by Dr. Spock (MPJIRA-8) - * + * * @author [EMAIL PROTECTED] */ -public final class JiraDownloader { +public final class JiraDownloader +{ /** * Log for debug output. */ - private static Log log = LogFactory.getLog(JiraDownloader.class); + private static Log log = LogFactory.getLog( JiraDownloader.class ); + + /** 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" ); + } /** Output file for xml document. */ private File output; @@ -93,256 +127,317 @@ /** Include a Jira roadmap. */ private boolean roadmap; - - /** 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"); - } - /** * 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 */ - private String createFilter() { - if (this.filter != null && this.filter.length() > 0) { - if (this.filter.charAt(0) == '&') { - return this.filter.substring(1); + 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); + 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 ( 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) { + + 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); + 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]); + 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"; + String sort = + "&sorter/field=created&sorter/order=DESC" + + "&sorter/field=priority&sorter/order=DESC"; + return localFilter + sort; } /** * Execute the query on the JIRA server. - * + * * @throws Exception * on error */ - public void doExecute() throws Exception { - if (project == null) { - throw new Exception("No project set."); + public void doExecute() + throws Exception + { + if ( project == null ) + { + throw new Exception( "No project set." ); } - if (project.getIssueTrackingUrl() == null) { - throw new Exception("No issue tracking url set."); + if ( project.getIssueTrackingUrl() == null ) + { + throw new Exception( "No issue tracking url set." ); } - - try { + try + { HttpClient cl = new HttpClient(); HttpState state = new HttpState(); HostConfiguration hc = new HostConfiguration(); - cl.setHostConfiguration(hc); - cl.setState(state); - determineProxy(cl); + cl.setHostConfiguration( hc ); + cl.setState( state ); + + determineProxy( cl ); + // get the Jira URL and project id String url = project.getIssueTrackingUrl(); + // chop off the parameter part - int pos = url.indexOf("?"); + int pos = url.indexOf( "?" ); + // and get the id while we're at it String id = null; - if (pos >= 0) { + + if ( pos >= 0 ) + { // url - id = url.substring(url.lastIndexOf("=") + 1); + id = url.substring( url.lastIndexOf( "=" ) + 1 ); } - String jiraUrl = url.substring(0, url.lastIndexOf("/")); - if (jiraUrl.endsWith("secure") || jiraUrl.endsWith("browse")) { - jiraUrl = jiraUrl.substring(0, jiraUrl.lastIndexOf("/")); + String jiraUrl = url.substring( 0, url.lastIndexOf( "/" ) ); + + if ( jiraUrl.endsWith( "secure" ) || jiraUrl.endsWith( "browse" ) ) + { + jiraUrl = jiraUrl.substring( 0, jiraUrl.lastIndexOf( "/" ) ); } - log.info("Jira lives at: " + jiraUrl); - doAuthentication(cl, jiraUrl); + + log.info( "Jira lives at: " + jiraUrl ); + doAuthentication( cl, jiraUrl ); + String projectPage = ""; - if ( id == null || roadmap) + if ( ( id == null ) || roadmap ) { - GetMethod gm = new GetMethod( url + "?report=com.atlassian.jira.plugin.system.project:roadmap-panel" ); + GetMethod gm = + new GetMethod( url + + "?report=com.atlassian.jira.plugin.system.project:roadmap-panel" ); + try { - cl.executeMethod(gm); - log.info("Succesfully reached JIRA."); + cl.executeMethod( gm ); + log.info( "Succesfully reached JIRA." ); } - catch (Exception e) + catch ( Exception e ) { - if (log.isDebugEnabled()) + if ( log.isDebugEnabled() ) { - log.error("Unable to reach JIRA project page:", e); + log.error( "Unable to reach JIRA project page:", e ); } else { - log.error("Unable to reach JIRA project page. Cause is: " + e.getLocalizedMessage()); + log.error( + "Unable to reach JIRA project page. Cause is: " + + e.getLocalizedMessage() ); } } + projectPage = gm.getResponseBodyAsString(); } if ( id == null ) { - log.info("Jira URL " + url + " doesn't include a pid, trying to get it"); - int pidIndex = projectPage.indexOf("pid="); // @todo, a safer way to get the PID + log.info( "Jira URL " + url + + " doesn't include a pid, trying to get it" ); + + int pidIndex = projectPage.indexOf( "pid=" ); // @todo, a safer way to get the PID - if (pidIndex == -1) + if ( pidIndex == -1 ) { // fail - log.error("Unable to get JIRA pid using url " + project.getIssueTrackingUrl()); + log.error( "Unable to get JIRA pid using url " + + project.getIssueTrackingUrl() ); + return; } NumberFormat nf = NumberFormat.getInstance(); - Number pidNumber = nf.parse(projectPage, new ParsePosition(pidIndex + 4)); - id = Integer.toString(pidNumber.intValue()); + Number pidNumber = + nf.parse( projectPage, new ParsePosition( pidIndex + 4 ) ); + + id = Integer.toString( pidNumber.intValue() ); } // create the URL for getting the proper iussues from JIRA - String fullURL = jiraUrl + "/secure/IssueNavigator.jspa?view=rss&pid=" + id; + String fullURL = + jiraUrl + "/secure/IssueNavigator.jspa?view=rss&pid=" + id; + fullURL += createFilter(); - fullURL += "&tempMax=" + nbEntriesMax + "&reset=true&decorator=none"; + fullURL += ( "&tempMax=" + nbEntriesMax + + "&reset=true&decorator=none" ); // execute the GET - download(cl, fullURL, output); + download( cl, fullURL, output ); if ( roadmap ) { - int fixforIndex = projectPage.indexOf("fixfor="); // @todo, a safer way to get the PID + int fixforIndex = projectPage.indexOf( "fixfor=" ); // @todo, a safer way to get the PID - if (fixforIndex == -1) + if ( fixforIndex == -1 ) { // fail - log.error("Unable to get JIRA roadmap using url " + project.getIssueTrackingUrl()); + log.error( "Unable to get JIRA roadmap using url " + + project.getIssueTrackingUrl() ); + return; } NumberFormat nf = NumberFormat.getInstance(); - Number fixforNumber = nf.parse(projectPage, new ParsePosition(fixforIndex + 7)); - String fixfor = Integer.toString(fixforNumber.intValue()); - setFilter("&&fixfor=" + fixfor + "&sorter/field=status&sorter/order=ASC"); - fullURL = jiraUrl + "/secure/IssueNavigator.jspa?view=rss&pid=" + id; + Number fixforNumber = + nf.parse( projectPage, new ParsePosition( fixforIndex + 7 ) ); + String fixfor = Integer.toString( fixforNumber.intValue() ); + + setFilter( "&&fixfor=" + fixfor + + "&sorter/field=status&sorter/order=ASC" ); + fullURL = + jiraUrl + "/secure/IssueNavigator.jspa?view=rss&pid=" + id; fullURL += createFilter(); - fullURL += "&tempMax=" + nbEntriesMax + "&reset=true&decorator=none"; + fullURL += ( "&tempMax=" + nbEntriesMax + + "&reset=true&decorator=none" ); + String outFile = output.getAbsolutePath(); int endIndex = outFile.lastIndexOf( '/' ); - outFile = outFile.substring( 0, endIndex ) + "/jira-roadmap.xml"; + + outFile = + outFile.substring( 0, endIndex ) + "/jira-roadmap.xml"; + // execute the GET - download(cl, fullURL, new File( outFile ) ); + download( cl, fullURL, new File( outFile ) ); } - - } catch (Exception e) { - log.error("Error accessing " + project.getIssueTrackingUrl(), e); + } + catch ( Exception e ) + { + log.error( "Error accessing " + project.getIssueTrackingUrl(), e ); } } /** * 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) { + 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); + 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); + + 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()); + 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 } } @@ -350,209 +445,270 @@ /** * Setup proxy access if we have to. - * + * * @param client * the HttpClient */ - private void determineProxy(HttpClient client) { + 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."); + if ( project == null ) + { + log.error( "No project set. No proxy info available." ); + return; } + MavenJellyContext ctx = project.getContext(); - if (ctx == null) { - log.error("Maven project has no context. No proxy info available."); + + if ( ctx == null ) + { + log.error( "Maven project has no context. No proxy info available." ); + return; } + String proxyHost = ctx.getProxyHost(); - if (proxyHost != null) { + if ( proxyHost != null ) + { String proxyPort = ctx.getProxyPort(); - client.getHostConfiguration().setProxy(proxyHost, Integer.parseInt(proxyPort)); - log.info("Using proxy: " + proxyHost + " at port " + proxyPort); + + 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); + + if ( proxyUser != null ) + { + log.info( "Using proxy user: " + proxyUser ); + String proxyPass = ctx.getProxyPassword(); - client.getState().setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUser, proxyPass)); + + client.getState().setProxyCredentials( null, null, + new UsernamePasswordCredentials( proxyUser, proxyPass ) ); } } } /** * Downloads the given link using the configured HttpClient, possibly following redirects. - * + * * @param cl * the HttpClient * @param link * the JiraUrl + * @param outFile + * the output file * @return */ - private void download(final HttpClient cl, final String link, final File outFile) { - try { - GetMethod gm = new GetMethod(link); - log.info("Downloading " + link); - gm.setFollowRedirects(true); - cl.executeMethod(gm); + private void download( final HttpClient cl, final String link, + final File outFile ) + { + 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(outFile)); - pw.print(strGetResponseBody); + PrintWriter pw = new PrintWriter( new FileWriter( outFile ) ); + + pw.print( strGetResponseBody ); pw.close(); + StatusLine sl = gm.getStatusLine(); - if (sl == null) { - log.info("Unknown error validating link : " + link); + + 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 { + 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, outFile); + + log.debug( "Following redirect to " + newLink ); + download( cl, newLink, outFile ); } } - if (gm.getStatusCode() != HttpStatus.SC_OK) { - log.warn("Received: [" + gm.getStatusCode() + "]"); + 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 ); } - } 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()); + 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 ( 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() ); } } } /** * Set the output file for the log. - * + * * @param thisOutput * the output file */ - public void setOutput(final File thisOutput) { + public void setOutput( final File thisOutput ) + { this.output = thisOutput; } /** * Sets the project. - * + * * @param thisProject * The project to set */ - public void setProject(final Object thisProject) { + 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) { + 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) { + 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) { + 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) { + 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) { + 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) { + 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) { + 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) { + 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) { + 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) { + public void setComponent( final String theseComponents ) + { this.component = theseComponents; } @@ -560,8 +716,8 @@ * Sets the roadmap property. * @param thisRoadmap The roadmap. */ - public void setRoadmap(final boolean thisRoadmap) { + public void setRoadmap( final boolean thisRoadmap ) + { this.roadmap = thisRoadmap; } - } Added: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html?rev=367739&view=auto ============================================================================== --- maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html (added) +++ maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html Tue Jan 10 11:12:59 2006 @@ -0,0 +1,11 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> + <head> + <title>org.apache.maven.jira</title> + </head> + <body> + <p> + Contains utility classes to perform operations on JIRA installations. + </p> + </body> +</html> Propchange: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/package.html ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"