diff options
3 files changed, 76 insertions, 0 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mail.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mail.java new file mode 100644 index 00000000000..a5944c0c448 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mail.java @@ -0,0 +1,27 @@ +package com.yahoo.vespa.hosted.controller.api.integration.organization; + +import com.google.common.collect.ImmutableList; + +import java.util.List; +import java.util.Objects; + +/** + * A message with a sender and a set of recipients. + * + * @author jonmv + */ +public class Mail { + + private final List<String> recipients; + private final String message; + + public Mail(List<String> recipients, String message) { + recipients.forEach(Objects::requireNonNull); + this.recipients = ImmutableList.copyOf(recipients); + this.message = Objects.requireNonNull(message); + } + + public List<String> recipients() { return recipients; } + public String message() { return message; } + +} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mailer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mailer.java new file mode 100644 index 00000000000..a915f22c20c --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mailer.java @@ -0,0 +1,19 @@ +package com.yahoo.vespa.hosted.controller.api.integration.organization; + +/** + * Allows sending e-mail from a particular user@domain. + * + * @author jonmv + */ +public interface Mailer { + + /** Sends the given mail as the configured user@domain. */ + void send(Mail mail); + + /** Returns the user this is configured to use. */ + String user(); + + /** Returns the domain this is configured to use. */ + String domain(); + +} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockMailer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockMailer.java new file mode 100644 index 00000000000..9373d97a11c --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockMailer.java @@ -0,0 +1,30 @@ +package com.yahoo.vespa.hosted.controller.api.integration.organization; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MockMailer implements Mailer { + + public final Map<String, List<Mail>> mails = new HashMap<>(); + + @Override + public void send(Mail mail) { + for (String recipient : mail.recipients()) { + mails.putIfAbsent(recipient, new ArrayList<>()); + mails.get(recipient).add(mail); + } + } + + @Override + public String user() { + return "user"; + } + + @Override + public String domain() { + return "domain"; + } + +} |