trait
FutureSugar extends AnyRef
Type Members
-
implicit
class
Futureizer[T] extends AnyRef
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
Trait providing an implicit class that adds a
validating
method toFuture
, which takes one or more validation functions and returns either the sameFuture
if either theFuture
had already failed or its value passes all the functions, orValidationFailedException
containing an error message describing the first validation that failed.Here's an example validation method, which passes if the given
Int
is evenly divisible by 10 (i.e., the result will bePass
). If the value does not pass this test, the result is aFail
containing a helpful error message string.Validation will be attempted on a successful
Try
. If the validation succeeds, the resultingFuture
will be the same successfulFuture
with the same value. (A "validation" only transforms theFuture
if the validation fails, otherwise it is the sameFuture
. The only difference is its value has now been proven valid.) In the following example, a successfulFuture[Int]
with the value 100 passes the validation (which checks whether 100 is evenly divisible by 10), therefore the result of thevalidating
call is the same successfulFuture
with the same value.If validation fails, the successful
Future
will be transformed into a failed one, with aValidationFailedException
that contains the error message returned by the validation function. In the following example, 42 fails the validation because it is not evenly divisible by 10:If
validating
is called on a failedFuture
, it just returns the same failedFuture
:The
validating
method accepts one or more validation functions. If you pass more than one, they will be tried in order up until the first failure, whose error message will appear in theValidationFailedException
. In other words,validating
will short circuit at the first error and return that. It will not accumulate errors. For example, the following validation will short circuit after theisDivBy3
function fails: