1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.maven.plugins.changes.issues;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugins.changes.IssueType;
26
27 /**
28 * Historically, this plugin started out working against an IMS-neutral XML file, and then added extensive support for
29 * JIRA with some small snippets of code for other issue management systems. This class is intended to start a cleaner
30 * modularity for support of multiple systems.<br>
31 * Initially, all it provides is a structure for mapping from per-IMS issue types to the three categories defined in
32 * {@link org.apache.maven.plugins.changes.IssueAdapter}. <br>
33 * Note that the map in here is <strong>not</strong> immutable. It contains the default configuration for an IMS. Users
34 * are expected to add entries to the map via configuration to reflect their customizations.
35 *
36 * @version $Id$
37 */
38 public abstract class AbstractIssueManagementSystem implements IssueManagementSystem {
39 protected Map<String, IssueType> issueTypeMap;
40
41 protected AbstractIssueManagementSystem() {
42 issueTypeMap = new HashMap<>();
43 }
44
45 /*
46 * (non-Javadoc)
47 * @see org.apache.maven.plugins.issues.IssueManagementSystem#getIssueTypeMap()
48 */
49 public Map<String, IssueType> getIssueTypeMap() {
50 return issueTypeMap;
51 }
52
53 /*
54 * (non-Javadoc)
55 * @see org.apache.maven.plugins.issues.IssueManagementSystem#getName()
56 */
57 public abstract String getName();
58
59 /*
60 * (non-Javadoc)
61 * @see org.apache.maven.plugins.issues.IssueManagementSystem#applyConfiguration(java.util.Map)
62 */
63 public void applyConfiguration(Map<String, String> issueTypes) throws MojoExecutionException {
64 for (Map.Entry<String, String> me : issueTypes.entrySet()) {
65 IssueType type = IssueType.lookupByKey(me.getKey());
66 if (type == null) {
67 throw new MojoExecutionException("Invalid issue action " + me.getKey());
68 }
69 String imsTypes = me.getValue();
70 String[] imsTypeArray = imsTypes.split(",");
71 for (String imsType : imsTypeArray) {
72 issueTypeMap.put(imsType, type);
73 }
74 }
75 }
76 }