Package hudson.tasks

Class MailAddressResolver

java.lang.Object
hudson.tasks.MailAddressResolver
All Implemented Interfaces:
ExtensionPoint

public abstract class MailAddressResolver extends Object implements ExtensionPoint
Infers e-mail addresses for the user when none is specified.

This is an extension point of Jenkins. Plugins that contribute a new implementation of this class should put Extension on your implementation class, like this:

 @Extension
 class MyMailAddressResolver extends MailAddressResolver {
   ...
 }
 

Techniques

User identity in Jenkins is global, and not specific to a particular job. As a result, mail address resolution only receives User, which by itself doesn't really have that much information in it.

So the common technique for a mail address resolution is to define your own UserProperty types and add it to User objects where more context is available. For example, an SCM implementation can have a lot more information about a particular user during a check out, so that would be a good place to capture information as UserProperty, which then later used by a MailAddressResolver.

Performance considerations

Mail address resolution is a potentially time consuming process. It can considerably slow down operations relaying on mail address resolution, especially on Jenkins instances having registered several resolvers. Searching through all projects is generally a bad idea. See JENKINS-16437 for more details.

Since:
1.192
Author:
Kohsuke Kawaguchi
  • Field Details

  • Constructor Details

    • MailAddressResolver

      public MailAddressResolver()
  • Method Details

    • findMailAddressFor

      public abstract String findMailAddressFor(User u)
      Infers e-mail address of the given user.

      This method is called when a User without explicitly configured e-mail address is used, as an attempt to infer e-mail address.

      The normal strategy is to look at the projects that the user is participating, then use the repository information to infer the e-mail address.

      When multiple resolvers are installed, they are consulted in order and the search will be over when an address is inferred by someone.

      Since MailAddressResolver is singleton, this method can be invoked concurrently from multiple threads.

      Parameters:
      u - a given user to resolve address for
      Returns:
      null if the inference failed.
    • resolve

      public static String resolve(User u)
      Try to resolve email address using resolvers. If a user specifies a Mail UserProperty, then it will be used with the highest priority.
      Parameters:
      u - user to resolve address for
      Returns:
      User address or null if resolution failed
    • resolveFast

      public static String resolveFast(User u)
      Try to resolve user email address fast enough to be used from UI

      This implementation does not trigger MailAddressResolver extension point.

      Parameters:
      u - A user, for whom the email should be resolved
      Returns:
      User address or null if resolution failed
    • all

      public static ExtensionList<MailAddressResolver> all()
      Returns:
      all the registered MailAddressResolver descriptors.