Note that if we decide to keep this patch, the @since tags needs to be updated to 2.6.
On 2011-06-04 20:13, [email protected] wrote: > Author: bimargulies > Date: Sat Jun 4 18:13:08 2011 > New Revision: 1131456 > > URL: http://svn.apache.org/viewvc?rev=1131456&view=rev > Log: > [MCHANGES-245]: customization of issue types (from Alan Parkinson) > > Added: > > maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java > (with props) > Modified: > > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java > > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java > > Modified: > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java > URL: > http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java?rev=1131456&r1=1131455&r2=1131456&view=diff > ============================================================================== > --- > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java > (original) > +++ > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/announcement/AnnouncementMojo.java > Sat Jun 4 18:13:08 2011 > @@ -140,7 +140,20 @@ public class AnnouncementMojo > * @since 2.4 > */ > private List<String> issueManagementSystems; > - > + > + /** > + * Maps issues types to action types for grouping issues in > announcements. > + * If issue types are not defined for a action type then the default > issue type > + * will be applied. > + * <p> > + * Valid action types: <code>add</code>, <code>fix</code> and > <code>update</code>. > + * </p> > + * > + * @parameter > + * @since 2.5 > + */ > + private Map<String, String> issueTypes; > + > /** > * Directory where the template file will be generated. > * > @@ -720,7 +733,8 @@ public class AnnouncementMojo > } > else > { > - return IssueAdapter.getReleases( issues ); > + IssueAdapter adapter = new IssueAdapter(issueTypes); > + return adapter.getReleases( issues ); > } > } > > @@ -800,6 +814,14 @@ public class AnnouncementMojo > { > this.introduction = introduction; > } > + > + public void setIssueTypes(Map<String, String> issueTypes) { > + this.issueTypes = issueTypes; > + } > + > + public Map<String, String> getIssueTypes() { > + return issueTypes; > + } > > public File getOutputDirectory() > { > > Modified: > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java > URL: > http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java?rev=1131456&r1=1131455&r2=1131456&view=diff > ============================================================================== > --- > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java > (original) > +++ > maven/plugins/trunk/maven-changes-plugin/src/main/java/org/apache/maven/plugin/changes/IssueAdapter.java > Sat Jun 4 18:13:08 2011 > @@ -25,7 +25,6 @@ import org.apache.maven.plugins.changes. > > import java.util.ArrayList; > import java.util.HashMap; > -import java.util.Iterator; > import java.util.List; > import java.util.Map; > > @@ -39,6 +38,43 @@ import java.util.Map; > */ > public class IssueAdapter > { > + private static final String[] DEFAULT_ADD_TYPE = { "New Feature" }; > + > + private static final String[] DEFAULT_FIX_TYPE = { "Bug" }; > + > + private static final String[] DEFAULT_UPDATE_TYPE = { "Improvement" }; > + > + private Map<String, String> issueMap = new HashMap<String, String>(); > + > + public IssueAdapter() { > + this( null ); > + } > + > + public IssueAdapter( Map<String, String> issueTypes ) > + { > + addIssueTypesToMap( "add", issueTypes, DEFAULT_ADD_TYPE ); > + addIssueTypesToMap( "fix", issueTypes, DEFAULT_FIX_TYPE ); > + addIssueTypesToMap( "update", issueTypes, DEFAULT_UPDATE_TYPE ); > + } > + > + private void addIssueTypesToMap( String actionKey, Map<String, String> > issueTypes, String[] defaultTypes ) > + { > + String[] types; > + if ( issueTypes != null && issueTypes.containsKey( actionKey ) ) > + { > + types = issueTypes.get( actionKey ).split( "," ); > + } > + else > + { > + types = defaultTypes; > + } > + > + for ( String type : types ) > + { > + issueMap.put( type.trim(), actionKey ); > + } > + } > + > /** > * Adapt a <code>List</code> of <code>Issue</code>s to a > * <code>List</code> of <code>Release</code>s. > @@ -46,7 +82,7 @@ public class IssueAdapter > * @param issues The issues > * @return A list of releases > */ > - public static List<Release> getReleases( List<Issue> issues ) > + public List<Release> getReleases( List<Issue> issues ) > { > // A Map of releases keyed by fixVersion > Map<String,Release> releasesMap = new HashMap<String,Release>(); > @@ -91,26 +127,17 @@ public class IssueAdapter > * @param issue The issue to extract the information from > * @return An <code>Action</code> > */ > - public static Action createAction( Issue issue ) > + public Action createAction( Issue issue ) > { > Action action = new Action(); > > // @todo We need to add something like > issue.getPresentationIdentifier() to be able to support other IMSes beside > JIRA > action.setIssue( issue.getKey() ); > > - // @todo To support types for different IMSes we need some way to > map these values to the ones used in a particular IMS > String type = ""; > - if ( issue.getType().equals( "Bug" ) ) > - { > - type = "fix"; > - } > - else if ( issue.getType().equals( "New Feature" ) ) > - { > - type = "add"; > - } > - else if ( issue.getType().equals( "Improvement" ) ) > + if ( issueMap.containsKey( issue.getType() ) ) > { > - type = "update"; > + type = issueMap.get( issue.getType() ); > } > action.setType( type ); > > > Added: > maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java > URL: > http://svn.apache.org/viewvc/maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java?rev=1131456&view=auto > ============================================================================== > --- > maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java > (added) > +++ > maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java > Sat Jun 4 18:13:08 2011 > @@ -0,0 +1,122 @@ > +package org.apache.maven.plugin.changes; > + > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +import java.util.HashMap; > +import java.util.Map; > + > +import org.apache.maven.plugin.issues.Issue; > +import org.apache.maven.plugins.changes.model.Action; > + > +import junit.framework.TestCase; > + > +/** > + * @author Alan Parkinson > + * @since 2.5 > + */ > +public class IssueAdapterTest > + extends TestCase > +{ > + > + public void testDefaultIssueTypeMapping() > + { > + IssueAdapter adapter = new IssueAdapter( null ); > + > + Issue issue = createIssue( "TST-1", "New Feature" ); > + Action action = adapter.createAction( issue ); > + assertEquals( "add", action.getType() ); > + > + issue = createIssue( "TST-2", "Bug" ); > + action = adapter.createAction( issue ); > + assertEquals( "fix", action.getType() ); > + > + issue = createIssue( "TST-3", "Improvement" ); > + action = adapter.createAction( issue ); > + assertEquals( "update", action.getType() ); > + > + issue = createIssue( "TST-4", "Unknown Type" ); > + action = adapter.createAction( issue ); > + assertEquals( "", action.getType() ); > + } > + > + public void testCustomIssueTypeMappingOveridesDefaultMapping() > + { > + Map<String, String> typeMapping = new HashMap<String, String>(); > + typeMapping.put( "add", "" ); > + typeMapping.put( "fix", "" ); > + typeMapping.put( "update", "" ); > + IssueAdapter adapter = new IssueAdapter( typeMapping ); > + > + Issue issue = createIssue( "TST-1", "New Feature" ); > + Action action = adapter.createAction( issue ); > + assertEquals( "", action.getType() ); > + > + issue = createIssue( "TST-2", "Bug" ); > + action = adapter.createAction( issue ); > + assertEquals( "", action.getType() ); > + > + issue = createIssue( "TST-3", "Improvement" ); > + action = adapter.createAction( issue ); > + assertEquals( "", action.getType() ); > + > + issue = createIssue( "TST-4", "Unknown Type" ); > + action = adapter.createAction( issue ); > + assertEquals( "", action.getType() ); > + } > + > + public void testCustomIssueTypeMapping() > + { > + Map<String, String> typeMapping = new HashMap<String, String>(); > + typeMapping.put( "add", "Story,Epic" ); > + typeMapping.put( "fix", "Defect, Error" ); > + IssueAdapter adapter = new IssueAdapter( typeMapping ); > + > + Issue issue = createIssue( "TST-1", "Story" ); > + Action action = adapter.createAction( issue ); > + assertEquals( "add", action.getType() ); > + > + issue = createIssue( "TST-2", "Epic" ); > + action = adapter.createAction( issue ); > + assertEquals( "add", action.getType() ); > + > + issue = createIssue( "TST-3", "Error" ); > + action = adapter.createAction( issue ); > + assertEquals( "fix", action.getType() ); > + > + issue = createIssue( "TST-4", "Defect" ); > + action = adapter.createAction( issue ); > + assertEquals( "fix", action.getType() ); > + > + // Test the default mapping for "update" hasn't been overridden > + issue = createIssue( "TST-5", "Improvement" ); > + action = adapter.createAction( issue ); > + assertEquals( "update", action.getType() ); > + } > + > + private Issue createIssue( String key, String type ) > + { > + Issue issue = new Issue(); > + issue.setKey( key ); > + issue.setType( type ); > + issue.setAssignee( "A User" ); > + issue.setSummary( "The title of this issue" ); > + return issue; > + } > +} > > Propchange: > maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: > maven/plugins/trunk/maven-changes-plugin/src/test/java/org/apache/maven/plugin/changes/IssueAdapterTest.java > ------------------------------------------------------------------------------ > svn:mime-type = text/plain > > > -- Dennis Lundberg --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
