ClassSchema

open class ClassSchema<T : Any> : ParentSchema<T> (source)

Implementation of a schema representing values of a given class T with KClass. Use the ClassSchema.invoke function to create an instance of this class.

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Map of children schemas.

Link copied to clipboard

Function used to construct values of type T.

Link copied to clipboard
open override val initialValue: T

Initial value for a value of this schema.

Link copied to clipboard

KClass of the represented class.

Link copied to clipboard
open override val supportsConcurrentSets: Boolean = true

Whether this schema supports setting values concurrently.

Link copied to clipboard
open override val typeInfo: TypeInfo

Information about the type of value represented by this schema.

Link copied to clipboard
open override val validations: List<Validation<T>>

List of validations used to validate this schema.

Functions

Link copied to clipboard
open override fun assignableTo(type: KType): Boolean

Whether a value of this schema can be assigned to a variable with the provided type.

Link copied to clipboard
open suspend override fun change(path: AbsolutePath, value: T, intoValue: Any?, eventsBus: SchemaEventsBus, setValue: suspend (value: T) -> Unit)

Changes value, a value of this schema stored by the form manager into the given value intoValue, sending events about the change through eventsBus. The provided path represents the path of the value being changed within the form manager. The value must be set via setValue, even if it hasn't changed; for parent schemas, it should typically be the same instance of value, but mutated to resemble intoValue.

Link copied to clipboard
open override fun children(path: AbsolutePath, schemaPath: AbsolutePath, value: T, fragment: AbsolutePathFragment): Flow<ValueInfo<Any?>>

Returns a flow of information on the values matching fragment that are children of value, a value of this schema.

Link copied to clipboard
open override fun childrenSchemas(path: AbsolutePath, queriedPath: AbsolutePath, fragment: AbsolutePathFragment): Sequence<SchemaInfo<*>>

Returns a sequence of information on the schemas matching fragment that are children of this schema. The provided path and queried path respectively represent the path of this schema and the path of the queried value within the form manager.

Link copied to clipboard

Returns a "container" used to hold the states of the children of a value of this schema.

Link copied to clipboard
open suspend override fun clone(value: T): T

Returns a clone (deep copy) of value.

Link copied to clipboard
fun Schema<*>.comparePaths(path1: String, path2: String): Int
fun Schema<*>.comparePaths(path1: Path, path2: Path): Int

Compares two paths of a schema according to the order in which children are defined in said schema. Returns a value > 0 if path1 is greater than path2, < 0 if path2 if greater than path1, or 0 otherwise.

Link copied to clipboard
open suspend override fun destroy(path: AbsolutePath, value: T, eventsBus: SchemaEventsBus, removeValue: suspend (value: T) -> Unit)

Destroys and removes value, a value of this schema stored by the form manager, sending events about the destruction through eventsBus. The provided path represents the path of the value being destroyed within the form manager. removeValue should always be called to remove the value.

Link copied to clipboard
open suspend override fun init(path: AbsolutePath, fromValue: Any?, eventsBus: SchemaEventsBus, setValue: suspend (value: T) -> Unit)

Initialises and sets a value of this schema from a given value fromValue to be stored by the form manager, sending events about the initialisation of the value through eventsBus. The provided path represents the path of the value being initialised within the form manager. The value must be set via setValue, which should always be called.

Link copied to clipboard
open suspend override fun isValidChildFragment(value: T, fragment: AbsolutePathFragment): Boolean

Returns whether fragment is a valid identifier for a child of value: a value of this schema.

Link copied to clipboard

Returns whether fragment is a valid identifier for a child schema of this schema.

Link copied to clipboard
open suspend override fun isValidSetFragment(value: T, fragment: AbsolutePathFragment): Boolean

Returns whether fragment can be used to set a child of value, a value of this schema.

Link copied to clipboard
open suspend override fun set(path: AbsolutePath, value: T, fragment: AbsolutePathFragment, childValue: Any?, eventsBus: SchemaEventsBus)

Sets the child(ren) of value, a value of this schema, identified by fragment with childValue, sending events about all modifications through eventsBus. The provided path represents the path of value within the form manager.