All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gerrit.server.mail.send.MessageIdGenerator Maven / Gradle / Ivy

There is a newer version: 3.10.1
Show newest version
package com.google.gerrit.server.mail.send;

import com.google.auto.value.AutoValue;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.PatchSet;
import com.google.gerrit.entities.Project;
import com.google.gerrit.mail.MailMessage;
import com.google.gerrit.server.update.RepoView;
import java.time.Instant;

public interface MessageIdGenerator {
  /**
   * A unique id used which is a part of the header of all emails sent through by Gerrit. All of the
   * emails are sent via {@link OutgoingEmail#send()}.
   */
  @AutoValue
  abstract class MessageId {
    public abstract String id();

    public static MessageId create(String id) {
      return new AutoValue_MessageIdGenerator_MessageId(id);
    }
  }

  /**
   * Create a {@link MessageId} as a result of a change update.
   *
   * @return MessageId that depends on the patchset.
   */
  MessageId fromChangeUpdate(RepoView repoView, PatchSet.Id patchsetId);

  MessageId fromChangeUpdateAndReason(
      RepoView repoView, PatchSet.Id patchsetId, @Nullable String reason);

  MessageId fromChangeUpdate(Project.NameKey project, PatchSet.Id patchsetId);

  /**
   * Create a {@link MessageId} as a result of an account update
   *
   * @return {@link MessageId} that depends on the account id.
   */
  MessageId fromAccountUpdate(Account.Id accountId);

  /**
   * Create a {@link MessageId} from a mail message.
   *
   * @param mailMessage The message that was sent but was rejected.
   * @return MessageId that depends on the MailMessage that was rejected.
   */
  MessageId fromMailMessage(MailMessage mailMessage);

  /**
   * Create a {@link MessageId} from a reason, Account.Id, and timestamp.
   *
   * @param reason for performing this account update
   * @return MessageId that depends on the reason, accountId, and timestamp.
   */
  MessageId fromReasonAccountIdAndTimestamp(String reason, Account.Id accountId, Instant timestamp);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy