aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-12-14 13:00:00 +0100
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-12-17 12:04:59 +0100
commit224f4138b76ebb4865378b31aa16e08f9e7e707e (patch)
treec407c6493f3584639f26a179527b571dc3f1356a
parent3ffc820c7abed8e7f0321623298f5b2d08cde09a (diff)
Add API
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mail.java27
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/Mailer.java19
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockMailer.java30
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";
+ }
+
+}