Trait

org.scalarules.dsl.core.projections

ProjectableListFields

Related Doc: package projections

Permalink

trait ProjectableListFields[C] extends AnyRef

Domain objects in the DSL can allow access to their fields through projections. This trait signals the support of field projections and provides a convenience method to create these projections. This trait is meant for Lists of objects to project a List of traits back.

Here's an example:

case class Person(val name: String)

class PersonFieldListProjections(personFact: ListFact[Person]) extends ProjectableListFields[Person] {
  def outerFact: Fact[Person] = personFact

  def name: DslEvaluation[String] = projectField( _.name )
}

object PersonImplicits {
  implicit def toPersonFieldListProjections(personFact: ListFact[Person]): PersonListFieldProjections = new PersonListFieldProjections(personFact)
}

With these elements in place, you can import the PersonImplicits._ where you want to use it in your DSL and you can refer to the name field of any Fact of type Person.

C

type from which the field(s) can be projected.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ProjectableListFields
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def outerFact: ListFact[C]

    Permalink

    Any implementing class should provide the fact from which to project the fields through this method.

    Any implementing class should provide the fact from which to project the fields through this method.

    returns

    the ListFact of type C from which fields will be projected.

    Attributes
    protected

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. def projectField[F](f: (C) ⇒ F): ProjectedDslEvaluation[C, F]

    Permalink

    Provides a utility method to construct the DslEvaluation which entails the field projection.

    Provides a utility method to construct the DslEvaluation which entails the field projection.

    F

    type of the projected field, which will also be the type of the resulting DslEvaluation.

    f

    the function which projects the Fact's value to the corresponding field of type F.

    returns

    a DslEvaluation of the same type as the projected field. This evaluation will at runtime provide the value of the projected field of the accompanying Fact.

    Attributes
    protected
  16. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  17. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped