From 42d35559c8da40b4cd90367917e8a9f4ad86009b Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 2 May 2023 11:44:25 +0200 Subject: [PATCH] Prepare for more types of validation events --- crates/fj-kernel/src/services/mod.rs | 2 +- crates/fj-kernel/src/services/validation.rs | 23 ++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/fj-kernel/src/services/mod.rs b/crates/fj-kernel/src/services/mod.rs index 547a80137..79482136d 100644 --- a/crates/fj-kernel/src/services/mod.rs +++ b/crates/fj-kernel/src/services/mod.rs @@ -11,7 +11,7 @@ use crate::objects::{Object, Objects, WithHandle}; pub use self::{ objects::{InsertObject, Operation}, service::{Service, State}, - validation::{Validation, ValidationCommand, ValidationFailed}, + validation::{Validation, ValidationCommand, ValidationEvent}, }; /// The kernel services diff --git a/crates/fj-kernel/src/services/validation.rs b/crates/fj-kernel/src/services/validation.rs index ba5881af3..326ff8738 100644 --- a/crates/fj-kernel/src/services/validation.rs +++ b/crates/fj-kernel/src/services/validation.rs @@ -36,7 +36,7 @@ impl Drop for Validation { impl State for Validation { type Command = ValidationCommand; - type Event = ValidationFailed; + type Event = ValidationEvent; fn decide(&self, command: Self::Command, events: &mut Vec) { let ValidationCommand::ValidateObject { object } = command; @@ -45,7 +45,7 @@ impl State for Validation { object.validate(&mut errors); for err in errors { - events.push(ValidationFailed { + events.push(ValidationEvent::ValidationFailed { object: object.clone(), err, }); @@ -53,7 +53,11 @@ impl State for Validation { } fn evolve(&mut self, event: &Self::Event) { - self.errors.insert(event.object.id(), event.err.clone()); + match event { + ValidationEvent::ValidationFailed { object, err } => { + self.errors.insert(object.id(), err.clone()); + } + } } } @@ -68,10 +72,13 @@ pub enum ValidationCommand { /// The event produced by the validation service #[derive(Clone)] -pub struct ValidationFailed { - /// The object for which validation failed - pub object: Object, +pub enum ValidationEvent { + /// Validation of an object failed + ValidationFailed { + /// The object for which validation failed + object: Object, - /// The validation error - pub err: ValidationError, + /// The validation error + err: ValidationError, + }, }