From 9ad7ce1756ee6f5b3045b7f1aa0361d43ac6b80d Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Mon, 14 Mar 2022 23:08:26 +0100 Subject: Cleanup --- .../controller/persistence/TenantSerializer.java | 49 ++++++++-------------- .../restapi/application/ApplicationApiHandler.java | 19 ++++----- .../persistence/TenantSerializerTest.java | 8 ++-- 3 files changed, 28 insertions(+), 48 deletions(-) (limited to 'controller-server') 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 bdc79bb28cf..cf68ca034a7 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 @@ -9,24 +9,24 @@ import com.yahoo.slime.ArrayTraverser; import com.yahoo.slime.Cursor; import com.yahoo.slime.Inspector; import com.yahoo.slime.Slime; -import com.yahoo.vespa.athenz.api.AthenzDomain; import com.yahoo.slime.SlimeUtils; +import com.yahoo.vespa.athenz.api.AthenzDomain; import com.yahoo.vespa.hosted.controller.api.identifiers.Property; import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId; +import com.yahoo.vespa.hosted.controller.api.integration.organization.BillingInfo; +import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact; import com.yahoo.vespa.hosted.controller.api.integration.secrets.TenantSecretStore; import com.yahoo.vespa.hosted.controller.api.role.SimplePrincipal; -import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact; -import com.yahoo.vespa.hosted.controller.api.integration.organization.BillingInfo; import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant; import com.yahoo.vespa.hosted.controller.tenant.CloudTenant; import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant; import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo; import com.yahoo.vespa.hosted.controller.tenant.Tenant; import com.yahoo.vespa.hosted.controller.tenant.TenantAddress; +import com.yahoo.vespa.hosted.controller.tenant.TenantBilling; import com.yahoo.vespa.hosted.controller.tenant.TenantContact; import com.yahoo.vespa.hosted.controller.tenant.TenantContacts; import com.yahoo.vespa.hosted.controller.tenant.TenantInfo; -import com.yahoo.vespa.hosted.controller.tenant.TenantBilling; import java.net.URI; import java.security.Principal; @@ -229,19 +229,14 @@ public class TenantSerializer { } private List secretStoresFromSlime(Inspector secretStoresObject) { - List secretStores = new ArrayList<>(); - if (!secretStoresObject.valid()) return secretStores; - - secretStoresObject.traverse((ArrayTraverser) (index, inspector) -> { - secretStores.add( - new TenantSecretStore( - inspector.field(nameField).asString(), - inspector.field(awsIdField).asString(), - inspector.field(roleField).asString() - ) - ); - }); - return secretStores; + if (!secretStoresObject.valid()) return List.of(); + + return SlimeUtils.entriesStream(secretStoresObject) + .map(inspector -> new TenantSecretStore( + inspector.field(nameField).asString(), + inspector.field(awsIdField).asString(), + inspector.field(roleField).asString())) + .collect(Collectors.toUnmodifiableList()); } private LastLoginInfo lastLoginInfoFromSlime(Inspector lastLoginInfoObject) { @@ -300,24 +295,14 @@ public class TenantSerializer { private void toSlime(TenantContacts contacts, Cursor parent) { if (contacts.isEmpty()) return; var cursor = parent.setArray("contacts"); - contacts.all().forEach(contact -> { - writeContact(contact, cursor.addObject()); - }); + contacts.all().forEach(contact -> writeContact(contact, cursor.addObject())); } private TenantContacts tenantContactsFrom(Inspector object) { - var contacts = new ArrayList>(); - - object.traverse((ArrayTraverser)(index, inspector) -> { - TenantContacts.Contact contact = readContact(inspector); - contacts.add(contact); - }); - - if (contacts.isEmpty()) { - return TenantContacts.empty(); - } else { - return TenantContacts.from(contacts); - } + List> contacts = SlimeUtils.entriesStream(object) + .map(this::readContact) + .collect(Collectors.toUnmodifiableList()); + return new TenantContacts(contacts); } private Optional contactFrom(Inspector object) { diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index 7ed81975978..c55be24fcb4 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -32,7 +32,6 @@ import com.yahoo.restapi.Path; import com.yahoo.restapi.ResourceResponse; import com.yahoo.restapi.SlimeJsonResponse; import com.yahoo.security.KeyUtils; -import com.yahoo.slime.ArrayTraverser; import com.yahoo.slime.Cursor; import com.yahoo.slime.Inspector; import com.yahoo.slime.JsonParseException; @@ -99,7 +98,6 @@ import com.yahoo.vespa.hosted.controller.maintenance.ResourceMeterMaintainer; import com.yahoo.vespa.hosted.controller.notification.Notification; import com.yahoo.vespa.hosted.controller.notification.NotificationSource; import com.yahoo.vespa.hosted.controller.persistence.SupportAccessSerializer; -import com.yahoo.vespa.hosted.controller.persistence.TenantSerializer; import com.yahoo.vespa.hosted.controller.routing.RoutingStatus; import com.yahoo.vespa.hosted.controller.routing.context.DeploymentRoutingContext; import com.yahoo.vespa.hosted.controller.routing.rotation.RotationId; @@ -114,10 +112,10 @@ import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant; import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo; import com.yahoo.vespa.hosted.controller.tenant.Tenant; import com.yahoo.vespa.hosted.controller.tenant.TenantAddress; +import com.yahoo.vespa.hosted.controller.tenant.TenantBilling; import com.yahoo.vespa.hosted.controller.tenant.TenantContact; import com.yahoo.vespa.hosted.controller.tenant.TenantContacts; import com.yahoo.vespa.hosted.controller.tenant.TenantInfo; -import com.yahoo.vespa.hosted.controller.tenant.TenantBilling; import com.yahoo.vespa.hosted.controller.versions.VersionStatus; import com.yahoo.vespa.hosted.controller.versions.VespaVersion; import com.yahoo.vespa.serviceview.bindings.ApplicationView; @@ -140,7 +138,6 @@ import java.time.DayOfWeek; import java.time.Duration; import java.time.Instant; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; import java.util.Collection; @@ -681,17 +678,15 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { private TenantContacts updateTenantInfoContacts(Inspector insp, TenantContacts oldContacts) { if (!insp.valid()) return oldContacts; - var contacts = new ArrayList>(); - - insp.traverse((ArrayTraverser)(index, inspector) -> { - var email = new TenantContacts.EmailContact(inspector.field("email").asString()); - var audiences = SlimeUtils.entriesStream(inspector.field("audiences")) + List> contacts = SlimeUtils.entriesStream(insp).map(inspector -> { + TenantContacts.EmailContact email = new TenantContacts.EmailContact(inspector.field("email").asString()); + List audiences = SlimeUtils.entriesStream(inspector.field("audiences")) .map(audience -> fromAudience(audience.asString())) .collect(Collectors.toUnmodifiableList()); - contacts.add( new TenantContacts.Contact<>(TenantContacts.Type.EMAIL, email, audiences )); - }); + return new TenantContacts.Contact<>(TenantContacts.Type.EMAIL, audiences, email); + }).collect(toUnmodifiableList()); - return TenantContacts.from(contacts); + return new TenantContacts(contacts); } private HttpResponse notifications(HttpRequest request, Optional tenant, boolean includeTenantFieldInResponse) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java index 6503005962b..d7a3be82968 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java @@ -17,10 +17,10 @@ import com.yahoo.vespa.hosted.controller.tenant.CloudTenant; import com.yahoo.vespa.hosted.controller.tenant.DeletedTenant; import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo; import com.yahoo.vespa.hosted.controller.tenant.TenantAddress; +import com.yahoo.vespa.hosted.controller.tenant.TenantBilling; import com.yahoo.vespa.hosted.controller.tenant.TenantContact; import com.yahoo.vespa.hosted.controller.tenant.TenantContacts; import com.yahoo.vespa.hosted.controller.tenant.TenantInfo; -import com.yahoo.vespa.hosted.controller.tenant.TenantBilling; import org.junit.Test; import java.net.URI; @@ -174,9 +174,9 @@ public class TenantSerializerTest { @Test public void cloud_tenant_with_tenant_info_contacts() { TenantInfo tenantInfo = TenantInfo.empty() - .withContacts(TenantContacts.empty() - .add(new TenantContacts.Contact<>(TenantContacts.Type.EMAIL, List.of(TenantContacts.Audience.TENANT), new TenantContacts.EmailContact("email1@email.com"))) - .add(new TenantContacts.Contact<>(TenantContacts.Type.EMAIL, List.of(TenantContacts.Audience.TENANT, TenantContacts.Audience.NOTIFICATIONS), new TenantContacts.EmailContact("email2@email.com")))); + .withContacts(new TenantContacts(List.of( + new TenantContacts.Contact<>(TenantContacts.Type.EMAIL, List.of(TenantContacts.Audience.TENANT), new TenantContacts.EmailContact("email1@email.com")), + new TenantContacts.Contact<>(TenantContacts.Type.EMAIL, List.of(TenantContacts.Audience.TENANT, TenantContacts.Audience.NOTIFICATIONS), new TenantContacts.EmailContact("email2@email.com"))))); Slime slime = new Slime(); Cursor parentCursor = slime.setObject(); serializer.toSlime(tenantInfo, parentCursor); -- cgit v1.2.3