A Validatable[A] extends ValidatableResult[A][String] and using it defaults the ValidationDsl to use a String return type.
A Validatable[A] extends ValidatableResult[A][String] and using it defaults the ValidationDsl to use a String return type. This can be changed by implementing ValidatableResult[A][B] directly where B is return type instead.
object TestValidation { case class Address(street: String, city: String, state: String, zipCode: String) implicit object AddressValidator extends Validatable[Address] { override def validate(value: Address): Validation = { (value.street.nonEmpty orElse "Street addr. is required") ++ (value.city.nonEmpty orElse "City is required") ++ (value.zipCode.matches("\\d{5}") orElse "Zip code must be 5 digits") ++ (value.state.matches("[A-Z]{2}") orElse "State abbr must be 2 letters") } } }
the class to validate
A generic interface that defines which class to validate and what type of validation to return.
A generic interface that defines which class to validate and what type of validation to return. Creating an implicit that extends this class creates a validator for that class
object TestValidation { case class Password(password: String) case class CustomError(errorCode: String, errorMessage: String) implicit object PasswordValidator extends ValidatableResult[Password, CustomError] { override def validate(value: Password): Validation = (value.nonEmpty orElse CustomError("password.empty", "Password cannot be empty")) } }
the class to validate
the type of ValidationResult to use with ValidationDsl
A ValidatableWith[A][B] extends ValidatableWithResult[A][B][String] and using it defaults the DSL to use a String return type.
A ValidatableWith[A][B] extends ValidatableWithResult[A][B][String] and using it defaults the DSL to use a String return type. This can be changed by implementing ValidatableWithResult[A][B] directly where B is return type instead.
object TestValidation { case class Contacts(facebook: Option[List[String]] = None, twitter: Option[List[String]] = None) case class ContactSettings(hasFacebookContacts: Option[Boolean] = Some(true), hasTwitterContacts: Option[Boolean] = Some(true)) implicit object ContactInfoValidator extends ValidatableWith[Contacts, ContactSettings] { override def validateWith(value: Contacts, contactSettings: ContactSettings): Validation = Validation.success } }
the class to validate
A generic interface that defines which class to use validateWith and what type of validation to return
A generic interface that defines which class to use validateWith and what type of validation to return
the class to validate
the class to pass into validateWith
the type of ValidationResult to use with ValidationDsl
Validation is the same as ValidationResult[String].
Validation is the same as ValidationResult[String]. Allows the default return type to be a list of strings
A case class that represents a validation failure of type T.
A case class that represents a validation failure of type T. Extends a ValidationResult[T] and implements errors with the list of errors passed in
A ValidationFailure[T] can be created by using the fail mathod in the Validation object
val failed: ValidationFailure[String] = Validation.fail("validation failed.")
the type of ValidationResult
A generic interface that holds a validation result of type T, interoperable with Seq[T]
A generic interface that holds a validation result of type T, interoperable with Seq[T]
the type of ValidationResult
A case class that represents a validation success of type T.
A case class that represents a validation success of type T. Extends a ValidationResult[T] and implements the errors function with an empty list
A ValidationSuccess[T] can be created by using the success method in the Validation object
val success: ValidationSuccess[Int] = Validation.success[Int]
the type of ValidationResult
Companion object containing factory methods to create a ValidationSuccess[T] or a ValidationFailure[T]
Companion object containing factory methods to create a ValidationSuccess[T] or a ValidationFailure[T]
val validationSuccess = Validation.success[Int] val validationFailure = Validation.fail("The validation failed.")
Importing ValidationSyntax extends validate and validateWith methods to a class A if an implicit ValidatableResult[A][_] or ValidatableWithResult[A][_][_] is defined for that class.
Importing ValidationSyntax extends validate and validateWith methods to a class A if an implicit ValidatableResult[A][_] or ValidatableWithResult[A][_][_] is defined for that class.
Import this object alongside the validator to add methods to a class
import test.example.Address object TestValidation { import test.example.ModelValidations.AddressValidator import com.github.vickumar1981.svalidate.ValidationSyntax._ def main(args: Array[String]): Unit = { val addr = Address("", "", "", "") val errors = addr.validate() // Calls AddressValidator.validate() // Depending on the validator, a class can have // .validate(), .validate(b: B), or both functions extended to it } }
Because this object contains implicits, it is suggested to limit the scope of the import.
Implicit conversion from Seq[T] to ValidationResult[T].
Implicit conversion from Seq[T] to ValidationResult[T]. Allows Seq[T] to be substituted for ValidationResult[T]
the type of ValidationResult
the input Seq
a ValidationFailure containing errors from the input Seq
Implicit conversion from ValidationResult[T] to Seq[T].
Implicit conversion from ValidationResult[T] to Seq[T]. Allows ValidationResult[T] to be substituted for Seq[T]
the type of ValidatableResult
the input ValidationResult[T]
a Seq[T] returned the errors of the input validation
Provides classes for doing simple validations in Java and Scala.
Overview
The validation wrapper is provided as a simple wrapper around a list
Results of a validation are stored in a com.github.vickumar1981.svalidate.ValidationResult A com.github.vickumar1981.svalidate.ValidationResult can be chained to make rules using the syntax provided from com.github.vickumar1981.svalidate.ValidationDsl.
A validator for a class is defined by implicitly implementing a com.github.vickumar1981.svalidate.ValidatableResult
Importing com.github.vickumar1981.svalidate.util.ValidationSyntax._ will add validate and validateWith methods to a class if a validator for that class is implicitly defined.
Analogous classes for Java can be found in the com.github.vickumar1981.svalidate.util package
| Class | Description | | :--- | :--- | | com.github.vickumar1981.svalidate.ValidationResult | Holds the return value from a validation | | com.github.vickumar1981.svalidate.ValidationDsl | Provides DSL syntax for validations | | com.github.vickumar1981.svalidate.ValidatableResult | Interface to implement for defining a validation |