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]

Reply via email to