diff options
author | Leandro Alves <leandroalves@yahooinc.com> | 2022-03-14 11:35:36 +0100 |
---|---|---|
committer | Leandro Alves <leandroalves@yahooinc.com> | 2022-03-14 11:35:36 +0100 |
commit | 46ea4d71ee335057e331ca22cbadc3fd027d00f4 (patch) | |
tree | f020f82ee69af5505fad650514faa6ebd8649f2b | |
parent | b2b0d390c21fd588909e38473fc260be97c8b8ef (diff) |
remove name
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); } |