Packages

  • package root
    Definition Classes
    root
  • package com
    Definition Classes
    root
  • package wix
    Definition Classes
    com
  • package accord
    Definition Classes
    wix
  • package combinators

    Aggregates all implemented combinators for use by the DSL.

    Aggregates all implemented combinators for use by the DSL. Can, though not intended to, be used directly by end-user code.

    Definition Classes
    accord
  • AnInstanceOf
  • And
  • Blank
  • BooleanCombinators
  • CollectionCombinators
  • Conditional
  • Distinct
  • Empty
  • EndsWith
  • EqualTo
  • EquivalentTo
  • Fail
  • GeneralPurposeCombinators
  • GreaterThan
  • GreaterThanOrEqual
  • In
  • InRange
  • InRangeExclusive
  • InRangeInclusive
  • IsFalse
  • IsNotNull
  • IsNull
  • IsTrue
  • LesserThan
  • LesserThanOrEqual
  • MatchesRegex
  • NilValidator
  • NotAnInstanceOf
  • NotBlank
  • NotEmpty
  • NotEqualTo
  • Or
  • OrderingCombinators
  • StartsWith
  • StringCombinators
  • Valid
  • package dsl

    Provides a DSL for defining validation rules.

    Provides a DSL for defining validation rules.

    Overview

    Accord provides a convenient DSL for defining validation rules. To define a validator over some type T, import this package and invoke validator[T]. You can then use the provided sample object to define various rules:

    scala> case class Person( name: String, age: Int )
    defined class Person
    
    scala> import com.wix.accord.dsl._    // Import the validator DSL
    import com.wix.accord.dsl._
    
    scala> implicit val personValidator = validator[ Person ] { p =>
         |   // Validation rules:
         |   p.name is notEmpty
         |   p.age should be >= 18
         | }
    personValidator: com.wix.accord.transform.ValidationTransform.TransformedValidator[Person] = <function1>

    Accord adds an implicit logical and relation between the rules, so all rules must apply in order for the validation to be successful. You can specify as many rules as you like.

    Descriptions

    Each validation rule has an associated description (accessible via com.wix.accord.Violation.description). This description is automatically generated by Accord:

    scala> import com.wix.accord._
    import com.wix.accord._
    
    scala> validate( Person( "", 15 ) )
    res1: com.wix.accord.Result = Failure(Set(RuleViolation(,must not be empty,Some(name)), RuleViolation(15,got 15, expected 18 or more,Some(age))))

    You can also explicitly provide a description with the "as" modifier:

    scala> implicit val personValidator = validator[ Person ] { p =>
         |   p.name as "Full name" is notEmpty
         |   p.age as "Age" should be >= 18
         | }
    personValidator: com.wix.accord.transform.ValidationTransform.TransformedValidator[Person] = <function1>
    
    scala> validate( Person( "", 15 ) )
    res2: com.wix.accord.Result = Failure(Set(RuleViolation(,must not be empty,Some(Full name)), RuleViolation(15,got 15, expected 18 or more,Some(Age))))

    Combinators

    Accord offers a built-in library of building blocks (called "combinators") that can be composed into more complex validation rules:

    General-purpose
    // Equality
    sample.field is equalTo( "value" )
    sample.field is notEqualTo( "value" )
    
    // Nullability (only applies to reference types)
    sample.field is aNull
    sample.field is notNull
    
    // Delegation
    sample.field is valid    					// Implicitly, or
    sample.field is valid( myOwnValidator )		// Explicitly
    Primitives
    // Booleans
    sample.booleanField is true
    sample.booleanField is false
    
    // Strings
    sample.stringField should startWith( "prefix" )
    sample.stringField should endWith( "suffix" )
    sample.stringField should matchRegex( "b[aeiou]t" )       // Matches "bat" and "dingbat"
    sample.stringField should matchRegexFully( "b[aeiou]t" )  // Matches "bat" but not "dingbat"
    sample.stringField should matchRegex( pattern )           // You can also use java.util.regex.Pattern
    sample.stringField should matchRegex( regex )             // ... or scala.util.matching.Regex
    sample.stringField is blank                               // Matches empty or whitespace-only strings
    sample.stringField is notBlank
    
    // You can use "must" instead of "should":
    sample.stringField must startWith( "prefix" )
    
    // Strings are also "collection-like", so all collection combinators apply (see below)
    sample.stringField is notEmpty
    
    // Numerics (applies to any type with an instance of scala.math.Ordering in implicit search scope):
    sample.intField should be < 5
    sample.intField should be > 5
    sample.intField should be <= 5
    sample.intField should be >= 5
    sample.intField should be == 5
    sample.intField is between( 0, 10 )
    sample.intField is between( 0, 10 ).exclusive
    sample.intField is within( 0 to 10 )              // Inclusive
    sample.intField is within( 0 until 10 )           // Exclusive
    Collections
    // Emptiness
    sample.seq is empty
    sample.seq is notEmpty
    
    // This applies to any type that has a boolean "isEmpty" property, such as string)
    // The "each" modifier applies the validation to all members of a collection:
    sample.seq.each should be >= 10
    sample.option.each should be >= 10                // Allows None or Some(15)
    
    // Size (applies to any type with an integer "size" property)
    // See "Numerics" above for additional operations
    sample.seq has size >= 8
    sample.entities have size >= 8		// You can use "have" in place of "has"
    Boolean Expressions
    // Logical AND (not strictly required, since you can just split into separate rules)
    ( person.name is notEmpty ) and ( person.age should be >= 18 )
    
    // Logical OR
    ( person.email is notEmpty ) or ( person.phoneNumber is notEmpty )
    
    // You can also nest rules:
    ( fromJava.tags is aNull ) or (
      ( fromJava.tags is notEmpty ) and
      ( fromJava.tags.each should matchRegexFully( "\\S+" ) )
    )
    Definition Classes
    accord
  • package transform
    Definition Classes
    accord
