diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-03-21 16:29:44 +0100 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-03-21 16:29:44 +0100 |
commit | 6d8b531082e0b23649ce7efe7b092c1b37733c5f (patch) | |
tree | 0376e6a2c560cf06dff378a5d16af013fe37b4fe /controller-server/src | |
parent | 904015c7fe410cacd9657ea962fb2087800b1bdc (diff) |
Switch over instanceof
Diffstat (limited to 'controller-server/src')
3 files changed, 33 insertions, 26 deletions
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 ac2e78ba755..a0d807ac333 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 @@ -1081,11 +1081,26 @@ public class ApplicationApiHandler extends LoggingRequestHandler { private void toSlime(Cursor object, Tenant tenant, HttpRequest request) { object.setString("tenant", tenant.name().value()); object.setString("type", tentantType(tenant)); - if (tenant instanceof AthenzTenant) { - AthenzTenant athenzTenant = (AthenzTenant) tenant; - object.setString("athensDomain", athenzTenant.domain().getName()); - object.setString("property", athenzTenant.property().id()); - athenzTenant.propertyId().ifPresent(id -> object.setString("propertyId", id.toString())); + switch (tenant.type()) { + case athenz: + AthenzTenant athenzTenant = (AthenzTenant) tenant; + object.setString("athensDomain", athenzTenant.domain().getName()); + object.setString("property", athenzTenant.property().id()); + athenzTenant.propertyId().ifPresent(id -> object.setString("propertyId", id.toString())); + athenzTenant.contact().ifPresent(c -> { + object.setString("propertyUrl", c.propertyUrl().toString()); + object.setString("contactsUrl", c.url().toString()); + object.setString("issueCreationUrl", c.issueTrackerUrl().toString()); + Cursor contactsArray = object.setArray("contacts"); + c.persons().forEach(persons -> { + Cursor personArray = contactsArray.addArray(); + persons.forEach(personArray::addString); + }); + }); + break; + case user: break; + case cloud: break; + default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.type() + "'."); } Cursor applicationArray = object.setArray("applications"); for (Application application : controller.applications().asList(tenant.name())) { @@ -1096,19 +1111,6 @@ public class ApplicationApiHandler extends LoggingRequestHandler { toSlime(application, applicationArray.addObject(), request); } } - if (tenant instanceof AthenzTenant) { - AthenzTenant athenzTenant = (AthenzTenant) tenant; - athenzTenant.contact().ifPresent(c -> { - object.setString("propertyUrl", c.propertyUrl().toString()); - object.setString("contactsUrl", c.url().toString()); - object.setString("issueCreationUrl", c.issueTrackerUrl().toString()); - Cursor contactsArray = object.setArray("contacts"); - c.persons().forEach(persons -> { - Cursor personArray = contactsArray.addArray(); - persons.forEach(personArray::addString); - }); - }); - } } // A tenant has different content when in a list ... antipattern, but not solvable before application/v5 @@ -1116,10 +1118,15 @@ public class ApplicationApiHandler extends LoggingRequestHandler { object.setString("tenant", tenant.name().value()); Cursor metaData = object.setObject("metaData"); metaData.setString("type", tentantType(tenant)); - if (tenant instanceof AthenzTenant) { - AthenzTenant athenzTenant = (AthenzTenant) tenant; - metaData.setString("athensDomain", athenzTenant.domain().getName()); - metaData.setString("property", athenzTenant.property().id()); + switch (tenant.type()) { + case athenz: + AthenzTenant athenzTenant = (AthenzTenant) tenant; + metaData.setString("athensDomain", athenzTenant.domain().getName()); + metaData.setString("property", athenzTenant.property().id()); + break; + case user: break; + case cloud: break; + default: throw new IllegalArgumentException("Unexpected tenant type '" + tenant.type() + "'."); } object.setString("url", withPath("/application/v4/tenant/" + tenant.name().value(), requestURI).toString()); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant-with-contact-info.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant-with-contact-info.json index 0ba0a01c5d0..01677f05eeb 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant-with-contact-info.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant-with-contact-info.json @@ -4,7 +4,6 @@ "athensDomain": "domain2", "property": "property2", "propertyId": "1234", - "applications": [], "propertyUrl": "www.properties.tld/1234", "contactsUrl": "www.contacts.tld/1234", "issueCreationUrl": "www.issues.tld/1234", @@ -15,5 +14,6 @@ [ "bob" ] - ] + ], + "applications": [] } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant2.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant2.json index 6e66202b70d..2d6cc7b7208 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant2.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/tenant2.json @@ -4,7 +4,6 @@ "athensDomain": "domain2", "property": "property2", "propertyId": "1234", - "applications": [], "propertyUrl": "www.properties.tld/1234", "contactsUrl": "www.contacts.tld/1234", "issueCreationUrl": "www.issues.tld/1234", @@ -15,5 +14,6 @@ [ "bob" ] - ] + ], + "applications": [] }
\ No newline at end of file |