forked from jenkinsci/jira-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJiraMailAddressResolver.java
More file actions
74 lines (63 loc) · 2.41 KB
/
JiraMailAddressResolver.java
File metadata and controls
74 lines (63 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package hudson.plugins.jira;
import hudson.Extension;
import hudson.model.Job;
import hudson.model.User;
import hudson.tasks.MailAddressResolver;
import java.util.List;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.kohsuke.stapler.Stapler;
import org.kohsuke.stapler.StaplerRequest2;
/**
* Resolve user email by searching his userId as username in Jira.
*
* @author Honza Brázdil jbrazdil@redhat.com
*/
@Extension
public class JiraMailAddressResolver extends MailAddressResolver {
private static final Logger LOGGER = Logger.getLogger(JiraMailAddressResolver.class.getName());
/**
* Boolean to disable the Jira mail address resolver.
* <p>
* To disable set the System property "-Dhudson.plugins.jira.JiraMailAddressResolver.disabled=true"
*/
public static boolean disabled = Boolean.getBoolean(JiraMailAddressResolver.class.getName() + ".disabled");
@Override
public String findMailAddressFor(User u) {
if (disabled) {
return null;
}
String username = u.getId();
Job<?, ?> job = null;
StaplerRequest2 req = Stapler.getCurrentRequest2();
if (req != null) {
job = req.findAncestorObject(Job.class);
}
List<JiraSite> sites = job == null ? JiraGlobalConfiguration.get().getSites() : JiraSite.getJiraSites(job);
for (JiraSite site : sites) {
JiraSession session = site.getSession(job);
if (session == null) {
continue;
}
com.atlassian.jira.rest.client.api.domain.User user = session.service.getUser(username);
if (user != null) {
String email = user.getEmailAddress();
if (email != null) {
email = unmaskEmail(email);
return email;
}
}
}
return null;
}
private static final String PRE = "[( \\[<_{\"=]+";
private static final String POST = "[) \\]>_}\"=]+";
private static final Pattern AT = Pattern.compile(PRE + "[aA][tT]" + POST);
private static final Pattern DOT = Pattern.compile(PRE + "[dD][oO0][tT]" + POST);
// unmask emails like "john dot doe at example dot com" to john.doe@example.com
static String unmaskEmail(String email) {
email = AT.matcher(email).replaceAll("@");
email = DOT.matcher(email).replaceAll(".");
return email;
}
}