diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-08-09 10:06:10 +0200 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-08-09 10:06:10 +0200 |
commit | 18e63233ad9d56bec03aea248a35009f6b25c875 (patch) | |
tree | 5708d2e3193423322d338ce0a095df1d6e77407a /controller-api | |
parent | 7e4c6503f9e78c55b1f1e187514795557bc55728 (diff) |
Reduce Optional usage
Diffstat (limited to 'controller-api')
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java index b1cbf55a31c..38ee28a5b4d 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java @@ -6,6 +6,7 @@ import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; import com.yahoo.vespa.hosted.controller.api.integration.zone.ZoneId; +import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; @@ -42,9 +43,12 @@ public enum JobType { public String jobName() { return jobName; } - /** Returns the zone for this job in the given system, or empty if this job does not have a zone */ - public Optional<ZoneId> zone(SystemName system) { - return Optional.ofNullable(zones.get(system)); + /** Returns the zone for this job in the given system, or throws if this job does not have a zone */ + public ZoneId zone(SystemName system) { + if ( ! zones.containsKey(system)) + throw new AssertionError(this + " does not have any zones in " + system + "."); + + return zones.get(system); } /** Returns whether this is a production job */ @@ -75,17 +79,18 @@ public enum JobType { } /** Returns the job type for the given zone */ - public static Optional<JobType> from(SystemName system, ZoneId zone) { - return Stream.of(values()) - .filter(job -> job.zone(system).filter(zone::equals).isPresent()) - .findAny(); + public static JobType from(SystemName system, ZoneId zone) { + for (JobType job : values()) + if (zone.equals(job.zones.get(system))) + return job; + throw new IllegalArgumentException("No job is known for " + zone + "."); } /** Returns the job job type for the given environment and region or null if none */ - public static Optional<JobType> from(SystemName system, Environment environment, RegionName region) { + public static JobType from(SystemName system, Environment environment, RegionName region) { switch (environment) { - case test: return Optional.of(systemTest); - case staging: return Optional.of(stagingTest); + case test: return systemTest; + case staging: return stagingTest; } return from(system, ZoneId.from(environment, region)); } |