lambda - Java 8 Optional how to deal with too many orElses -
let's take @ example without lambdas:
credentials credentials = credentialservice.get(id); if (credentials != null && credentials.isactive()) { user user = userservice.get(credentials.getuserid()); if (user != null) return status.ok(user); } return status.bad(); as can see, status.ok() returned if user isn't null. otherwise, status.bad() returned. lambdas (service's methods returns optional<t>):
return credentialservice.get(id) .filter(credentials::isactive) .map(credentials -> userservice.get(credentials.getuserid()) .map(status::ok) .orelse(status.bad()) ).orelse(status.bad()); now have return status.bad() 2 times (in real code, 4-5). way return status.bad() once?
i can guess userservice::get return optional in case better use flatmap:
credentialservice.get(id) .filter(credentials::isactive) .flatmap(credentials -> userservice.get(credentials.getuserid()) .map(status::ok) .orelse(status.bad())
Comments
Post a Comment