summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeandro Alves <leandroalves@yahooinc.com>2022-03-14 11:35:36 +0100
committerLeandro Alves <leandroalves@yahooinc.com>2022-03-14 11:35:36 +0100
commit46ea4d71ee335057e331ca22cbadc3fd027d00f4 (patch)
treef020f82ee69af5505fad650514faa6ebd8649f2b
parentb2b0d390c21fd588909e38473fc260be97c8b8ef (diff)
remove name
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantContacts.java23
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java8
2 files changed, 10 insertions, 21 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantContacts.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantContacts.java
index bb8ce709444..25555e698a2 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantContacts.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/TenantContacts.java
@@ -3,9 +3,7 @@ package com.yahoo.vespa.hosted.controller.tenant;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
/**
@@ -16,10 +14,10 @@ import java.util.Optional;
* @author ogronnesby
*/
public class TenantContacts {
- private final Map<String, Contact<?>> contacts;
+ private final List<Contact<?>> contacts;
public TenantContacts() {
- this.contacts = new LinkedHashMap<>();
+ this.contacts = new ArrayList<>();
}
public static TenantContacts empty() {
@@ -33,15 +31,12 @@ public class TenantContacts {
}
public <T> void add(Contact<T> contact) {
- contacts.put(contact.name(), contact);
- }
-
- public Optional<Contact<?>> get(String name) {
- return Optional.ofNullable(contacts.get(name));
+ contacts.removeIf(c -> c.data().equals(contact.data()));
+ contacts.add(contact);
}
public List<Contact<?>> all() {
- return new ArrayList<>(contacts.values());
+ return List.copyOf(contacts);
}
public boolean isEmpty() {
@@ -49,19 +44,16 @@ public class TenantContacts {
}
public static class Contact<T> {
- private final String name;
private final Type type;
private final Audience audience;
protected final T data;
- public Contact(String name, Type type, Audience audience, T data) {
- this.name = name;
+ public Contact(Type type, Audience audience, T data) {
this.type = type;
this.audience = audience;
this.data = data;
}
- public String name() { return name; }
public Type type() { return type; }
public Audience audience() { return audience; }
public T data() { return data; }
@@ -69,8 +61,7 @@ public class TenantContacts {
@Override
public String toString() {
return "Contact{" +
- "name='" + name + '\'' +
- ", type=" + type +
+ "type=" + type +
", audience=" + audience +
", data=" + data +
'}';
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
index fdf04fc4c54..749048036a1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java
@@ -298,9 +298,9 @@ public class TenantSerializer {
private void toSlime(TenantContacts contacts, Cursor parent) {
if (contacts.isEmpty()) return;
- var cursor = parent.setObject("contacts");
+ var cursor = parent.setArray("contacts");
contacts.all().forEach(contact -> {
- writeContact(contact, cursor.setObject(contact.name()));
+ writeContact(contact, cursor.addObject());
});
}
@@ -363,7 +363,6 @@ public class TenantSerializer {
}
private void writeContact(TenantContacts.Contact<?> contact, Cursor cursor) {
- cursor.setString("name", contact.name());
cursor.setString("type", contact.type().value());
cursor.setString("audience", contact.audience().value());
var data = cursor.setObject("data");
@@ -378,7 +377,6 @@ public class TenantSerializer {
}
private TenantContacts.Contact<?> readContact(Inspector inspector) {
- var name = inspector.field("name").asString();
var type = TenantContacts.Type.from(inspector.field("type").asString())
.orElseThrow(() -> new RuntimeException("Unknown type: " + inspector.field("type").asString()));
var audience = TenantContacts.Audience.from(inspector.field("audience").asString())
@@ -386,7 +384,7 @@ public class TenantSerializer {
switch (type) {
case EMAIL:
var email = new TenantContacts.EmailContact(inspector.field("data").field("email").asString());
- return new TenantContacts.Contact<>(name, type, audience, email);
+ return new TenantContacts.Contact<>(type, audience, email);
default:
throw new IllegalArgumentException("Serialization for contact type not implemented: " + type);
}