p

com.wix.accord

combinators

package combinators

Aggregates all implemented combinators for use by the DSL. Can, though not intended to, be used directly by end-user code.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. combinators
  2. BooleanCombinators
  3. OrderingCombinators
  4. StringCombinators
  5. CollectionCombinators
  6. GeneralPurposeCombinators
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. trait BooleanCombinators extends AnyRef

    Simple boolean combinators.

  2. class IsFalse extends BaseValidator[Boolean]

    A boolean validator that matches only on false.

    A boolean validator that matches only on false.

    Definition Classes
    BooleanCombinators
  3. class IsTrue extends BaseValidator[Boolean]

    A boolean validator that matches only on true.

    A boolean validator that matches only on true.

    Definition Classes
    BooleanCombinators
  4. trait CollectionCombinators extends AnyRef

    Combinators that operate on collections and collection-like structures.

  5. class Empty[T <: AnyRef] extends NullSafeValidator[T]

    A validator that operates on objects that can be empty, and succeeds only if the provided instance is empty.

    A validator that operates on objects that can be empty, and succeeds only if the provided instance is empty.

    T

    A type that implements isEmpty: Boolean (see com.wix.accord.combinators.HasEmpty).

    Definition Classes
    CollectionCombinators
    See also

    com.wix.accord.combinators.NotEmpty

  6. case class In[T](set: Set[T], prefix: String) extends BaseValidator[T] with Product with Serializable

    A validator that succeeds only if the object exists in the target collection.

    A validator that succeeds only if the object exists in the target collection.

    Definition Classes
    CollectionCombinators
  7. class NotEmpty[T <: AnyRef] extends NullSafeValidator[T]

    A validator that operates on objects that can be empty, and succeeds only if the provided instance is not empty.

    A validator that operates on objects that can be empty, and succeeds only if the provided instance is not empty.

    T

    A type that implements isEmpty: Boolean (see com.wix.accord.combinators.HasEmpty).

    Definition Classes
    CollectionCombinators
    See also

    com.wix.accord.combinators.Empty

  8. trait GeneralPurposeCombinators extends AnyRef

    Non type-specific combinators.

  9. class AnInstanceOf[T <: AnyRef] extends NullSafeValidator[AnyRef]

    A validator that succeeds only if the validated object is an instance of the specified type.

    A validator that succeeds only if the validated object is an instance of the specified type. Respects nulls.

    T

    The desired type for objects under validation.

    Definition Classes
    GeneralPurposeCombinators
  10. class And[T] extends Validator[T]

    A combinator that takes a chain of predicates and implements logical AND between them.

    A combinator that takes a chain of predicates and implements logical AND between them.

    T

    The type on which this validator operates.

    Definition Classes
    GeneralPurposeCombinators
  11. class Conditional[T] extends Validator[T]

    A validator that branches at runtime based on the value of the object under validation.

    A validator that branches at runtime based on the value of the object under validation. Supports an optional fallback validator.

    T

    The object type this validator operates on.

    Definition Classes
    GeneralPurposeCombinators
  12. class EqualTo[T] extends Validator[T]

    A validator that succeeds only if the validated object is equal to the specified value.

    A validator that succeeds only if the validated object is equal to the specified value. Respects nulls and delegates equality checks to java.lang.Object.equals.

    Definition Classes
    GeneralPurposeCombinators
  13. class Fail[T] extends Validator[T]

    A validator that always fails with a specific violation.

    A validator that always fails with a specific violation.

    T

    The type on which this validator operates.

    Definition Classes
    GeneralPurposeCombinators
  14. class IsNotNull extends BaseValidator[AnyRef]

    A validator that succeeds only if the provided object is not null.

    A validator that succeeds only if the provided object is not null.

    Definition Classes
    GeneralPurposeCombinators
  15. class IsNull extends BaseValidator[AnyRef]

    A validator that succeeds only if the provided object is null.

    A validator that succeeds only if the provided object is null.

    Definition Classes
    GeneralPurposeCombinators
  16. class NilValidator[T] extends Validator[T]

    A validator that always succeeds.

    A validator that always succeeds.

    T

    The type on which this validator operates.

    Definition Classes
    GeneralPurposeCombinators
  17. class NotAnInstanceOf[T <: AnyRef] extends NullSafeValidator[AnyRef]

    A validator that fails only if the validated object is an instance of the specified type.

    A validator that fails only if the validated object is an instance of the specified type. Respects nulls.

    T

    The undesirable type for objects under validation.

    Definition Classes
    GeneralPurposeCombinators
  18. class NotEqualTo[T] extends Validator[T]

    A validator that succeeds only if the validated object is not equal to the specified value.

    A validator that succeeds only if the validated object is not equal to the specified value. Respects nulls and delegates equality checks to java.lang.Object.equals.

    Definition Classes
    GeneralPurposeCombinators
  19. class Or[T] extends Validator[T]

    A combinator that takes a chain of predicates and implements logical OR between them.

    A combinator that takes a chain of predicates and implements logical OR between them. When all predicates fail, a com.wix.accord.GroupViolation is produced; the predicates comprise the group's children.

    T

    The type on which this validator operates.

    Definition Classes
    GeneralPurposeCombinators
  20. class Valid[T] extends Validator[T]

    A validator which merely delegates to another, implicitly available validator.

    A validator which merely delegates to another, implicitly available validator. This is necessary for the description generation to work correctly, e.g. in the case where:

    case class Person( firstName: String, lastName: String ) case class Classroom( teacher: Person, students: Seq[ Person ] )

    implicit val personValidator = validator[ Person ] { p => p.firstName is notEmpty p.lastName is notEmpty }

    implicit val classValidator = validator[ Classroom ] { c => c.teacher is valid c.students.each is valid c.students have size > 0 }

    c.teacher actually delegates to the personValidator, which means a correct error message would be a com.wix.accord.GroupViolation aggregating the actual rule violations.

    T

    The object type this validator operates on. An implicit com.wix.accord.Validator over type T must be in scope.

    Definition Classes
    GeneralPurposeCombinators
  21. type HasEmpty = AnyRef { def isEmpty: Boolean }

    A structural type representing any object that can be empty.

    A structural type representing any object that can be empty.

    Definition Classes
    CollectionCombinators
  22. trait OrderingCombinators extends AnyRef

    Provides combinators over objects implementing scala.math.Ordering.

    Provides combinators over objects implementing scala.math.Ordering.

    Implementation note: All methods here should only require scala.math.PartialOrdering, but then the default implicits are defined in the scala.math.Ordering companion and would therefore not be imported by default at the call site.

  23. case class EquivalentTo[T](other: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with Product with Serializable

    A validator that succeeds only for value equivalent (as determined by scala.math.Ordering.equiv) to the specified bound.

    A validator that succeeds only for value equivalent (as determined by scala.math.Ordering.equiv) to the specified bound.

    T

    The object type this validator operates on.

    other

    The fixed value against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 10, expected 5".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  24. case class GreaterThan[T](bound: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with Product with Serializable

    A validator that succeeds only for values greater than the specified bound.

    A validator that succeeds only for values greater than the specified bound.

    T

    The object type this validator operates on.

    bound

    The bound against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 5, expected more than 10".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  25. case class GreaterThanOrEqual[T](bound: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with Product with Serializable

    A validator that succeeds only for values greater than, or equal to, the specified bound.

    A validator that succeeds only for values greater than, or equal to, the specified bound.

    T

    The object type this validator operates on.

    bound

    The bound against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 5, expected 10 or more".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  26. sealed trait InRange[T] extends Validator[T]

    A base trait for a validator that succeeds only for values between the specified bounds, and may be inclusive or exclusive.

    A base trait for a validator that succeeds only for values between the specified bounds, and may be inclusive or exclusive.

    T

    The object type this validator operates on.

    Definition Classes
    OrderingCombinators
  27. case class InRangeExclusive[T](lowerBound: T, upperBound: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with InRange[T] with Product with Serializable

    A validator that succeeds only for values between the specified bounds (exclusive of the upper bound).

    A validator that succeeds only for values between the specified bounds (exclusive of the upper bound). The com.wix.accord.combinators.OrderingCombinators.InRange.inclusive method can be used to derive a validator that includes the upper bound.

    T

    The object type this validator operates on.

    lowerBound

    The lower bound against which values are validated.

    upperBound

    The lower bound against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 10, expected between 5 and 7 (exclusively)".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  28. case class InRangeInclusive[T](lowerBound: T, upperBound: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with InRange[T] with Product with Serializable

    A validator that succeeds only for values between the specified bounds (both bounds are inclusive).

    A validator that succeeds only for values between the specified bounds (both bounds are inclusive). The com.wix.accord.combinators.OrderingCombinators.InRange.exclusive method can be used to derive a validator that excludes the upper bound.

    T

    The object type this validator operates on.

    lowerBound

    The lower bound against which values are validated.

    upperBound

    The lower bound against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 10, expected between 5 and 7".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  29. case class LesserThan[T](bound: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with Product with Serializable

    A validator that succeeds only for values lesser than the specified bound.

    A validator that succeeds only for values lesser than the specified bound.

    T

    The object type this validator operates on.

    bound

    The bound against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 10, expected less than 10".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  30. case class LesserThanOrEqual[T](bound: T, prefix: String)(implicit ordering: Ordering[T], nullability: Nullability[T]) extends MaybeNullSafeValidator[T] with Product with Serializable

    A validator that succeeds only for values less than, or equal to, the specified bound.

    A validator that succeeds only for values less than, or equal to, the specified bound.

    T

    The object type this validator operates on.

    bound

    The bound against which values are validated.

    prefix

    A prefix for violation messages; for example, specifying "got" will result in a constraint violation like "got 10, expected 5 or less".

    ordering

    Evidence that T is ordered (i.e. a scala.math.Ordering of T is available).

    Definition Classes
    OrderingCombinators
  31. trait StringCombinators extends AnyRef

    Combinators that operate specifically on strings.

  32. class Blank extends NullSafeValidator[String]

    A validator that succeeds only if the provided string is blank (i.e.

    A validator that succeeds only if the provided string is blank (i.e. empty or whitespace-only). Note that java.lang.String.trim is used to eliminate whitespace.

    Definition Classes
    StringCombinators
  33. class EndsWith extends NullSafeValidator[String]

    A validator that succeeds only if the provided string starts with the specified suffix.

    A validator that succeeds only if the provided string starts with the specified suffix.

    Definition Classes
    StringCombinators
  34. class MatchesRegex extends NullSafeValidator[String]

    A validator that succeeds only if the provided string matches the specified pattern.

    A validator that succeeds only if the provided string matches the specified pattern.

    Definition Classes
    StringCombinators
  35. class NotBlank extends NullSafeValidator[String]

    A validator that succeeds only if the provided string is not blank (i.e.

    A validator that succeeds only if the provided string is not blank (i.e. empty or whitespace-only). Note that java.lang.String.trim is used to eliminate whitespace.

    Definition Classes
    StringCombinators
  36. class StartsWith extends NullSafeValidator[String]

    A validator that succeeds only if the provided string starts with the specified prefix.

    A validator that succeeds only if the provided string starts with the specified prefix.

    Definition Classes
    StringCombinators

Value Members

  1. implicit def genericTraversableOnce2HasEmpty[T](gto: T)(implicit ev: (T) ⇒ GenTraversableOnce[_]): HasEmpty

    An implicit conversion to enable any collection-like object (e.g.

    An implicit conversion to enable any collection-like object (e.g. strings, options) to be handled by the com.wix.accord.combinators.CollectionCombinators.Empty and com.wix.accord.combinators.CollectionCombinators.NotEmpty combinators.

    java.lang.String does not directly implement isEmpty (in practice it is implemented in scala.collection.IndexedSeqOptimized, via an implicit conversion and an inheritance stack), and this is a case where the Scala compiler does not always infer structural types correctly. By requiring a view bound from T to scala.collection.GenTraversableOnce we can force any collection-like structure to conform to the structural type com.wix.accord.combinators.HasEmpty, and by requiring a view bound from T to com.wix.accord.combinators.HasEmpty at the call site (e.g. com.wix.accord.dsl.empty) we additionally support any class that directly conforms to the structural type as well.

    T

    The type that conforms, directly or implicitly, to com.wix.accord.combinators.HasEmpty.

    gto

    An object that is, or is implicitly convertible to, scala.collection.GenTraversableOnce.

    returns

    The specified object, strictly-typed as com.wix.accord.combinators.HasEmpty.

    Definition Classes
    CollectionCombinators
  2. object Distinct extends Validator[Traversable[_]]

    A validator that succeeds only if the provided collection has no duplicate elements.

    A validator that succeeds only if the provided collection has no duplicate elements.

    Definition Classes
    CollectionCombinators

Inherited from BooleanCombinators

Inherited from OrderingCombinators

Inherited from StringCombinators

Inherited from CollectionCombinators

Inherited from GeneralPurposeCombinators

Inherited from AnyRef

Inherited from Any

Ungrouped