You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by bi...@apache.org on 2011/06/04 20:13:09 UTC
svn commit: r1131456 - in /maven/plugins/trunk/maven-changes-plugin/src:
main/java/org/apache/maven/plugin/announcement/
main/java/org/apache/maven/plugin/changes/
test/java/org/apache/maven/plugin/changes/
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
Re: svn commit: r1131456 - in /maven/plugins/trunk/maven-changes-plugin/src:
main/java/org/apache/maven/plugin/announcement/ main/java/org/apache/maven/plugin/changes/
test/java/org/apache/maven/plugin/changes/
Posted by Benson Margulies <bi...@gmail.com>.
oops. Well, sicne I see no reason not to keep it, I'll fix the since.
On Sat, Jun 4, 2011 at 5:22 PM, Dennis Lundberg <de...@apache.org> wrote:
> 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, bimargulies@apache.org 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: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r1131456 - in /maven/plugins/trunk/maven-changes-plugin/src:
main/java/org/apache/maven/plugin/announcement/ main/java/org/apache/maven/plugin/changes/
test/java/org/apache/maven/plugin/changes/
Posted by Dennis Lundberg <de...@apache.org>.
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, bimargulies@apache.org 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: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org